From 982bc8ebeb011244a900e26519743af1ecce9560 Mon Sep 17 00:00:00 2001 From: Leo Lara Date: Thu, 30 Apr 2026 11:42:33 +0700 Subject: [PATCH 1/5] =?UTF-8?q?chore(ported=5Fstatic):=20sync=20from=20for?= =?UTF-8?q?ks/amsterdam,=20preserving=20sn=C3=B8bal/4=20changes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sync 1467 ported_static test files from origin/forks/amsterdam (e7043ccce) to pick up upstream test maintenance, notably PR #2695 "use dynamic addresses in ported static tests". Files modified on snøbal/4 since the merge-base with forks/amsterdam (606) and files marked @manually-enhanced (14) are preserved. Also delete tests/ported_static/stTimeConsuming/test_sstore_combinations_initial.py, removed upstream in PR #2695 (deprecated by the *_paris.py splits that already live in the directory). --- .../test_add_non_const.py | 6 +- .../test_addmod_non_const.py | 6 +- .../test_and_non_const.py | 6 +- .../test_balance_non_const.py | 6 +- .../test_byte_non_const.py | 6 +- .../test_call_non_const.py | 6 +- .../test_callcode_non_const.py | 6 +- .../test_calldatacopy_non_const.py | 6 +- .../test_calldataload_non_const.py | 2 +- .../test_codecopy_non_const.py | 6 +- .../test_create_non_const.py | 15 +- .../test_delegatecall_non_const.py | 6 +- .../test_div_non_const.py | 6 +- .../stArgsZeroOneBalance/test_eq_non_const.py | 6 +- .../test_exp_non_const.py | 6 +- .../test_extcodecopy_non_const.py | 6 +- .../test_extcodesize_non_const.py | 6 +- .../stArgsZeroOneBalance/test_gt_non_const.py | 6 +- .../test_iszero_non_const.py | 6 +- .../test_jump_non_const.py | 6 +- .../test_jumpi_non_const.py | 6 +- .../test_log0_non_const.py | 6 +- .../test_log1_non_const.py | 6 +- .../test_log2_non_const.py | 6 +- .../test_log3_non_const.py | 6 +- .../stArgsZeroOneBalance/test_lt_non_const.py | 6 +- .../test_mload_non_const.py | 6 +- .../test_mod_non_const.py | 6 +- .../test_mstore8_non_const.py | 6 +- .../test_mstore_non_const.py | 6 +- .../test_mul_non_const.py | 6 +- .../test_mulmod_non_const.py | 6 +- .../test_not_non_const.py | 2 +- .../stArgsZeroOneBalance/test_or_non_const.py | 6 +- .../test_return_non_const.py | 6 +- .../test_sdiv_non_const.py | 6 +- .../test_sgt_non_const.py | 6 +- .../test_sha3_non_const.py | 2 +- .../test_signext_non_const.py | 6 +- .../test_sload_non_const.py | 6 +- .../test_slt_non_const.py | 6 +- .../test_smod_non_const.py | 6 +- .../test_sstore_non_const.py | 6 +- .../test_sub_non_const.py | 6 +- .../test_suicide_non_const.py | 6 +- .../test_xor_non_const.py | 6 +- .../test_contract_creation_spam.py | 2 +- .../stAttackTest/test_crashing_transaction.py | 10 +- .../stBadOpcode/test_eip2315_not_removed.py | 7 +- .../stBadOpcode/test_invalid_addr.py | 6 +- .../stBadOpcode/test_measure_gas.py | 184 +- .../stBadOpcode/test_operation_diff_gas.py | 184 +- ...s_tue_07_58_41_minus_15153_minus_575192.py | 7 +- ...7_58_41_minus_15153_minus_575192_london.py | 7 +- ...copy_python_bug_tue_03_48_41_minus_1432.py | 11 +- .../stBugs/test_staticcall_createfails.py | 6 +- .../test_call_oog_additional_gas_costs1.py | 24 +- .../test_call_oog_additional_gas_costs2.py | 22 +- .../stCallCodes/test_callcall_00.py | 67 +- .../stCallCodes/test_callcall_00_ooge.py | 49 +- .../test_callcall_00_ooge_value_transfer.py | 49 +- .../test_callcall_00_suicide_end.py | 22 +- .../stCallCodes/test_callcallcall_000.py | 70 +- .../stCallCodes/test_callcallcall_000_ooge.py | 52 +- .../test_callcallcall_000_oogm_after.py | 48 +- .../test_callcallcall_000_oogm_before.py | 52 +- .../test_callcallcall_000_suicide_end.py | 22 +- .../test_callcallcall_000_suicide_middle.py | 22 +- .../stCallCodes/test_callcallcallcode_001.py | 74 +- .../test_callcallcallcode_001_ooge.py | 56 +- .../test_callcallcallcode_001_oogm_after.py | 52 +- .../test_callcallcallcode_001_oogm_before.py | 56 +- .../test_callcallcallcode_001_suicide_end.py | 22 +- ...est_callcallcallcode_001_suicide_middle.py | 22 +- .../stCallCodes/test_callcallcode_01.py | 67 +- .../stCallCodes/test_callcallcode_01_ooge.py | 49 +- .../test_callcallcode_01_suicide_end.py | 22 +- .../stCallCodes/test_callcallcodecall_010.py | 70 +- .../test_callcallcodecall_010_ooge.py | 52 +- .../test_callcallcodecall_010_oogm_after.py | 48 +- .../test_callcallcodecall_010_oogm_before.py | 52 +- .../test_callcallcodecall_010_suicide_end.py | 22 +- ...est_callcallcodecall_010_suicide_middle.py | 22 +- .../test_callcallcodecallcode_011.py | 74 +- .../test_callcallcodecallcode_011_ooge.py | 56 +- ...est_callcallcodecallcode_011_oogm_after.py | 52 +- ...st_callcallcodecallcode_011_oogm_before.py | 56 +- ...st_callcallcodecallcode_011_suicide_end.py | 22 +- ...callcallcodecallcode_011_suicide_middle.py | 22 +- .../stCallCodes/test_callcode_dynamic_code.py | 38 +- .../test_callcode_dynamic_code2_self_call.py | 18 +- .../test_callcode_emptycontract.py | 7 +- ..._callcode_in_initcode_to_empty_contract.py | 2 +- ..._exis_contract_with_v_transfer_ne_money.py | 42 +- ...llcode_in_initcode_to_existing_contract.py | 42 +- ...o_existing_contract_with_value_transfer.py | 2 +- .../stCallCodes/test_callcodecall_10.py | 67 +- .../stCallCodes/test_callcodecall_10_ooge.py | 49 +- .../test_callcodecall_10_suicide_end.py | 22 +- .../stCallCodes/test_callcodecallcall_100.py | 74 +- .../test_callcodecallcall_100_ooge.py | 56 +- .../test_callcodecallcall_100_oogm_after.py | 52 +- .../test_callcodecallcall_100_oogm_before.py | 56 +- .../test_callcodecallcall_100_suicide_end.py | 22 +- ...est_callcodecallcall_100_suicide_middle.py | 22 +- .../test_callcodecallcallcode_101.py | 70 +- .../test_callcodecallcallcode_101_ooge.py | 52 +- ...est_callcodecallcallcode_101_oogm_after.py | 48 +- ...st_callcodecallcallcode_101_oogm_before.py | 52 +- ...st_callcodecallcallcode_101_suicide_end.py | 22 +- ...callcodecallcallcode_101_suicide_middle.py | 22 +- .../stCallCodes/test_callcodecallcode_11.py | 67 +- .../test_callcodecallcode_11_ooge.py | 49 +- .../test_callcodecallcode_11_suicide_end.py | 22 +- .../test_callcodecallcodecall_110.py | 74 +- .../test_callcodecallcodecall_110_ooge.py | 56 +- ...est_callcodecallcodecall_110_oogm_after.py | 52 +- ...st_callcodecallcodecall_110_oogm_before.py | 56 +- ...st_callcodecallcodecall_110_suicide_end.py | 22 +- ...callcodecallcodecall_110_suicide_middle.py | 22 +- .../test_callcodecallcodecallcode_111.py | 70 +- .../test_callcodecallcodecallcode_111_ooge.py | 52 +- ...callcodecallcodecallcode_111_oogm_after.py | 48 +- ...allcodecallcodecallcode_111_oogm_before.py | 52 +- ...allcodecallcodecallcode_111_suicide_end.py | 22 +- ...codecallcodecallcode_111_suicide_middle.py | 22 +- .../test_call1024_balance_too_low.py | 9 +- .../test_call1024_oog.py | 9 +- .../test_call_output1.py | 20 +- .../test_call_output2.py | 20 +- .../test_call_output3.py | 20 +- .../test_call_output3_fail.py | 20 +- .../test_call_output3partial.py | 20 +- .../test_call_output3partial_fail.py | 20 +- .../test_call_recursive_bomb_pre_call.py | 50 +- .../test_call_with_high_value.py | 24 +- .../test_call_with_high_value_and_gas_oog.py | 24 +- ...all_with_high_value_and_oo_gat_tx_level.py | 28 +- .../test_callcode1024_balance_too_low.py | 9 +- .../test_callcode1024_oog.py | 9 +- .../test_callcode_lose_gas_oog.py | 9 +- .../test_callcode_output1.py | 20 +- .../test_callcode_output2.py | 20 +- .../test_callcode_output3.py | 20 +- .../test_callcode_output3_fail.py | 20 +- .../test_callcode_output3partial.py | 20 +- .../test_callcode_output3partial_fail.py | 20 +- .../test_callcode_with_high_value.py | 28 +- ...st_callcode_with_high_value_and_gas_oog.py | 28 +- ..._ask_more_gas_then_transaction_provided.py | 16 +- .../test_create_fail_balance_too_low.py | 2 +- ...t_create_init_fail_bad_jump_destination.py | 2 +- ..._create_init_fail_bad_jump_destination2.py | 2 +- .../test_create_init_fail_oo_gduring_init.py | 2 +- .../test_create_init_fail_oo_gduring_init2.py | 7 +- ...te_init_fail_stack_size_larger_than1024.py | 2 +- .../test_create_init_fail_stack_underflow.py | 2 +- ...create_init_fail_undefined_instruction2.py | 2 +- .../test_create_init_oo_gfor_create.py | 7 +- .../test_create_js_example_contract.py | 15 +- ...name_registrator_per_txs_not_enough_gas.py | 8 +- ...e_registrator_pre_store1_not_enough_gas.py | 7 +- ...eate_name_registratorendowment_too_high.py | 7 +- .../test_callcallcallcode_001.py | 72 +- .../test_callcallcallcode_001_ooge.py | 58 +- .../test_callcallcallcode_001_oogm_after.py | 54 +- .../test_callcallcallcode_001_oogm_before.py | 58 +- .../test_callcallcallcode_001_suicide_end.py | 22 +- ...est_callcallcallcode_001_suicide_middle.py | 22 +- .../test_callcallcode_01.py | 67 +- .../test_callcallcode_01_ooge.py | 49 +- .../test_callcallcode_01_suicide_end.py | 22 +- .../test_callcallcodecall_010.py | 74 +- .../test_callcallcodecall_010_ooge.py | 52 +- .../test_callcallcodecall_010_oogm_after.py | 48 +- .../test_callcallcodecall_010_oogm_before.py | 52 +- .../test_callcallcodecall_010_suicide_end.py | 22 +- ...est_callcallcodecall_010_suicide_middle.py | 22 +- .../test_callcallcodecallcode_011.py | 74 +- .../test_callcallcodecallcode_011_ooge.py | 58 +- ...est_callcallcodecallcode_011_oogm_after.py | 54 +- ...st_callcallcodecallcode_011_oogm_before.py | 58 +- ...st_callcallcodecallcode_011_suicide_end.py | 22 +- ...callcallcodecallcode_011_suicide_middle.py | 22 +- .../test_callcodecall_10.py | 65 +- .../test_callcodecall_10_ooge.py | 47 +- .../test_callcodecall_10_suicide_end.py | 22 +- .../test_callcodecallcall_100.py | 74 +- .../test_callcodecallcall_100_ooge.py | 58 +- .../test_callcodecallcall_100_oogm_after.py | 54 +- .../test_callcodecallcall_100_oogm_before.py | 58 +- .../test_callcodecallcall_100_suicide_end.py | 22 +- ...est_callcodecallcall_100_suicide_middle.py | 22 +- .../test_callcodecallcallcode_101.py | 72 +- .../test_callcodecallcallcode_101_ooge.py | 52 +- ...est_callcodecallcallcode_101_oogm_after.py | 48 +- ...st_callcodecallcallcode_101_oogm_before.py | 52 +- ...st_callcodecallcallcode_101_suicide_end.py | 22 +- ...callcodecallcallcode_101_suicide_middle.py | 22 +- .../test_callcodecallcode_11.py | 65 +- .../test_callcodecallcode_11_ooge.py | 47 +- .../test_callcodecallcode_11_suicide_end.py | 22 +- .../test_callcodecallcodecall_110.py | 78 +- .../test_callcodecallcodecall_110_ooge.py | 58 +- ...est_callcodecallcodecall_110_oogm_after.py | 54 +- ...st_callcodecallcodecall_110_oogm_before.py | 58 +- ...st_callcodecallcodecall_110_suicide_end.py | 22 +- ...callcodecallcodecall_110_suicide_middle.py | 22 +- .../test_callcodecallcodecallcode_111.py | 68 +- .../test_callcodecallcodecallcode_111_ooge.py | 52 +- ...callcodecallcodecallcode_111_oogm_after.py | 48 +- ...allcodecallcodecallcode_111_oogm_before.py | 52 +- ...allcodecallcodecallcode_111_suicide_end.py | 22 +- ...codecallcodecallcode_111_suicide_middle.py | 22 +- .../test_callcallcallcode_001.py | 72 +- .../test_callcallcallcode_001_ooge.py | 58 +- .../test_callcallcallcode_001_oogm_after.py | 54 +- .../test_callcallcallcode_001_oogm_before.py | 58 +- .../test_callcallcallcode_001_suicide_end.py | 22 +- ...est_callcallcallcode_001_suicide_middle.py | 22 +- .../test_callcallcode_01.py | 67 +- .../test_callcallcode_01_ooge.py | 49 +- .../test_callcallcode_01_suicide_end.py | 22 +- .../test_callcallcodecall_010.py | 80 +- .../test_callcallcodecall_010_ooge.py | 52 +- .../test_callcallcodecall_010_oogm_after.py | 48 +- .../test_callcallcodecall_010_oogm_before.py | 52 +- .../test_callcallcodecall_010_suicide_end.py | 22 +- ...est_callcallcodecall_010_suicide_middle.py | 22 +- .../test_callcallcodecallcode_011.py | 72 +- .../test_callcallcodecallcode_011_ooge.py | 58 +- ...est_callcallcodecallcode_011_oogm_after.py | 54 +- ...st_callcallcodecallcode_011_oogm_before.py | 58 +- ...st_callcallcodecallcode_011_suicide_end.py | 22 +- ...callcallcodecallcode_011_suicide_middle.py | 22 +- .../test_callcodecall_10.py | 65 +- .../test_callcodecall_10_ooge.py | 47 +- .../test_callcodecall_10_suicide_end.py | 22 +- .../test_callcodecallcall_100.py | 80 +- .../test_callcodecallcall_100_ooge.py | 58 +- .../test_callcodecallcall_100_oogm_after.py | 54 +- .../test_callcodecallcall_100_oogm_before.py | 58 +- .../test_callcodecallcall_100_suicide_end.py | 22 +- ...est_callcodecallcall_100_suicide_middle.py | 22 +- .../test_callcodecallcallcode_101.py | 78 +- .../test_callcodecallcallcode_101_ooge.py | 52 +- ...est_callcodecallcallcode_101_oogm_after.py | 48 +- ...st_callcodecallcallcode_101_oogm_before.py | 52 +- ...st_callcodecallcallcode_101_suicide_end.py | 22 +- ...callcodecallcallcode_101_suicide_middle.py | 22 +- .../test_callcodecallcode_11.py | 65 +- .../test_callcodecallcode_11_ooge.py | 47 +- .../test_callcodecallcode_11_suicide_end.py | 22 +- .../test_callcodecallcodecall_110.py | 84 +- .../test_callcodecallcodecall_110_ooge.py | 58 +- ...est_callcodecallcodecall_110_oogm_after.py | 54 +- ...st_callcodecallcodecall_110_oogm_before.py | 58 +- ...st_callcodecallcodecall_110_suicide_end.py | 22 +- ...callcodecallcodecall_110_suicide_middle.py | 22 +- .../test_callcodecallcodecallcode_111.py | 66 +- .../test_callcodecallcodecallcode_111_ooge.py | 52 +- ...callcodecallcodecallcode_111_oogm_after.py | 48 +- ...allcodecallcodecallcode_111_oogm_before.py | 52 +- ...allcodecallcodecallcode_111_suicide_end.py | 22 +- ...codecallcodecallcode_111_suicide_middle.py | 22 +- .../stCodeSizeLimit/test_codesize_init.py | 8 +- .../stCodeSizeLimit/test_codesize_valid.py | 8 +- .../stCreate2/test_create2_bounds.py | 9 +- .../stCreate2/test_create2_bounds2.py | 9 +- .../stCreate2/test_create2_bounds3.py | 9 +- ...cide_during_init_then_store_then_return.py | 30 +- ..._create2_oo_gafter_init_code_returndata.py | 7 +- ...create2_oo_gafter_init_code_returndata3.py | 26 +- ...est_create2_oo_gafter_init_code_revert2.py | 22 +- .../stCreate2/test_create2_smart_init_code.py | 2 +- .../test_create2check_fields_in_initcode.py | 200 +- .../test_returndatacopy_following_create.py | 2 +- ...urndatacopy_following_successful_create.py | 7 +- .../stCreateTest/test_create2_refund_ef.py | 2 +- .../test_create_address_warm_after_fail.py | 84 +- .../test_create_contract_return_big_offset.py | 8 +- ...e_contract_create_e_contract_in_init_tr.py | 7 +- ...tract_create_ne_contract_in_init_oog_tr.py | 17 +- ..._contract_create_ne_contract_in_init_tr.py | 13 +- ..._contract_then_call_to_non_existent_acc.py | 2 +- ...empty000_createin_init_code_transaction.py | 11 +- .../test_create_empty_contract.py | 9 +- ..._create_empty_contract_and_call_it_0wei.py | 8 +- ..._create_empty_contract_and_call_it_1wei.py | 8 +- ...test_create_empty_contract_with_balance.py | 9 +- ...test_create_empty_contract_with_storage.py | 2 +- ..._contract_with_storage_and_call_it_0wei.py | 8 +- ..._contract_with_storage_and_call_it_1wei.py | 8 +- .../stCreateTest/test_create_fail_result.py | 257 +- .../stCreateTest/test_create_large_result.py | 11 +- ...t_create_oo_gafter_init_code_returndata.py | 7 +- ..._create_oo_gafter_init_code_returndata3.py | 26 +- ...ate_oo_gafter_init_code_returndata_size.py | 7 +- .../test_create_oo_gafter_init_code_revert.py | 42 +- .../test_create_oo_gafter_max_codesize.py | 7 +- .../test_create_transaction_call_data.py | 7 +- .../test_create_transaction_high_nonce.py | 8 +- .../test_call1024_balance_too_low.py | 9 +- .../test_call1024_oog.py | 9 +- .../test_call_output1.py | 20 +- .../test_call_output2.py | 20 +- .../test_call_output3.py | 20 +- .../test_call_output3partial.py | 20 +- .../test_call_output3partial_fail.py | 20 +- .../test_call_recursive_bomb_pre_call.py | 6 +- .../test_call_with_high_value_and_gas_oog.py | 28 +- .../test_callcode_output3.py | 20 +- ...st_callcode_with_high_value_and_gas_oog.py | 28 +- ...est_deleagate_call_after_value_transfer.py | 36 +- .../test_delegatecall1024.py | 9 +- .../test_delegatecall1024_oog.py | 9 +- .../test_delegatecall_and_oo_gat_tx_level.py | 28 +- .../test_delegatecall_basic.py | 28 +- .../test_delegatecall_emptycontract.py | 7 +- ...egatecall_in_initcode_to_empty_contract.py | 7 +- ...tecall_in_initcode_to_existing_contract.py | 9 +- .../test_delegatecall_sender_check.py | 33 +- .../test_delegatecall_value_check.py | 24 +- .../test_delegatecode_dynamic_code.py | 7 +- ...st_delegatecode_dynamic_code2_self_call.py | 8 +- .../test_trans_storage_ok.py | 486 +- .../test_trans_storage_reset.py | 44 +- ...e_consume_more_gas_then_transaction_has.py | 24 +- ...more_gas_on_depth2_then_transaction_has.py | 37 +- .../test_call_goes_oog_on_second_level.py | 47 +- .../test_call_goes_oog_on_second_level2.py | 37 +- .../test_create_and_gas_inside_create.py | 9 +- .../test_delegate_call_on_eip.py | 22 +- .../test_new_gas_price_for_codes.py | 27 +- .../test_suicide_to_existing_contract.py | 6 +- .../test_suicide_to_not_existing_contract.py | 28 +- .../test_transaction64_rule_d64e0.py | 22 +- .../test_transaction64_rule_d64m1.py | 22 +- .../test_transaction64_rule_d64p1.py | 22 +- ...t_transaction64_rule_integer_boundaries.py | 7 +- .../test_eip2929.py | 99 +- .../test_eip2929_minus_ff.py | 31 +- .../test_eip2929_oog.py | 116 +- .../test_gas_cost.py | 2 +- .../test_gas_cost_berlin.py | 6 +- .../test_gas_cost_exp.py | 7 +- .../test_gas_cost_jump.py | 15 +- .../test_gas_cost_mem_seg.py | 7 +- .../test_gas_cost_memory.py | 17 +- .../test_gas_cost_return.py | 9 +- .../test_raw_balance_gas.py | 11 +- .../test_raw_call_code_gas.py | 10 +- .../test_raw_call_code_gas_ask.py | 10 +- .../test_raw_call_code_gas_memory.py | 10 +- .../test_raw_call_code_gas_memory_ask.py | 10 +- .../test_raw_call_code_gas_value_transfer.py | 10 +- ...st_raw_call_code_gas_value_transfer_ask.py | 10 +- ...raw_call_code_gas_value_transfer_memory.py | 10 +- ...call_code_gas_value_transfer_memory_ask.py | 10 +- .../test_raw_call_gas.py | 10 +- .../test_raw_call_gas_ask.py | 10 +- .../test_raw_call_gas_value_transfer.py | 10 +- .../test_raw_call_gas_value_transfer_ask.py | 10 +- ...test_raw_call_gas_value_transfer_memory.py | 10 +- ..._raw_call_gas_value_transfer_memory_ask.py | 10 +- .../test_raw_call_memory_gas.py | 10 +- .../test_raw_call_memory_gas_ask.py | 10 +- ...test_raw_create_fail_gas_value_transfer.py | 7 +- ...est_raw_create_fail_gas_value_transfer2.py | 7 +- .../test_raw_create_gas.py | 7 +- .../test_raw_create_gas_memory.py | 7 +- .../test_raw_create_gas_value_transfer.py | 7 +- ...st_raw_create_gas_value_transfer_memory.py | 7 +- .../test_raw_delegate_call_gas.py | 10 +- .../test_raw_delegate_call_gas_ask.py | 10 +- .../test_raw_delegate_call_gas_memory.py | 10 +- .../test_raw_delegate_call_gas_memory_ask.py | 10 +- .../test_raw_ext_code_copy_gas.py | 15 +- .../test_raw_ext_code_copy_memory_gas.py | 13 +- .../test_raw_ext_code_size_gas.py | 12 +- .../stEIP1559/test_base_fee_diff_places.py | 368 +- .../stEIP1559/test_gas_price_diff_places.py | 354 +- .../stEIP1559/test_low_fee_cap.py | 8 +- .../stEIP1559/test_low_gas_limit.py | 7 +- .../stEIP1559/test_low_gas_price_old_types.py | 8 +- .../stEIP1559/test_out_of_funds.py | 8 +- .../stEIP1559/test_out_of_funds_old_types.py | 8 +- .../stEIP1559/test_sender_balance.py | 2 +- .../stEIP1559/test_tip_too_high.py | 8 +- .../test_transaction_intinsic_bug_paris.py | 9 +- .../stEIP1559/test_val_causes_oof.py | 8 +- .../test_call_one_v_call_suicide.py | 6 +- .../test_call_one_v_call_suicide2.py | 22 +- ...est_call_to_empty_then_call_error_paris.py | 27 +- .../test_call_zero_v_call_suicide.py | 6 +- .../stEIP158Specific/test_exp_empty.py | 7 +- .../test_extcodesize_to_epmty_paris.py | 17 +- .../test_vitalik_transaction_test_paris.py | 3 +- .../stEIP2930/test_transaction_costs.py | 7 +- .../test_coinbase_warm_account_call_gas.py | 4 +- ...est_coinbase_warm_account_call_gas_fail.py | 158 +- .../stEIP3855_push0/test_push0.py | 38 +- .../stEIP3855_push0/test_push0_gas.py | 7 +- .../test_create2_init_code_size_limit.py | 54 +- .../test_create_init_code_size_limit.py | 56 +- .../test_creation_tx_init_code_size_limit.py | 8 +- .../test_empty_blobhash_list.py | 9 +- .../test_opcode_blobh_bounds.py | 4 +- .../test_opcode_blobhash_out_of_range.py | 4 +- .../test_wrong_blobhash_version.py | 9 +- .../stEIP5656_MCOPY/test_mcopy.py | 2 +- .../test_mcopy_memory_expansion_cost.py | 8 +- tests/ported_static/stExample/test_eip1559.py | 9 +- .../stExample/test_invalid_tr.py | 7 +- .../stExample/test_merge_test.py | 4 +- .../stExample/test_yul_example.py | 7 +- ...nt_leave_empty_contract_via_transaction.py | 14 +- .../test_create_contract_via_contract.py | 7 +- ...ate_contract_via_contract_oog_init_code.py | 13 +- ...eate_contract_via_transaction_cost53000.py | 8 +- ...all_contract_to_create_contract_no_cash.py | 7 +- ...st_call_contract_to_create_contract_oog.py | 6 +- ...t_which_would_create_contract_if_called.py | 15 +- .../test_call_recursive_contract.py | 8 +- ...l_the_contract_to_create_empty_contract.py | 7 +- .../test_out_of_gas_contract_creation.py | 10 +- .../stInitCodeTest/test_return_test.py | 28 +- ...est_transaction_create_stop_in_initcode.py | 8 +- .../stLogTests/test_log0_empty_mem.py | 24 +- .../test_log0_log_mem_start_too_high.py | 40 +- .../test_log0_log_memsize_too_high.py | 40 +- .../stLogTests/test_log0_log_memsize_zero.py | 34 +- .../stLogTests/test_log0_non_empty_mem.py | 34 +- .../test_log0_non_empty_mem_log_mem_size1.py | 34 +- ...empty_mem_log_mem_size1_log_mem_start31.py | 34 +- .../stLogTests/test_log1_caller.py | 28 +- .../stLogTests/test_log1_empty_mem.py | 24 +- .../test_log1_log_mem_start_too_high.py | 42 +- .../test_log1_log_memsize_too_high.py | 42 +- .../stLogTests/test_log1_log_memsize_zero.py | 34 +- .../stLogTests/test_log1_max_topic.py | 42 +- .../stLogTests/test_log1_non_empty_mem.py | 28 +- .../test_log1_non_empty_mem_log_mem_size1.py | 34 +- ...empty_mem_log_mem_size1_log_mem_start31.py | 34 +- .../stLogTests/test_log2_caller.py | 28 +- .../stLogTests/test_log2_empty_mem.py | 24 +- .../test_log2_log_mem_start_too_high.py | 44 +- .../test_log2_log_memsize_too_high.py | 44 +- .../stLogTests/test_log2_log_memsize_zero.py | 34 +- .../stLogTests/test_log2_max_topic.py | 44 +- .../stLogTests/test_log2_non_empty_mem.py | 34 +- .../test_log2_non_empty_mem_log_mem_size1.py | 34 +- ...empty_mem_log_mem_size1_log_mem_start31.py | 34 +- .../stLogTests/test_log3_caller.py | 32 +- .../stLogTests/test_log3_empty_mem.py | 30 +- .../test_log3_log_mem_start_too_high.py | 46 +- .../test_log3_log_memsize_too_high.py | 46 +- .../stLogTests/test_log3_log_memsize_zero.py | 34 +- .../stLogTests/test_log3_max_topic.py | 46 +- .../stLogTests/test_log3_non_empty_mem.py | 34 +- .../test_log3_non_empty_mem_log_mem_size1.py | 34 +- ...empty_mem_log_mem_size1_log_mem_start31.py | 34 +- .../ported_static/stLogTests/test_log3_pc.py | 32 +- .../stLogTests/test_log4_caller.py | 42 +- .../stLogTests/test_log4_empty_mem.py | 40 +- .../test_log4_log_mem_start_too_high.py | 46 +- .../test_log4_log_memsize_too_high.py | 46 +- .../stLogTests/test_log4_log_memsize_zero.py | 46 +- .../stLogTests/test_log4_max_topic.py | 46 +- .../stLogTests/test_log4_non_empty_mem.py | 46 +- .../test_log4_non_empty_mem_log_mem_size1.py | 46 +- ...empty_mem_log_mem_size1_log_mem_start31.py | 46 +- .../ported_static/stLogTests/test_log4_pc.py | 42 +- .../stLogTests/test_log_in_oog_call.py | 28 +- ...ransaction_has_with_mem_expanding_calls.py | 12 +- ...ransaction_has_with_mem_expanding_calls.py | 37 +- ..._second_level2_with_mem_expanding_calls.py | 13 +- ..._inside_create_with_mem_expanding_calls.py | 9 +- ...te_call_on_eip_with_mem_expanding_calls.py | 22 +- ...rice_for_codes_with_mem_expanding_calls.py | 29 +- .../test_oo_gin_return.py | 6 +- .../stMemoryStressTest/test_call_bounds.py | 40 +- .../stMemoryStressTest/test_call_bounds2.py | 26 +- .../stMemoryStressTest/test_call_bounds2a.py | 26 +- .../stMemoryStressTest/test_call_bounds3.py | 38 +- .../test_callcode_bounds.py | 40 +- .../test_callcode_bounds2.py | 26 +- .../test_callcode_bounds3.py | 26 +- .../test_callcode_bounds4.py | 36 +- .../stMemoryStressTest/test_create_bounds.py | 9 +- .../stMemoryStressTest/test_create_bounds2.py | 9 +- .../stMemoryStressTest/test_create_bounds3.py | 9 +- .../test_delegatecall_bounds.py | 42 +- .../test_delegatecall_bounds2.py | 26 +- .../test_delegatecall_bounds3.py | 36 +- .../stMemoryStressTest/test_dup_bounds.py | 7 +- .../stMemoryStressTest/test_fill_stack.py | 7 +- .../stMemoryStressTest/test_jump_bounds.py | 7 +- .../stMemoryStressTest/test_jump_bounds2.py | 7 +- .../stMemoryStressTest/test_jumpi_bounds.py | 7 +- .../test_mload32bit_bound.py | 7 +- .../test_mload32bit_bound2.py | 7 +- .../test_mload32bit_bound_msize.py | 7 +- .../test_mload32bit_bound_return.py | 7 +- .../test_mload32bit_bound_return2.py | 7 +- .../stMemoryStressTest/test_mload_bounds.py | 7 +- .../stMemoryStressTest/test_mload_bounds2.py | 7 +- .../stMemoryStressTest/test_mload_bounds3.py | 7 +- .../stMemoryStressTest/test_mstore_bounds.py | 9 +- .../stMemoryStressTest/test_mstore_bounds2.py | 9 +- .../test_mstore_bounds2a.py | 9 +- .../stMemoryStressTest/test_pop_bounds.py | 7 +- .../stMemoryStressTest/test_sload_bounds.py | 7 +- .../test_static_call_bounds.py | 40 +- .../test_static_call_bounds2.py | 26 +- .../test_static_call_bounds2a.py | 26 +- .../test_static_call_bounds3.py | 38 +- .../ported_static/stMemoryTest/test_buffer.py | 31 +- .../stMemoryTest/test_buffer_src_offset.py | 11 +- .../test_call_data_copy_offset.py | 4 +- .../stMemoryTest/test_calldatacopy_dejavu.py | 7 +- .../stMemoryTest/test_code_copy_offset.py | 4 +- .../stMemoryTest/test_codecopy_dejavu.py | 7 +- .../stMemoryTest/test_codecopy_dejavu2.py | 7 +- .../stMemoryTest/test_extcodecopy_dejavu.py | 7 +- .../stMemoryTest/test_log1_dejavu.py | 7 +- .../stMemoryTest/test_log2_dejavu.py | 7 +- .../stMemoryTest/test_log3_dejavu.py | 7 +- .../stMemoryTest/test_log4_dejavu.py | 7 +- .../stMemoryTest/test_mem_copy_self.py | 2 +- .../stMemoryTest/test_mem_return.py | 7 +- .../stMemoryTest/test_mload16bit_bound.py | 7 +- .../stMemoryTest/test_mload8bit_bound.py | 7 +- .../stMemoryTest/test_mload_dejavu.py | 7 +- .../stMemoryTest/test_mstore_dejavu.py | 7 +- .../stMemoryTest/test_mstroe8_dejavu.py | 7 +- tests/ported_static/stMemoryTest/test_oog.py | 152 +- .../stMemoryTest/test_sha3_dejavu.py | 7 +- .../stMemoryTest/test_stack_limit_gas_1023.py | 7 +- .../stMemoryTest/test_stack_limit_gas_1024.py | 7 +- .../stMemoryTest/test_stack_limit_gas_1025.py | 7 +- .../test_stack_limit_push31_1023.py | 7 +- .../test_stack_limit_push31_1024.py | 7 +- .../test_stack_limit_push31_1025.py | 7 +- .../test_stack_limit_push32_1023.py | 7 +- .../test_stack_limit_push32_1024.py | 7 +- .../test_stack_limit_push32_1025.py | 7 +- ...test_non_zero_value_call_to_empty_paris.py | 12 +- ...zero_value_call_to_non_non_zero_balance.py | 12 +- ...ero_value_call_to_one_storage_key_paris.py | 2 +- ..._non_zero_value_callcode_to_empty_paris.py | 12 +- ..._value_callcode_to_non_non_zero_balance.py | 12 +- ...value_callcode_to_one_storage_key_paris.py | 2 +- ..._zero_value_delegatecall_to_empty_paris.py | 12 +- ...ue_delegatecall_to_non_non_zero_balance.py | 12 +- ...e_delegatecall_to_one_storage_key_paris.py | 2 +- ...t_non_zero_value_suicide_to_empty_paris.py | 2 +- ...o_value_suicide_to_non_non_zero_balance.py | 2 +- ..._value_suicide_to_one_storage_key_paris.py | 2 +- ...ansaction_cal_lwith_data_to_empty_paris.py | 10 +- ..._cal_lwith_data_to_non_non_zero_balance.py | 10 +- ...o_value_transaction_call_to_empty_paris.py | 10 +- ...ransaction_call_to_non_non_zero_balance.py | 10 +- .../stPreCompiledContracts/test_modexp.py | 2 +- .../test_modexp_tests.py | 7 +- .../stPreCompiledContracts/test_sec80.py | 7 +- .../test_call_ecrecover0.py | 12 +- .../test_call_ecrecover0_0input.py | 7 +- ...t_call_ecrecover0_complete_return_value.py | 11 +- .../test_call_ecrecover0_gas2999.py | 7 +- .../test_call_ecrecover0_gas3000.py | 12 +- .../test_call_ecrecover0_no_gas.py | 7 +- ...all_ecrecover0_overlapping_input_output.py | 12 +- .../test_call_ecrecover1.py | 7 +- .../test_call_ecrecover2.py | 7 +- .../test_call_ecrecover3.py | 2 +- .../test_call_ecrecover80.py | 7 +- .../test_call_ecrecover_check_length.py | 12 +- ...est_call_ecrecover_check_length_wrong_v.py | 2 +- .../test_call_ecrecover_h_prefixed0.py | 2 +- .../test_call_ecrecover_invalid_signature.py | 2 +- .../test_call_ecrecover_r_prefixed0.py | 7 +- .../test_call_ecrecover_s_prefixed0.py | 2 +- .../test_call_ecrecover_unrecoverable_key.py | 2 +- .../test_call_ecrecover_v_prefixed0.py | 12 +- .../test_call_ripemd160_1.py | 2 +- .../test_call_ripemd160_2.py | 2 +- .../test_call_ripemd160_3.py | 2 +- .../test_call_ripemd160_3_postfixed0.py | 2 +- .../test_call_ripemd160_3_prefixed0.py | 2 +- .../test_call_ripemd160_4.py | 2 +- .../test_call_ripemd160_4_gas719.py | 2 +- .../test_call_ripemd160_5.py | 2 +- .../test_call_sha256_0.py | 2 +- .../test_call_sha256_1.py | 2 +- .../test_call_sha256_1_nonzero_value.py | 2 +- .../test_call_sha256_2.py | 2 +- .../test_call_sha256_3.py | 2 +- .../test_call_sha256_3_postfix0.py | 2 +- .../test_call_sha256_3_prefix0.py | 2 +- .../test_call_sha256_4.py | 2 +- .../test_call_sha256_4_gas99.py | 2 +- .../test_call_sha256_5.py | 2 +- .../test_callcode_ecrecover0.py | 12 +- .../test_callcode_ecrecover0_0input.py | 7 +- ...llcode_ecrecover0_complete_return_value.py | 11 +- .../test_callcode_ecrecover0_gas2999.py | 7 +- .../test_callcode_ecrecover0_gas3000.py | 12 +- .../test_callcode_ecrecover0_no_gas.py | 7 +- ...ode_ecrecover0_overlapping_input_output.py | 12 +- .../test_callcode_ecrecover1.py | 7 +- .../test_callcode_ecrecover2.py | 7 +- .../test_callcode_ecrecover3.py | 2 +- .../test_callcode_ecrecover80.py | 7 +- .../test_callcode_ecrecover_h_prefixed0.py | 2 +- .../test_callcode_ecrecover_r_prefixed0.py | 7 +- .../test_callcode_ecrecover_s_prefixed0.py | 2 +- .../test_callcode_ecrecover_v_prefixed0.py | 12 +- .../test_callcode_ecrecover_v_prefixedf0.py | 7 +- .../test_callcode_ripemd160_0.py | 7 +- .../test_callcode_ripemd160_1.py | 2 +- .../test_callcode_ripemd160_2.py | 2 +- .../test_callcode_ripemd160_3.py | 2 +- .../test_callcode_ripemd160_3_postfixed0.py | 2 +- .../test_callcode_ripemd160_3_prefixed0.py | 2 +- .../test_callcode_ripemd160_4.py | 2 +- .../test_callcode_ripemd160_4_gas719.py | 2 +- .../test_callcode_ripemd160_5.py | 2 +- .../test_callcode_sha256_0.py | 2 +- .../test_callcode_sha256_1.py | 2 +- .../test_callcode_sha256_1_nonzero_value.py | 2 +- .../test_callcode_sha256_2.py | 2 +- .../test_callcode_sha256_3.py | 2 +- .../test_callcode_sha256_3_postfix0.py | 2 +- .../test_callcode_sha256_3_prefix0.py | 2 +- .../test_callcode_sha256_4.py | 2 +- .../test_callcode_sha256_4_gas99.py | 2 +- .../test_callcode_sha256_5.py | 2 +- .../test_ecrecover_short_buff.py | 2 +- .../test_ecrecover_weird_v.py | 2 +- .../test_modexp_0_0_0_20500.py | 144 +- .../test_modexp_0_0_0_22000.py | 144 +- .../test_modexp_0_0_0_25000.py | 144 +- .../test_modexp_0_0_0_35000.py | 144 +- .../test_modexp_random_input.py | 8 +- .../test_call1_mb1024_calldepth.py | 9 +- .../test_call20_kbytes_contract50_2.py | 10 +- .../test_call20_kbytes_contract50_3.py | 10 +- .../test_call50000.py | 12 +- .../test_call50000_ecrec.py | 7 +- .../test_call50000_identity.py | 7 +- .../test_call50000_identity2.py | 7 +- .../test_call50000_rip160.py | 7 +- .../test_callcode50000.py | 12 +- .../test_create1000.py | 63 +- .../test_create1000_byzantium.py | 12 +- .../test_create1000_shnghai.py | 52 +- ...atic_complexity_solidity_call_data_copy.py | 24 +- .../stRandom/test_random_statetest0.py | 7 +- .../stRandom/test_random_statetest1.py | 7 +- .../stRandom/test_random_statetest10.py | 7 +- .../stRandom/test_random_statetest103.py | 23 +- .../stRandom/test_random_statetest108.py | 7 +- .../stRandom/test_random_statetest111.py | 7 +- .../stRandom/test_random_statetest125.py | 7 +- .../stRandom/test_random_statetest126.py | 7 +- .../stRandom/test_random_statetest13.py | 39 +- .../stRandom/test_random_statetest133.py | 23 +- .../stRandom/test_random_statetest134.py | 39 +- .../stRandom/test_random_statetest135.py | 39 +- .../stRandom/test_random_statetest144.py | 4 +- .../stRandom/test_random_statetest146.py | 7 +- .../stRandom/test_random_statetest149.py | 39 +- .../stRandom/test_random_statetest150.py | 38 +- .../stRandom/test_random_statetest151.py | 7 +- .../stRandom/test_random_statetest154.py | 38 +- .../stRandom/test_random_statetest157.py | 7 +- .../stRandom/test_random_statetest159.py | 34 +- .../stRandom/test_random_statetest16.py | 23 +- .../stRandom/test_random_statetest163.py | 7 +- .../stRandom/test_random_statetest171.py | 39 +- .../stRandom/test_random_statetest172.py | 7 +- .../stRandom/test_random_statetest176.py | 23 +- .../stRandom/test_random_statetest177.py | 7 +- .../stRandom/test_random_statetest178.py | 38 +- .../stRandom/test_random_statetest18.py | 7 +- .../stRandom/test_random_statetest185.py | 7 +- .../stRandom/test_random_statetest189.py | 7 +- .../stRandom/test_random_statetest190.py | 39 +- .../stRandom/test_random_statetest197.py | 7 +- .../stRandom/test_random_statetest20.py | 7 +- .../stRandom/test_random_statetest205.py | 38 +- .../stRandom/test_random_statetest209.py | 7 +- .../stRandom/test_random_statetest211.py | 7 +- .../stRandom/test_random_statetest226.py | 39 +- .../stRandom/test_random_statetest230.py | 7 +- .../stRandom/test_random_statetest233.py | 7 +- .../stRandom/test_random_statetest24.py | 7 +- .../stRandom/test_random_statetest25.py | 7 +- .../stRandom/test_random_statetest250.py | 39 +- .../stRandom/test_random_statetest251.py | 7 +- .../stRandom/test_random_statetest252.py | 7 +- .../stRandom/test_random_statetest257.py | 7 +- .../stRandom/test_random_statetest260.py | 7 +- .../stRandom/test_random_statetest261.py | 23 +- .../stRandom/test_random_statetest263.py | 34 +- .../stRandom/test_random_statetest265.py | 7 +- .../stRandom/test_random_statetest266.py | 7 +- .../stRandom/test_random_statetest271.py | 23 +- .../stRandom/test_random_statetest274.py | 39 +- .../stRandom/test_random_statetest275.py | 7 +- .../stRandom/test_random_statetest282.py | 34 +- .../stRandom/test_random_statetest285.py | 7 +- .../stRandom/test_random_statetest286.py | 34 +- .../stRandom/test_random_statetest287.py | 34 +- .../stRandom/test_random_statetest288.py | 7 +- .../stRandom/test_random_statetest292.py | 39 +- .../stRandom/test_random_statetest294.py | 7 +- .../stRandom/test_random_statetest295.py | 23 +- .../stRandom/test_random_statetest296.py | 23 +- .../stRandom/test_random_statetest300.py | 7 +- .../stRandom/test_random_statetest302.py | 39 +- .../stRandom/test_random_statetest303.py | 23 +- .../stRandom/test_random_statetest304.py | 7 +- .../stRandom/test_random_statetest306.py | 38 +- .../stRandom/test_random_statetest307.py | 49 +- .../stRandom/test_random_statetest308.py | 34 +- .../stRandom/test_random_statetest309.py | 7 +- .../stRandom/test_random_statetest312.py | 23 +- .../stRandom/test_random_statetest313.py | 7 +- .../stRandom/test_random_statetest320.py | 23 +- .../stRandom/test_random_statetest321.py | 7 +- .../stRandom/test_random_statetest323.py | 23 +- .../stRandom/test_random_statetest326.py | 7 +- .../stRandom/test_random_statetest327.py | 7 +- .../stRandom/test_random_statetest33.py | 2 +- .../stRandom/test_random_statetest335.py | 7 +- .../stRandom/test_random_statetest336.py | 7 +- .../stRandom/test_random_statetest340.py | 39 +- .../stRandom/test_random_statetest341.py | 39 +- .../stRandom/test_random_statetest345.py | 7 +- .../stRandom/test_random_statetest346.py | 7 +- .../stRandom/test_random_statetest347.py | 9 +- .../stRandom/test_random_statetest350.py | 7 +- .../stRandom/test_random_statetest352.py | 39 +- .../stRandom/test_random_statetest353.py | 23 +- .../stRandom/test_random_statetest355.py | 23 +- .../stRandom/test_random_statetest357.py | 7 +- .../stRandom/test_random_statetest359.py | 7 +- .../stRandom/test_random_statetest36.py | 7 +- .../stRandom/test_random_statetest370.py | 39 +- .../stRandom/test_random_statetest378.py | 2 +- .../stRandom/test_random_statetest384.py | 2 +- .../stRandom/test_random_statetest4.py | 7 +- .../stRandom/test_random_statetest42.py | 2 +- .../stRandom/test_random_statetest45.py | 23 +- .../stRandom/test_random_statetest48.py | 38 +- .../stRandom/test_random_statetest5.py | 39 +- .../stRandom/test_random_statetest51.py | 7 +- .../stRandom/test_random_statetest53.py | 39 +- .../stRandom/test_random_statetest54.py | 23 +- .../stRandom/test_random_statetest55.py | 23 +- .../stRandom/test_random_statetest57.py | 7 +- .../stRandom/test_random_statetest72.py | 39 +- .../stRandom/test_random_statetest78.py | 23 +- .../stRandom/test_random_statetest82.py | 7 +- .../stRandom/test_random_statetest84.py | 7 +- .../stRandom/test_random_statetest97.py | 39 +- .../stRandom2/test_random_statetest387.py | 7 +- .../stRandom2/test_random_statetest393.py | 23 +- .../stRandom2/test_random_statetest396.py | 23 +- .../stRandom2/test_random_statetest397.py | 7 +- .../stRandom2/test_random_statetest401.py | 34 +- .../stRandom2/test_random_statetest404.py | 7 +- .../stRandom2/test_random_statetest410.py | 39 +- .../stRandom2/test_random_statetest414.py | 7 +- .../stRandom2/test_random_statetest415.py | 23 +- .../stRandom2/test_random_statetest417.py | 7 +- .../stRandom2/test_random_statetest418.py | 39 +- .../stRandom2/test_random_statetest420.py | 23 +- .../stRandom2/test_random_statetest422.py | 39 +- .../stRandom2/test_random_statetest428.py | 7 +- .../stRandom2/test_random_statetest433.py | 23 +- .../stRandom2/test_random_statetest443.py | 39 +- .../stRandom2/test_random_statetest444.py | 7 +- .../stRandom2/test_random_statetest445.py | 23 +- .../stRandom2/test_random_statetest448.py | 39 +- .../stRandom2/test_random_statetest449.py | 39 +- .../stRandom2/test_random_statetest454.py | 39 +- .../stRandom2/test_random_statetest456.py | 7 +- .../stRandom2/test_random_statetest458.py | 38 +- .../stRandom2/test_random_statetest467.py | 38 +- .../stRandom2/test_random_statetest469.py | 7 +- .../stRandom2/test_random_statetest472.py | 39 +- .../stRandom2/test_random_statetest476.py | 7 +- .../stRandom2/test_random_statetest478.py | 7 +- .../stRandom2/test_random_statetest481.py | 7 +- .../stRandom2/test_random_statetest484.py | 23 +- .../stRandom2/test_random_statetest485.py | 7 +- .../stRandom2/test_random_statetest494.py | 7 +- .../stRandom2/test_random_statetest496.py | 7 +- .../stRandom2/test_random_statetest498.py | 34 +- .../stRandom2/test_random_statetest499.py | 7 +- .../stRandom2/test_random_statetest504.py | 23 +- .../stRandom2/test_random_statetest507.py | 34 +- .../stRandom2/test_random_statetest508.py | 2 +- .../stRandom2/test_random_statetest509.py | 7 +- .../stRandom2/test_random_statetest510.py | 34 +- .../stRandom2/test_random_statetest513.py | 7 +- .../stRandom2/test_random_statetest523.py | 7 +- .../stRandom2/test_random_statetest524.py | 7 +- .../stRandom2/test_random_statetest525.py | 7 +- .../stRandom2/test_random_statetest527.py | 39 +- .../stRandom2/test_random_statetest528.py | 7 +- .../stRandom2/test_random_statetest531.py | 7 +- .../stRandom2/test_random_statetest536.py | 7 +- .../stRandom2/test_random_statetest543.py | 7 +- .../stRandom2/test_random_statetest547.py | 7 +- .../stRandom2/test_random_statetest554.py | 38 +- .../stRandom2/test_random_statetest558.py | 7 +- .../stRandom2/test_random_statetest560.py | 7 +- .../stRandom2/test_random_statetest562.py | 7 +- .../stRandom2/test_random_statetest563.py | 23 +- .../stRandom2/test_random_statetest566.py | 39 +- .../stRandom2/test_random_statetest567.py | 7 +- .../stRandom2/test_random_statetest569.py | 23 +- .../stRandom2/test_random_statetest572.py | 39 +- .../stRandom2/test_random_statetest575.py | 39 +- .../stRandom2/test_random_statetest576.py | 23 +- .../stRandom2/test_random_statetest579.py | 7 +- .../stRandom2/test_random_statetest582.py | 39 +- .../stRandom2/test_random_statetest583.py | 39 +- .../stRandom2/test_random_statetest589.py | 39 +- .../stRandom2/test_random_statetest597.py | 23 +- .../stRandom2/test_random_statetest601.py | 7 +- .../stRandom2/test_random_statetest604.py | 7 +- .../stRandom2/test_random_statetest609.py | 7 +- .../stRandom2/test_random_statetest611.py | 7 +- .../stRandom2/test_random_statetest618.py | 39 +- .../stRandom2/test_random_statetest624.py | 7 +- .../stRandom2/test_random_statetest625.py | 7 +- .../stRandom2/test_random_statetest626.py | 39 +- .../stRandom2/test_random_statetest632.py | 7 +- .../stRandom2/test_random_statetest636.py | 34 +- .../stRandom2/test_random_statetest639.py | 38 +- .../stRandom2/test_random_statetest640.py | 7 +- .../stRandom2/test_random_statetest642.py | 2 +- .../stRandom2/test_random_statetest645.py | 4 +- .../stRandom2/test_random_statetest647.py | 8 +- .../stRandom2/test_random_statetest648.py | 8 +- .../stRandom2/test_random_statetest649.py | 7 +- .../stRandom2/test_random_statetest650.py | 7 +- .../test_recursive_create.py | 7 +- .../test_recursive_create_return_value.py | 7 +- .../stRefundTest/test_refund50_1.py | 7 +- .../stRefundTest/test_refund50_2.py | 7 +- .../stRefundTest/test_refund50percent_cap.py | 2 +- .../stRefundTest/test_refund600.py | 2 +- .../stRefundTest/test_refund_call_a.py | 26 +- ...st_refund_call_a_not_enough_gas_in_call.py | 26 +- .../stRefundTest/test_refund_call_a_oog.py | 26 +- .../test_refund_call_to_suicide_no_storage.py | 6 +- .../test_refund_call_to_suicide_storage.py | 6 +- .../test_refund_call_to_suicide_twice.py | 6 +- .../test_refund_change_non_zero_storage.py | 7 +- .../stRefundTest/test_refund_ff.py | 14 +- .../test_refund_get_ether_back.py | 7 +- .../stRefundTest/test_refund_max.py | 7 +- .../test_refund_multimple_suicide.py | 7 +- .../stRefundTest/test_refund_no_oog_1.py | 7 +- .../stRefundTest/test_refund_oog.py | 7 +- .../test_refund_single_suicide.py | 7 +- .../stRefundTest/test_refund_sstore.py | 7 +- .../test_refund_suicide50procent_cap.py | 6 +- .../test_refund_tx_to_suicide_oog.py | 7 +- ...ecrec_success_empty_then_returndatasize.py | 7 +- ...hen_call_value_fail_then_returndatasize.py | 12 +- .../test_clear_return_buffer.py | 12 +- ...t_returndatacopy_after_failing_callcode.py | 20 +- ...turndatacopy_after_failing_delegatecall.py | 20 +- ...returndatacopy_after_failing_staticcall.py | 24 +- ...turndatacopy_after_revert_in_staticcall.py | 37 +- ...eturndatacopy_after_successful_callcode.py | 30 +- ...ndatacopy_after_successful_delegatecall.py | 34 +- ...urndatacopy_after_successful_staticcall.py | 37 +- .../test_returndatacopy_following_call.py | 4 +- .../test_returndatacopy_following_create.py | 8 +- ...t_returndatacopy_following_failing_call.py | 10 +- .../test_returndatacopy_following_revert.py | 4 +- ...urndatacopy_following_successful_create.py | 7 +- ...turndatacopy_following_too_big_transfer.py | 10 +- .../test_returndatacopy_initial.py | 7 +- .../test_returndatacopy_initial_256.py | 7 +- .../test_returndatacopy_initial_big_sum.py | 7 +- .../test_returndatacopy_overrun.py | 10 +- ...t_returndatasize_after_failing_callcode.py | 27 +- ...turndatasize_after_failing_delegatecall.py | 27 +- ...returndatasize_after_failing_staticcall.py | 27 +- ...t_returndatasize_after_oog_after_deeper.py | 56 +- ...ndatasize_after_successful_delegatecall.py | 28 +- ...urndatasize_after_successful_staticcall.py | 34 +- .../test_returndatasize_bug.py | 32 +- .../test_returndatasize_initial.py | 7 +- .../test_returndatasize_initial_zero_read.py | 7 +- .../test_revert_ret_data_size.py | 102 +- .../test_subcall_return_more_then_expected.py | 102 +- .../stRevertTest/test_cost_revert.py | 2 +- .../test_loop_calls_depth_then_revert.py | 6 +- .../test_loop_calls_depth_then_revert2.py | 6 +- .../test_loop_calls_depth_then_revert3.py | 13 +- .../test_loop_calls_then_revert.py | 24 +- ...t_loop_delegate_calls_depth_then_revert.py | 6 +- .../test_nashatyrev_suicide_revert.py | 7 +- ...python_revert_test_tue201814_minus_1430.py | 194 +- .../test_revert_in_static_call.py | 22 +- .../test_revert_on_empty_stack.py | 7 +- .../stRevertTest/test_revert_opcode.py | 7 +- ...pcode_in_calls_on_non_empty_return_data.py | 116 +- .../test_revert_opcode_in_init.py | 8 +- ...t_revert_opcode_with_big_output_in_init.py | 8 +- .../test_revert_precompiled_touch_nonce.py | 38 +- ...t_revert_precompiled_touch_noncestorage.py | 54 +- .../test_revert_precompiled_touch_paris.py | 34 +- ..._revert_precompiled_touch_storage_paris.py | 68 +- .../stRevertTest/test_revert_prefound_call.py | 12 +- .../test_revert_prefound_call_oog.py | 12 +- ...st_revert_prefound_empty_call_oog_paris.py | 12 +- .../test_revert_prefound_empty_call_paris.py | 12 +- .../test_revert_prefound_empty_oog_paris.py | 10 +- .../stRevertTest/test_revert_prefound_oog.py | 10 +- .../stRevertTest/test_state_revert.py | 6 +- ...st_touch_to_empty_account_revert2_paris.py | 45 +- ...st_touch_to_empty_account_revert3_paris.py | 81 +- ...est_touch_to_empty_account_revert_paris.py | 29 +- ...tore_call_to_self_sub_refund_below_zero.py | 7 +- .../stSStoreTest/test_sstore_gas.py | 7 +- tests/ported_static/stShift/test_sar00.py | 7 +- tests/ported_static/stShift/test_sar01.py | 7 +- tests/ported_static/stShift/test_sar10.py | 7 +- tests/ported_static/stShift/test_sar11.py | 7 +- .../stShift/test_sar_0_256_minus_1.py | 2 +- .../stShift/test_sar_2_254_254.py | 7 +- .../ported_static/stShift/test_sar_2_255_1.py | 2 +- .../stShift/test_sar_2_255_255.py | 2 +- .../stShift/test_sar_2_255_256.py | 2 +- .../stShift/test_sar_2_255_257.py | 2 +- .../stShift/test_sar_2_255_minus_1_248.py | 7 +- .../stShift/test_sar_2_255_minus_1_254.py | 7 +- .../stShift/test_sar_2_255_minus_1_255.py | 7 +- .../stShift/test_sar_2_255_minus_1_256.py | 7 +- .../stShift/test_sar_2_256_minus_1_0.py | 7 +- .../stShift/test_sar_2_256_minus_1_1.py | 2 +- .../stShift/test_sar_2_256_minus_1_255.py | 2 +- .../stShift/test_sar_2_256_minus_1_256.py | 2 +- .../stShift/test_shift_signed_combinations.py | 2 +- tests/ported_static/stShift/test_shl01.py | 7 +- .../stShift/test_shl01_minus_0100.py | 7 +- .../stShift/test_shl01_minus_0101.py | 7 +- .../stShift/test_shl01_minus_ff.py | 2 +- tests/ported_static/stShift/test_shl10.py | 7 +- tests/ported_static/stShift/test_shl11.py | 7 +- .../stShift/test_shl_2_255_minus_1_1.py | 2 +- .../stShift/test_shl_minus_1_0.py | 2 +- .../stShift/test_shl_minus_1_1.py | 2 +- .../stShift/test_shl_minus_1_255.py | 2 +- .../stShift/test_shl_minus_1_256.py | 7 +- tests/ported_static/stShift/test_shr01.py | 7 +- tests/ported_static/stShift/test_shr10.py | 7 +- tests/ported_static/stShift/test_shr11.py | 7 +- .../ported_static/stShift/test_shr_2_255_1.py | 2 +- .../stShift/test_shr_2_255_255.py | 7 +- .../stShift/test_shr_2_255_256.py | 7 +- .../stShift/test_shr_2_255_257.py | 7 +- .../stShift/test_shr_minus_1_0.py | 2 +- .../stShift/test_shr_minus_1_1.py | 2 +- .../stShift/test_shr_minus_1_255.py | 7 +- .../stShift/test_shr_minus_1_256.py | 7 +- .../stSolidityTest/test_ambiguous_method.py | 7 +- .../stSolidityTest/test_by_zero.py | 8 +- .../stSolidityTest/test_call_infinite_loop.py | 7 +- .../test_call_recursive_methods.py | 7 +- .../test_contract_inheritance.py | 7 +- .../test_create_contract_from_method.py | 7 +- .../test_recursive_create_contracts.py | 11 +- ...t_test_block_and_transaction_properties.py | 13 +- .../test_test_contract_interaction.py | 7 +- .../test_test_contract_suicide.py | 7 +- .../test_test_cryptographic_functions.py | 7 +- .../stSolidityTest/test_test_keywords.py | 7 +- .../test_test_store_gas_prices.py | 7 +- .../stSpecialTest/test_block504980.py | 12280 ++++++++-------- .../stSpecialTest/test_eoa_empty_paris.py | 12 +- .../test_failed_tx_xcf416c53_paris.py | 11 +- .../stSpecialTest/test_gas_price0.py | 7 +- .../stSpecialTest/test_jumpdest_attack.py | 7 +- .../test_jumpdest_attackwith_jump.py | 7 +- .../stSpecialTest/test_make_money.py | 26 +- .../test_overflow_gas_make_money.py | 8 +- .../stSpecialTest/test_push32without_byte.py | 7 +- .../stSpecialTest/test_sha3_deja.py | 7 +- .../test_stack_depth_limit_sec.py | 8 +- .../stSpecialTest/test_tx_e1c174e2.py | 6 +- .../stStackTests/test_underflow_test.py | 2 +- .../stStaticCall/test_static_ab_acalls0.py | 6 +- .../stStaticCall/test_static_ab_acalls1.py | 6 +- .../stStaticCall/test_static_ab_acalls2.py | 6 +- .../test_static_ab_acalls_suicide0.py | 6 +- .../test_static_ab_acalls_suicide1.py | 2 +- .../test_static_call1024_balance_too_low.py | 9 +- .../test_static_call1024_balance_too_low2.py | 9 +- .../test_static_call1024_pre_calls.py | 9 +- .../test_static_call1024_pre_calls2.py | 6 +- .../test_static_call1024_pre_calls3.py | 9 +- .../test_static_call1_mb1024_calldepth.py | 9 +- .../stStaticCall/test_static_call50000.py | 26 +- .../test_static_call50000_ecrec.py | 6 +- .../test_static_call50000_identity.py | 6 +- .../test_static_call50000_identity2.py | 6 +- .../test_static_call50000_rip160.py | 6 +- ...test_static_call50000bytes_contract50_1.py | 32 +- ...test_static_call50000bytes_contract50_2.py | 32 +- ...test_static_call50000bytes_contract50_3.py | 32 +- ...e_consume_more_gas_then_transaction_has.py | 34 +- ...more_gas_on_depth2_then_transaction_has.py | 82 +- .../stStaticCall/test_static_call_basic.py | 42 +- .../test_static_call_change_revert.py | 38 +- ...ract_to_create_contract_and_call_it_oog.py | 10 +- ...ic_call_contract_to_create_contract_oog.py | 11 +- ...ntract_to_create_contract_oog_bonus_gas.py | 10 +- ...t_which_would_create_contract_if_called.py | 13 +- .../stStaticCall/test_static_call_create.py | 22 +- .../stStaticCall/test_static_call_create2.py | 10 +- .../stStaticCall/test_static_call_create3.py | 9 +- .../test_static_call_ecrecover0.py | 12 +- .../test_static_call_ecrecover0_0input.py | 2 +- ...c_call_ecrecover0_complete_return_value.py | 11 +- .../test_static_call_ecrecover0_gas2999.py | 7 +- .../test_static_call_ecrecover0_gas3000.py | 12 +- .../test_static_call_ecrecover0_no_gas.py | 8 +- ...all_ecrecover0_overlapping_input_output.py | 12 +- .../test_static_call_ecrecover1.py | 7 +- .../test_static_call_ecrecover2.py | 7 +- .../test_static_call_ecrecover3.py | 2 +- .../test_static_call_ecrecover80.py | 7 +- ...test_static_call_ecrecover_check_length.py | 12 +- ...tic_call_ecrecover_check_length_wrong_v.py | 2 +- .../test_static_call_ecrecover_h_prefixed0.py | 2 +- .../test_static_call_ecrecover_r_prefixed0.py | 7 +- .../test_static_call_ecrecover_s_prefixed0.py | 2 +- .../test_static_call_ecrecover_v_prefixed0.py | 12 +- ...st_static_call_goes_oog_on_second_level.py | 45 +- ...t_static_call_goes_oog_on_second_level2.py | 46 +- .../test_static_call_identitiy_1.py | 7 +- ...st_static_call_identity_1_nonzero_value.py | 2 +- .../test_static_call_identity_2.py | 2 +- .../test_static_call_identity_3.py | 2 +- .../test_static_call_identity_4.py | 2 +- .../test_static_call_identity_4_gas17.py | 2 +- .../test_static_call_identity_4_gas18.py | 2 +- .../test_static_call_identity_5.py | 2 +- .../test_static_call_lose_gas_oog.py | 9 +- .../test_static_call_one_v_call_suicide.py | 6 +- ...t_static_call_oog_additional_gas_costs1.py | 7 +- ...ic_call_oog_additional_gas_costs2_paris.py | 12 +- .../stStaticCall/test_static_call_output1.py | 20 +- .../stStaticCall/test_static_call_output2.py | 20 +- .../stStaticCall/test_static_call_output3.py | 20 +- .../test_static_call_output3_fail.py | 20 +- .../test_static_call_output3partial.py | 20 +- .../test_static_call_output3partial_fail.py | 20 +- .../test_static_call_recursive_bomb0.py | 42 +- ...l_recursive_bomb0_oog_at_max_call_depth.py | 46 +- .../test_static_call_recursive_bomb1.py | 42 +- .../test_static_call_recursive_bomb2.py | 42 +- .../test_static_call_recursive_bomb3.py | 42 +- .../test_static_call_recursive_bomb_log.py | 46 +- .../test_static_call_recursive_bomb_log2.py | 44 +- ...est_static_call_recursive_bomb_pre_call.py | 6 +- ...st_static_call_recursive_bomb_pre_call2.py | 42 +- .../test_static_call_ripemd160_1.py | 2 +- .../test_static_call_ripemd160_2.py | 2 +- .../test_static_call_ripemd160_3.py | 2 +- ...test_static_call_ripemd160_3_postfixed0.py | 2 +- .../test_static_call_ripemd160_3_prefixed0.py | 2 +- .../test_static_call_ripemd160_4.py | 2 +- .../test_static_call_ripemd160_4_gas719.py | 2 +- .../test_static_call_ripemd160_5.py | 2 +- .../stStaticCall/test_static_call_sha256_1.py | 2 +- ...test_static_call_sha256_1_nonzero_value.py | 2 +- .../stStaticCall/test_static_call_sha256_2.py | 2 +- .../stStaticCall/test_static_call_sha256_3.py | 2 +- .../test_static_call_sha256_3_postfix0.py | 2 +- .../test_static_call_sha256_3_prefix0.py | 2 +- .../stStaticCall/test_static_call_sha256_4.py | 2 +- .../test_static_call_sha256_4_gas99.py | 2 +- .../stStaticCall/test_static_call_sha256_5.py | 2 +- ..._static_call_to_call_code_op_code_check.py | 2 +- .../test_static_call_to_call_op_code_check.py | 2 +- ...t_static_call_to_del_call_op_code_check.py | 2 +- .../test_static_call_to_name_registrator0.py | 40 +- .../test_static_call_to_return1.py | 26 +- ...est_static_call_to_static_op_code_check.py | 2 +- .../test_static_call_value_inherit.py | 28 +- ...est_static_call_value_inherit_from_call.py | 31 +- .../test_static_call_with_high_value.py | 26 +- ...static_call_with_high_value_and_gas_oog.py | 36 +- ...all_with_high_value_and_oo_gat_tx_level.py | 26 +- ...static_call_with_high_value_oo_gin_call.py | 26 +- .../test_static_call_zero_v_call_suicide.py | 6 +- .../stStaticCall/test_static_callcall_00.py | 116 +- .../test_static_callcall_00_ooge.py | 104 +- .../test_static_callcall_00_ooge_1.py | 102 +- .../test_static_callcall_00_ooge_2.py | 102 +- .../test_static_callcall_00_suicide_end.py | 22 +- .../test_static_callcallcall_000.py | 130 +- .../test_static_callcallcall_000_ooge.py | 130 +- ...test_static_callcallcall_000_oogm_after.py | 62 +- ...est_static_callcallcall_000_oogm_after2.py | 62 +- ...est_static_callcallcall_000_oogm_before.py | 78 +- ...est_static_callcallcall_000_suicide_end.py | 22 +- ..._static_callcallcall_000_suicide_middle.py | 22 +- ...test_static_callcallcall_abcb_recursive.py | 6 +- .../test_static_callcallcallcode_001.py | 132 +- .../test_static_callcallcallcode_001_2.py | 126 +- .../test_static_callcallcallcode_001_ooge.py | 74 +- ...test_static_callcallcallcode_001_ooge_2.py | 136 +- ..._static_callcallcallcode_001_oogm_after.py | 48 +- ...static_callcallcallcode_001_oogm_after2.py | 52 +- ...tatic_callcallcallcode_001_oogm_after_2.py | 50 +- ...tatic_callcallcallcode_001_oogm_after_3.py | 52 +- ...static_callcallcallcode_001_oogm_before.py | 74 +- ...tatic_callcallcallcode_001_oogm_before2.py | 80 +- ...static_callcallcallcode_001_suicide_end.py | 22 +- ...tatic_callcallcallcode_001_suicide_end2.py | 22 +- ...tic_callcallcallcode_001_suicide_middle.py | 22 +- ...ic_callcallcallcode_001_suicide_middle2.py | 22 +- ..._static_callcallcallcode_abcb_recursive.py | 6 +- ...static_callcallcallcode_abcb_recursive2.py | 6 +- .../test_static_callcallcode_01_2.py | 78 +- .../test_static_callcallcode_01_ooge_2.py | 48 +- ...test_static_callcallcode_01_suicide_end.py | 22 +- ...est_static_callcallcode_01_suicide_end2.py | 22 +- .../test_static_callcallcodecall_010.py | 60 +- .../test_static_callcallcodecall_010_2.py | 46 +- .../test_static_callcallcodecall_010_ooge.py | 70 +- ...test_static_callcallcodecall_010_ooge_2.py | 82 +- ..._static_callcallcodecall_010_oogm_after.py | 66 +- ...static_callcallcodecall_010_oogm_after2.py | 78 +- ...tatic_callcallcodecall_010_oogm_after_2.py | 66 +- ...tatic_callcallcodecall_010_oogm_after_3.py | 50 +- ...static_callcallcodecall_010_oogm_before.py | 76 +- ...tatic_callcallcodecall_010_oogm_before2.py | 52 +- ...static_callcallcodecall_010_suicide_end.py | 22 +- ...tatic_callcallcodecall_010_suicide_end2.py | 22 +- ...tic_callcallcodecall_010_suicide_middle.py | 22 +- ...ic_callcallcodecall_010_suicide_middle2.py | 22 +- .../test_static_callcallcodecallcode_011.py | 60 +- .../test_static_callcallcodecallcode_011_2.py | 54 +- ...st_static_callcallcodecallcode_011_ooge.py | 80 +- ..._static_callcallcodecallcode_011_ooge_2.py | 60 +- ...tic_callcallcodecallcode_011_oogm_after.py | 44 +- ...ic_callcallcodecallcode_011_oogm_after2.py | 70 +- ...c_callcallcodecallcode_011_oogm_after_1.py | 58 +- ...c_callcallcodecallcode_011_oogm_after_2.py | 44 +- ...ic_callcallcodecallcode_011_oogm_before.py | 58 +- ...c_callcallcodecallcode_011_oogm_before2.py | 84 +- ...ic_callcallcodecallcode_011_suicide_end.py | 22 +- ...c_callcallcodecallcode_011_suicide_end2.py | 22 +- ...callcallcodecallcode_011_suicide_middle.py | 22 +- ...allcallcodecallcode_011_suicide_middle2.py | 22 +- .../test_static_callcodecall_10.py | 49 +- .../test_static_callcodecall_10_2.py | 51 +- .../test_static_callcodecall_10_ooge.py | 48 +- .../test_static_callcodecall_10_ooge_2.py | 50 +- ...test_static_callcodecall_10_suicide_end.py | 38 +- ...est_static_callcodecall_10_suicide_end2.py | 22 +- .../test_static_callcodecallcall_100.py | 68 +- .../test_static_callcodecallcall_100_2.py | 66 +- .../test_static_callcodecallcall_100_ooge.py | 86 +- .../test_static_callcodecallcall_100_ooge2.py | 82 +- ..._static_callcodecallcall_100_oogm_after.py | 62 +- ...static_callcodecallcall_100_oogm_after2.py | 50 +- ...tatic_callcodecallcall_100_oogm_after_2.py | 62 +- ...tatic_callcodecallcall_100_oogm_after_3.py | 64 +- ...static_callcodecallcall_100_oogm_before.py | 56 +- ...tatic_callcodecallcall_100_oogm_before2.py | 64 +- ...static_callcodecallcall_100_suicide_end.py | 22 +- ...tatic_callcodecallcall_100_suicide_end2.py | 22 +- ...tic_callcodecallcall_100_suicide_middle.py | 22 +- ...ic_callcodecallcall_100_suicide_middle2.py | 22 +- .../test_static_callcodecallcallcode_101.py | 60 +- .../test_static_callcodecallcallcode_101_2.py | 52 +- ...st_static_callcodecallcallcode_101_ooge.py | 76 +- ..._static_callcodecallcallcode_101_ooge_2.py | 80 +- ...tic_callcodecallcallcode_101_oogm_after.py | 62 +- ...ic_callcodecallcallcode_101_oogm_after2.py | 76 +- ...c_callcodecallcallcode_101_oogm_after_1.py | 114 +- ...c_callcodecallcallcode_101_oogm_after_3.py | 138 +- ...ic_callcodecallcallcode_101_oogm_before.py | 86 +- ...c_callcodecallcallcode_101_oogm_before2.py | 88 +- ...ic_callcodecallcallcode_101_suicide_end.py | 22 +- ...c_callcodecallcallcode_101_suicide_end2.py | 22 +- ...callcodecallcallcode_101_suicide_middle.py | 22 +- ...allcodecallcallcode_101_suicide_middle2.py | 22 +- .../test_static_callcodecallcodecall_110.py | 60 +- .../test_static_callcodecallcodecall_1102.py | 70 +- .../test_static_callcodecallcodecall_110_2.py | 62 +- ...st_static_callcodecallcodecall_110_ooge.py | 76 +- ...t_static_callcodecallcodecall_110_ooge2.py | 80 +- ...tic_callcodecallcodecall_110_oogm_after.py | 70 +- ...ic_callcodecallcodecall_110_oogm_after2.py | 72 +- ...c_callcodecallcodecall_110_oogm_after_2.py | 70 +- ...c_callcodecallcodecall_110_oogm_after_3.py | 72 +- ...ic_callcodecallcodecall_110_oogm_before.py | 78 +- ...c_callcodecallcodecall_110_oogm_before2.py | 82 +- ...ic_callcodecallcodecall_110_suicide_end.py | 22 +- ...c_callcodecallcodecall_110_suicide_end2.py | 22 +- ...callcodecallcodecall_110_suicide_middle.py | 22 +- ...allcodecallcodecall_110_suicide_middle2.py | 22 +- ...allcodecallcodecallcode_111_suicide_end.py | 22 +- .../test_static_calldelcode_01.py | 49 +- .../test_static_calldelcode_01_ooge.py | 48 +- .../test_static_callto_return2.py | 22 +- .../test_static_check_call_cost_oog.py | 26 +- .../test_static_check_opcodes3.py | 48 +- .../test_static_check_opcodes4.py | 14 +- ..._ask_more_gas_then_transaction_provided.py | 67 +- ...nt_leave_empty_contract_via_transaction.py | 39 +- ...tic_create_contract_suicide_during_init.py | 12 +- ...cide_during_init_then_store_then_return.py | 10 +- ...contract_suicide_during_init_with_value.py | 8 +- ..._create_empty_contract_and_call_it_0wei.py | 8 +- ..._contract_with_storage_and_call_it_0wei.py | 8 +- ..._that_ask_fore_gas_then_trabsaction_has.py | 6 +- ..._static_internal_call_hitting_gas_limit.py | 38 +- ...static_internal_call_hitting_gas_limit2.py | 38 +- ...t_static_internal_call_store_clears_oog.py | 8 +- .../test_static_log0_empty_mem.py | 24 +- ...test_static_log0_log_mem_start_too_high.py | 40 +- .../test_static_log0_log_memsize_too_high.py | 40 +- .../test_static_log0_log_memsize_zero.py | 34 +- .../test_static_log0_non_empty_mem.py | 34 +- ...static_log0_non_empty_mem_log_mem_size1.py | 34 +- ...empty_mem_log_mem_size1_log_mem_start31.py | 34 +- .../test_static_log1_empty_mem.py | 24 +- ...test_static_log1_log_mem_start_too_high.py | 42 +- .../test_static_log1_log_memsize_too_high.py | 42 +- .../test_static_log1_log_memsize_zero.py | 34 +- .../test_static_log1_max_topic.py | 42 +- .../stStaticCall/test_static_log_caller.py | 6 +- ...est_static_loop_calls_depth_then_revert.py | 6 +- ...st_static_loop_calls_depth_then_revert2.py | 6 +- ...st_static_loop_calls_depth_then_revert3.py | 11 +- .../test_static_loop_calls_then_revert.py | 49 +- .../stStaticCall/test_static_make_money.py | 26 +- .../test_static_post_to_return1.py | 22 +- .../test_static_raw_call_gas_ask.py | 36 +- .../stStaticCall/test_static_refund_call_a.py | 26 +- ...tatic_refund_call_to_suicide_no_storage.py | 6 +- ...est_static_refund_call_to_suicide_twice.py | 6 +- .../stStaticCall/test_static_return50000_2.py | 51 +- .../stStaticCall/test_static_return_test.py | 28 +- .../stStaticCall/test_static_revert_depth2.py | 80 +- .../test_static_revert_opcode_calls.py | 24 +- ...st_static_zero_value_suicide_oog_revert.py | 6 +- ...call_to_precompile_from_called_contract.py | 46 +- ...precompile_from_contract_initialization.py | 4 +- ...aticcall_to_precompile_from_transaction.py | 4 +- ...call_to_precompile_from_called_contract.py | 208 +- ...precompile_from_contract_initialization.py | 4 +- ...gatecall_to_precompile_from_transaction.py | 138 +- .../stSystemOperationsTest/test_ab_acalls0.py | 6 +- .../stSystemOperationsTest/test_ab_acalls1.py | 6 +- .../stSystemOperationsTest/test_ab_acalls2.py | 6 +- .../stSystemOperationsTest/test_ab_acalls3.py | 6 +- .../test_ab_acalls_suicide0.py | 6 +- .../test_ab_acalls_suicide1.py | 2 +- .../test_balance_input_address_too_big.py | 7 +- .../test_call_recursive_bomb0.py | 40 +- ...l_recursive_bomb0_oog_at_max_call_depth.py | 7 +- .../test_call_recursive_bomb1.py | 7 +- .../test_call_recursive_bomb2.py | 7 +- .../test_call_recursive_bomb3.py | 7 +- .../test_call_recursive_bomb_log.py | 40 +- .../test_call_recursive_bomb_log2.py | 40 +- .../test_call_to_name_registrator0.py | 40 +- ...o_name_registrator_address_too_big_left.py | 8 +- ..._name_registrator_address_too_big_right.py | 8 +- ...trator_mem_oog_and_insufficient_balance.py | 40 +- ...ll_to_name_registrator_not_much_memory0.py | 40 +- ...ll_to_name_registrator_not_much_memory1.py | 40 +- ...est_call_to_name_registrator_out_of_gas.py | 40 +- ...ll_to_name_registrator_too_much_memory0.py | 40 +- ...ll_to_name_registrator_too_much_memory1.py | 40 +- ...ll_to_name_registrator_too_much_memory2.py | 40 +- .../test_call_to_return1.py | 28 +- .../test_call_to_return1_for_dynamic_jump0.py | 28 +- .../test_call_to_return1_for_dynamic_jump1.py | 28 +- .../stSystemOperationsTest/test_call_value.py | 7 +- .../test_callcode_to0.py | 7 +- .../test_callcode_to_name_registrator0.py | 40 +- ...to_name_registrator_addres_too_big_left.py | 8 +- ...o_name_registrator_addres_too_big_right.py | 8 +- .../test_callcode_to_return1.py | 28 +- .../test_caller_account_balance.py | 2 +- .../test_callto_return2.py | 32 +- .../test_create_hash_collision.py | 2 +- .../test_create_name_registrator.py | 12 +- ..._name_registrator_oog_mem_expansion_oov.py | 7 +- ...e_name_registrator_out_of_memory_bonds0.py | 7 +- ...e_name_registrator_out_of_memory_bonds1.py | 7 +- ..._create_name_registrator_value_too_high.py | 7 +- .../test_create_name_registrator_zero_mem.py | 12 +- .../test_create_name_registrator_zero_mem2.py | 12 +- ...ate_name_registrator_zero_mem_expansion.py | 12 +- .../test_create_with_invalid_opcode.py | 7 +- .../test_current_account_balance.py | 2 +- .../test_double_selfdestruct_touch_paris.py | 38 +- .../test_post_to_return1.py | 30 +- .../stSystemOperationsTest/test_return0.py | 7 +- .../stSystemOperationsTest/test_return1.py | 7 +- .../stSystemOperationsTest/test_return2.py | 7 +- .../test_suicide_address.py | 7 +- .../test_suicide_caller.py | 13 +- ...test_suicide_caller_addres_too_big_left.py | 8 +- ...est_suicide_caller_addres_too_big_right.py | 2 +- .../test_suicide_not_existing_account.py | 2 +- .../test_suicide_origin.py | 13 +- .../test_suicide_send_ether_post_death.py | 7 +- .../test_suicide_send_ether_to_me.py | 7 +- .../test_test_name_registrator.py | 2 +- .../test_sstore_combinations_initial.py | 251 - .../test_contract_store_clears_oog.py | 7 +- .../test_contract_store_clears_success.py | 7 +- .../test_create_message_reverted.py | 7 +- .../test_high_gas_price_paris.py | 10 +- .../test_internal_call_hitting_gas_limit.py | 22 +- ...internal_call_hitting_gas_limit_success.py | 22 +- .../test_internal_call_store_clears_oog.py | 10 +- ...test_internal_call_store_clears_success.py | 10 +- .../stTransactionTest/test_no_src_account.py | 5 +- .../test_no_src_account1559.py | 5 +- .../test_no_src_account_create.py | 5 +- .../test_no_src_account_create1559.py | 5 +- .../test_overflow_gas_require2.py | 10 +- .../test_point_at_infinity_ec_recover.py | 2 +- ...ears_and_internal_call_store_clears_oog.py | 10 +- ..._and_internal_call_store_clears_success.py | 10 +- .../test_store_gas_on_create.py | 6 +- ...nternal_call_suicides_bonus_gas_at_call.py | 16 +- ..._call_suicides_bonus_gas_at_call_failed.py | 23 +- ...nd_send_money_to_itself_ether_destroyed.py | 6 +- .../test_suicides_stop_after_suicide.py | 21 +- .../test_transaction_to_itself.py | 8 +- .../test_delegatecall_after_transition.py | 38 +- .../test_delegatecall_at_transition.py | 38 +- .../test_delegatecall_before_transition.py | 38 +- .../test_day_limit_construction.py | 2 +- .../test_day_limit_construction_oog.py | 7 +- .../test_day_limit_construction_partial.py | 2 +- .../test_day_limit_reset_spent_today.py | 4 +- .../test_day_limit_set_daily_limit.py | 4 +- .../test_day_limit_set_daily_limit_no_data.py | 4 +- .../test_multi_owned_add_owner.py | 6 +- .../test_multi_owned_add_owner_add_myself.py | 6 +- .../test_multi_owned_change_owner.py | 4 +- ...multi_owned_change_owner_from_not_owner.py | 6 +- ...st_multi_owned_change_owner_no_argument.py | 6 +- ...st_multi_owned_change_owner_to_is_owner.py | 6 +- ...test_multi_owned_change_requirement_to0.py | 6 +- ...test_multi_owned_change_requirement_to1.py | 6 +- ...test_multi_owned_change_requirement_to2.py | 6 +- .../test_multi_owned_construction_correct.py | 2 +- ...multi_owned_construction_not_enough_gas.py | 8 +- .../test_multi_owned_is_owner_false.py | 11 +- .../test_multi_owned_is_owner_true.py | 6 +- .../test_multi_owned_remove_owner.py | 4 +- ...t_multi_owned_remove_owner_by_non_owner.py | 4 +- .../test_multi_owned_remove_owner_my_self.py | 6 +- ...i_owned_remove_owner_owner_is_not_owner.py | 6 +- .../test_multi_owned_revoke_nothing.py | 6 +- ...et_add_owner_remove_pending_transaction.py | 8 +- ...change_owner_remove_pending_transaction.py | 6 +- ..._requirement_remove_pending_transaction.py | 8 +- .../stWalletTest/test_wallet_confirm.py | 8 +- .../stWalletTest/test_wallet_construction.py | 2 +- .../test_wallet_construction_partial.py | 2 +- .../stWalletTest/test_wallet_default.py | 11 +- .../test_wallet_default_with_out_value.py | 11 +- ...et_execute_over_daily_limit_multi_owner.py | 4 +- ...execute_over_daily_limit_only_one_owner.py | 4 +- ...ute_over_daily_limit_only_one_owner_new.py | 4 +- .../test_wallet_execute_under_daily_limit.py | 4 +- .../stWalletTest/test_wallet_kill.py | 4 +- .../test_wallet_kill_not_by_owner.py | 12 +- .../test_wallet_kill_to_wallet.py | 4 +- ...remove_owner_remove_pending_transaction.py | 6 +- .../test_zero_value_call_to_empty_paris.py | 12 +- ...est_zero_value_call_to_non_zero_balance.py | 12 +- ...ero_value_call_to_one_storage_key_paris.py | 2 +- ...test_zero_value_callcode_to_empty_paris.py | 12 +- ...zero_value_callcode_to_non_zero_balance.py | 12 +- ...value_callcode_to_one_storage_key_paris.py | 2 +- ..._zero_value_delegatecall_to_empty_paris.py | 12 +- ..._value_delegatecall_to_non_zero_balance.py | 12 +- ...e_delegatecall_to_one_storage_key_paris.py | 2 +- .../test_zero_value_suicide_to_empty_paris.py | 2 +- ..._zero_value_suicide_to_non_zero_balance.py | 2 +- ..._value_suicide_to_one_storage_key_paris.py | 2 +- ...ansaction_cal_lwith_data_to_empty_paris.py | 10 +- ...tion_cal_lwith_data_to_non_zero_balance.py | 10 +- ...o_value_transaction_call_to_empty_paris.py | 10 +- ...ue_transaction_call_to_non_zero_balance.py | 10 +- .../stZeroKnowledge/test_pairing_test.py | 9 +- .../vmArithmeticTest/test_add.py | 2 +- .../vmArithmeticTest/test_addmod.py | 2 +- .../vmArithmeticTest/test_arith.py | 2 +- .../vmArithmeticTest/test_div.py | 6 +- .../vmArithmeticTest/test_div_by_zero.py | 7 +- .../vmArithmeticTest/test_exp.py | 2 +- .../vmArithmeticTest/test_exp_power2.py | 2 +- .../vmArithmeticTest/test_exp_power256.py | 2 +- .../test_exp_power256_of256.py | 2 +- .../vmArithmeticTest/test_fib.py | 7 +- .../vmArithmeticTest/test_mod.py | 2 +- .../vmArithmeticTest/test_mul.py | 2 +- .../vmArithmeticTest/test_mulmod.py | 6 +- .../vmArithmeticTest/test_not.py | 2 +- .../vmArithmeticTest/test_sdiv.py | 2 +- .../vmArithmeticTest/test_signextend.py | 2 +- .../vmArithmeticTest/test_smod.py | 2 +- .../vmArithmeticTest/test_sub.py | 2 +- .../vmBitwiseLogicOperation/test_and.py | 2 +- .../vmBitwiseLogicOperation/test_byte.py | 2 +- .../vmBitwiseLogicOperation/test_eq.py | 6 +- .../vmBitwiseLogicOperation/test_gt.py | 6 +- .../vmBitwiseLogicOperation/test_iszero.py | 6 +- .../vmBitwiseLogicOperation/test_lt.py | 6 +- .../vmBitwiseLogicOperation/test_not.py | 2 +- .../vmBitwiseLogicOperation/test_or.py | 2 +- .../vmBitwiseLogicOperation/test_sgt.py | 6 +- .../vmBitwiseLogicOperation/test_slt.py | 6 +- .../vmBitwiseLogicOperation/test_xor.py | 2 +- .../vmIOandFlowOperations/test_codecopy.py | 34 +- .../vmIOandFlowOperations/test_gas.py | 6 +- .../vmIOandFlowOperations/test_jump.py | 6 +- .../test_jump_to_push.py | 122 +- .../vmIOandFlowOperations/test_jumpi.py | 2 +- .../test_loop_stacklimit.py | 6 +- .../test_loops_conditionals.py | 6 +- .../vmIOandFlowOperations/test_mload.py | 2 +- .../vmIOandFlowOperations/test_msize.py | 6 +- .../vmIOandFlowOperations/test_mstore.py | 2 +- .../vmIOandFlowOperations/test_mstore8.py | 2 +- .../vmIOandFlowOperations/test_pc.py | 6 +- .../vmIOandFlowOperations/test_pop.py | 6 +- .../vmIOandFlowOperations/test_return.py | 38 +- .../test_sstore_sload.py | 6 +- tests/ported_static/vmLogTest/test_log0.py | 6 +- tests/ported_static/vmLogTest/test_log1.py | 6 +- tests/ported_static/vmLogTest/test_log2.py | 6 +- tests/ported_static/vmLogTest/test_log3.py | 6 +- tests/ported_static/vmLogTest/test_log4.py | 6 +- .../ported_static/vmTests/test_block_info.py | 12 +- tests/ported_static/vmTests/test_env_info.py | 16 +- tests/ported_static/vmTests/test_random.py | 6 +- tests/ported_static/vmTests/test_sha3.py | 2 +- tests/ported_static/vmTests/test_suicide.py | 2 +- 1468 files changed, 20341 insertions(+), 26934 deletions(-) delete mode 100644 tests/ported_static/stTimeConsuming/test_sstore_combinations_initial.py diff --git a/tests/ported_static/stArgsZeroOneBalance/test_add_non_const.py b/tests/ported_static/stArgsZeroOneBalance/test_add_non_const.py index dc88ee7d6a4..0a24f5ffbc1 100644 --- a/tests/ported_static/stArgsZeroOneBalance/test_add_non_const.py +++ b/tests/ported_static/stArgsZeroOneBalance/test_add_non_const.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -58,9 +57,7 @@ def test_add_non_const( ) -> None: """Test_add_non_const.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -85,7 +82,6 @@ def test_add_non_const( nonce=0, address=Address(0xF1722FE346FA35E045DE07E47CF6AF9BAE8ADE0A), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stArgsZeroOneBalance/test_addmod_non_const.py b/tests/ported_static/stArgsZeroOneBalance/test_addmod_non_const.py index 5ece0a6d078..fae816dfd1e 100644 --- a/tests/ported_static/stArgsZeroOneBalance/test_addmod_non_const.py +++ b/tests/ported_static/stArgsZeroOneBalance/test_addmod_non_const.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -58,9 +57,7 @@ def test_addmod_non_const( ) -> None: """Test_addmod_non_const.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -86,7 +83,6 @@ def test_addmod_non_const( nonce=0, address=Address(0x92D2FC80312ACD8C37857696D2224AF18CE6F966), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stArgsZeroOneBalance/test_and_non_const.py b/tests/ported_static/stArgsZeroOneBalance/test_and_non_const.py index 6aa34d3742e..8eb6f763863 100644 --- a/tests/ported_static/stArgsZeroOneBalance/test_and_non_const.py +++ b/tests/ported_static/stArgsZeroOneBalance/test_and_non_const.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -58,9 +57,7 @@ def test_and_non_const( ) -> None: """Test_and_non_const.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -85,7 +82,6 @@ def test_and_non_const( nonce=0, address=Address(0x4C26357E0D164B702BCEB18690FC742EE1D36913), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stArgsZeroOneBalance/test_balance_non_const.py b/tests/ported_static/stArgsZeroOneBalance/test_balance_non_const.py index 047cbe231ed..ae940bbaa03 100644 --- a/tests/ported_static/stArgsZeroOneBalance/test_balance_non_const.py +++ b/tests/ported_static/stArgsZeroOneBalance/test_balance_non_const.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -58,9 +57,7 @@ def test_balance_non_const( ) -> None: """Test_balance_non_const.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -86,7 +83,6 @@ def test_balance_non_const( nonce=0, address=Address(0xEE6A324B2ECE5EACDF881ABFDCC62B5361D0FB50), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stArgsZeroOneBalance/test_byte_non_const.py b/tests/ported_static/stArgsZeroOneBalance/test_byte_non_const.py index 22f411f7fc8..544001d697d 100644 --- a/tests/ported_static/stArgsZeroOneBalance/test_byte_non_const.py +++ b/tests/ported_static/stArgsZeroOneBalance/test_byte_non_const.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -58,9 +57,7 @@ def test_byte_non_const( ) -> None: """Test_byte_non_const.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -85,7 +82,6 @@ def test_byte_non_const( nonce=0, address=Address(0x86D606901085BA78C64D2E0B16831E6AFD89DE2D), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stArgsZeroOneBalance/test_call_non_const.py b/tests/ported_static/stArgsZeroOneBalance/test_call_non_const.py index 50d5d6e71eb..a8e915e499a 100644 --- a/tests/ported_static/stArgsZeroOneBalance/test_call_non_const.py +++ b/tests/ported_static/stArgsZeroOneBalance/test_call_non_const.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -58,9 +57,7 @@ def test_call_non_const( ) -> None: """Test_call_non_const.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -104,7 +101,6 @@ def test_call_non_const( nonce=0, address=Address(0x7D7E1645AF7DF916DA558F0695E9DEDD23B1215E), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stArgsZeroOneBalance/test_callcode_non_const.py b/tests/ported_static/stArgsZeroOneBalance/test_callcode_non_const.py index 00e40277640..e24b3d5f963 100644 --- a/tests/ported_static/stArgsZeroOneBalance/test_callcode_non_const.py +++ b/tests/ported_static/stArgsZeroOneBalance/test_callcode_non_const.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -58,9 +57,7 @@ def test_callcode_non_const( ) -> None: """Test_callcode_non_const.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -104,7 +101,6 @@ def test_callcode_non_const( nonce=0, address=Address(0x443A994E18105C3EA686D3931729A1AC3D8FDD93), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stArgsZeroOneBalance/test_calldatacopy_non_const.py b/tests/ported_static/stArgsZeroOneBalance/test_calldatacopy_non_const.py index cc1f0bc30c9..9a0b8f9f9c2 100644 --- a/tests/ported_static/stArgsZeroOneBalance/test_calldatacopy_non_const.py +++ b/tests/ported_static/stArgsZeroOneBalance/test_calldatacopy_non_const.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -70,9 +69,7 @@ def test_calldatacopy_non_const( ) -> None: """Test_calldatacopy_non_const.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -101,7 +98,6 @@ def test_calldatacopy_non_const( nonce=0, address=Address(0x444C2681920E1105C9104FB32249DDBB41CBA4A0), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stArgsZeroOneBalance/test_calldataload_non_const.py b/tests/ported_static/stArgsZeroOneBalance/test_calldataload_non_const.py index 0f521dfd5c0..dc0f8b82b2e 100644 --- a/tests/ported_static/stArgsZeroOneBalance/test_calldataload_non_const.py +++ b/tests/ported_static/stArgsZeroOneBalance/test_calldataload_non_const.py @@ -83,6 +83,7 @@ def test_calldataload_non_const( gas_limit=1000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { [[ 0 ]](CALLDATALOAD (BALANCE )) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -98,7 +99,6 @@ def test_calldataload_non_const( nonce=0, address=Address(0x148F97630D3668441F1A33A5E509F268B64F998F), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stArgsZeroOneBalance/test_codecopy_non_const.py b/tests/ported_static/stArgsZeroOneBalance/test_codecopy_non_const.py index 0a91590d3ba..c097c5f467e 100644 --- a/tests/ported_static/stArgsZeroOneBalance/test_codecopy_non_const.py +++ b/tests/ported_static/stArgsZeroOneBalance/test_codecopy_non_const.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -58,9 +57,7 @@ def test_codecopy_non_const( ) -> None: """Test_codecopy_non_const.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -89,7 +86,6 @@ def test_codecopy_non_const( nonce=0, address=Address(0xEDD4D7CDACB700CA3E28F8DDBCFB6AAC31F64925), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stArgsZeroOneBalance/test_create_non_const.py b/tests/ported_static/stArgsZeroOneBalance/test_create_non_const.py index 07f20342560..5106ec78a51 100644 --- a/tests/ported_static/stArgsZeroOneBalance/test_create_non_const.py +++ b/tests/ported_static/stArgsZeroOneBalance/test_create_non_const.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -15,6 +14,7 @@ Environment, StateTestFiller, Transaction, + compute_create_address, ) from execution_testing.forks import Fork from execution_testing.specs.static_state.expect_section import ( @@ -59,9 +59,7 @@ def test_create_non_const( """Test_create_non_const.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) contract_0 = Address(0x095E7BAEA6A6C7C4C2DFEB977EFAC326AF552D87) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -93,7 +91,6 @@ def test_create_non_const( nonce=0, address=Address(0x095E7BAEA6A6C7C4C2DFEB977EFAC326AF552D87), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) expect_entries_: list[dict] = [ { @@ -101,7 +98,9 @@ def test_create_non_const( "network": [">=Cancun"], "result": { contract_0: Account( - storage={0: 0xD2571607E241ECF590ED94B12D87C94BABE36DB6}, + storage={ + 0: compute_create_address(address=contract_0, nonce=0), + }, ), }, }, @@ -110,7 +109,9 @@ def test_create_non_const( "network": [">=Cancun"], "result": { contract_0: Account( - storage={0: 0xD2571607E241ECF590ED94B12D87C94BABE36DB6}, + storage={ + 0: compute_create_address(address=contract_0, nonce=0), + }, ), }, }, diff --git a/tests/ported_static/stArgsZeroOneBalance/test_delegatecall_non_const.py b/tests/ported_static/stArgsZeroOneBalance/test_delegatecall_non_const.py index 717e9d7461c..2fc22d2747d 100644 --- a/tests/ported_static/stArgsZeroOneBalance/test_delegatecall_non_const.py +++ b/tests/ported_static/stArgsZeroOneBalance/test_delegatecall_non_const.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -58,9 +57,7 @@ def test_delegatecall_non_const( ) -> None: """Test_delegatecall_non_const.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -101,7 +98,6 @@ def test_delegatecall_non_const( nonce=0, address=Address(0x365AAE42316E918DA716D904FE31EEA4134112C4), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stArgsZeroOneBalance/test_div_non_const.py b/tests/ported_static/stArgsZeroOneBalance/test_div_non_const.py index 5f14e9d6612..754da2814ab 100644 --- a/tests/ported_static/stArgsZeroOneBalance/test_div_non_const.py +++ b/tests/ported_static/stArgsZeroOneBalance/test_div_non_const.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -58,9 +57,7 @@ def test_div_non_const( ) -> None: """Test_div_non_const.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -85,7 +82,6 @@ def test_div_non_const( nonce=0, address=Address(0x61FD7E3E20CEEA9426C3021F589E9EB7754D486F), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stArgsZeroOneBalance/test_eq_non_const.py b/tests/ported_static/stArgsZeroOneBalance/test_eq_non_const.py index d13706a6429..09c30fc9052 100644 --- a/tests/ported_static/stArgsZeroOneBalance/test_eq_non_const.py +++ b/tests/ported_static/stArgsZeroOneBalance/test_eq_non_const.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -58,9 +57,7 @@ def test_eq_non_const( ) -> None: """Test_eq_non_const.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -85,7 +82,6 @@ def test_eq_non_const( nonce=0, address=Address(0x197F978175CEA58C57CFAB837CF028D4C8D12EF3), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stArgsZeroOneBalance/test_exp_non_const.py b/tests/ported_static/stArgsZeroOneBalance/test_exp_non_const.py index ac4fc485544..72f6aace5a0 100644 --- a/tests/ported_static/stArgsZeroOneBalance/test_exp_non_const.py +++ b/tests/ported_static/stArgsZeroOneBalance/test_exp_non_const.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -58,9 +57,7 @@ def test_exp_non_const( ) -> None: """Test_exp_non_const.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -85,7 +82,6 @@ def test_exp_non_const( nonce=0, address=Address(0xCFCD07426079DA1457676DE53F8DBE738C832D7F), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stArgsZeroOneBalance/test_extcodecopy_non_const.py b/tests/ported_static/stArgsZeroOneBalance/test_extcodecopy_non_const.py index 467dbb25bf4..1b0cd7e9c8c 100644 --- a/tests/ported_static/stArgsZeroOneBalance/test_extcodecopy_non_const.py +++ b/tests/ported_static/stArgsZeroOneBalance/test_extcodecopy_non_const.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -58,9 +57,7 @@ def test_extcodecopy_non_const( ) -> None: """Test_extcodecopy_non_const.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -92,7 +89,6 @@ def test_extcodecopy_non_const( nonce=0, address=Address(0xF7A7FBF01DBCFEFDFD9AE65E4892C576994F31BF), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stArgsZeroOneBalance/test_extcodesize_non_const.py b/tests/ported_static/stArgsZeroOneBalance/test_extcodesize_non_const.py index 09dd1a82bfb..e67e53ea57c 100644 --- a/tests/ported_static/stArgsZeroOneBalance/test_extcodesize_non_const.py +++ b/tests/ported_static/stArgsZeroOneBalance/test_extcodesize_non_const.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -58,9 +57,7 @@ def test_extcodesize_non_const( ) -> None: """Test_extcodesize_non_const.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -86,7 +83,6 @@ def test_extcodesize_non_const( nonce=0, address=Address(0x4CD5F424AC9E070C2A651452C5666CF8A05F27A7), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stArgsZeroOneBalance/test_gt_non_const.py b/tests/ported_static/stArgsZeroOneBalance/test_gt_non_const.py index 0f5c50be9a5..d8db68a6f82 100644 --- a/tests/ported_static/stArgsZeroOneBalance/test_gt_non_const.py +++ b/tests/ported_static/stArgsZeroOneBalance/test_gt_non_const.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -58,9 +57,7 @@ def test_gt_non_const( ) -> None: """Test_gt_non_const.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -85,7 +82,6 @@ def test_gt_non_const( nonce=0, address=Address(0xF5176EDE711CCF689D689BFCEBDAE4C04910517E), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stArgsZeroOneBalance/test_iszero_non_const.py b/tests/ported_static/stArgsZeroOneBalance/test_iszero_non_const.py index 0e8bbc2e666..dc4585cd190 100644 --- a/tests/ported_static/stArgsZeroOneBalance/test_iszero_non_const.py +++ b/tests/ported_static/stArgsZeroOneBalance/test_iszero_non_const.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -58,9 +57,7 @@ def test_iszero_non_const( ) -> None: """Test_iszero_non_const.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -84,7 +81,6 @@ def test_iszero_non_const( nonce=0, address=Address(0x2623813A00DFDC5BC378481671D8D9E38AD9956C), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stArgsZeroOneBalance/test_jump_non_const.py b/tests/ported_static/stArgsZeroOneBalance/test_jump_non_const.py index 3f2cc19767b..a7a6d0ed8b7 100644 --- a/tests/ported_static/stArgsZeroOneBalance/test_jump_non_const.py +++ b/tests/ported_static/stArgsZeroOneBalance/test_jump_non_const.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -58,9 +57,7 @@ def test_jump_non_const( ) -> None: """Test_jump_non_const.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -81,7 +78,6 @@ def test_jump_non_const( nonce=0, address=Address(0xA82AE24D0D34B26FCB664DACD3E18371C9315E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stArgsZeroOneBalance/test_jumpi_non_const.py b/tests/ported_static/stArgsZeroOneBalance/test_jumpi_non_const.py index 189ce2386ef..8ad626d763f 100644 --- a/tests/ported_static/stArgsZeroOneBalance/test_jumpi_non_const.py +++ b/tests/ported_static/stArgsZeroOneBalance/test_jumpi_non_const.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -58,9 +57,7 @@ def test_jumpi_non_const( ) -> None: """Test_jumpi_non_const.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -84,7 +81,6 @@ def test_jumpi_non_const( nonce=0, address=Address(0xEEF87925C20B97E4EE58E24DD39D7C09785362BA), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stArgsZeroOneBalance/test_log0_non_const.py b/tests/ported_static/stArgsZeroOneBalance/test_log0_non_const.py index 58db051b494..365c39eaccf 100644 --- a/tests/ported_static/stArgsZeroOneBalance/test_log0_non_const.py +++ b/tests/ported_static/stArgsZeroOneBalance/test_log0_non_const.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -58,9 +57,7 @@ def test_log0_non_const( ) -> None: """Test_log0_non_const.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -86,7 +83,6 @@ def test_log0_non_const( nonce=0, address=Address(0x39332A3856E9E6DBAEBCDBD67B72B3E7209FFCB2), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stArgsZeroOneBalance/test_log1_non_const.py b/tests/ported_static/stArgsZeroOneBalance/test_log1_non_const.py index b56919288b4..83826d6f6b3 100644 --- a/tests/ported_static/stArgsZeroOneBalance/test_log1_non_const.py +++ b/tests/ported_static/stArgsZeroOneBalance/test_log1_non_const.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -58,9 +57,7 @@ def test_log1_non_const( ) -> None: """Test_log1_non_const.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -89,7 +86,6 @@ def test_log1_non_const( nonce=0, address=Address(0x99914055ED765EA48582ACC6C8196D07835DA7D7), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stArgsZeroOneBalance/test_log2_non_const.py b/tests/ported_static/stArgsZeroOneBalance/test_log2_non_const.py index 3f62eda5c24..418cb6e8be0 100644 --- a/tests/ported_static/stArgsZeroOneBalance/test_log2_non_const.py +++ b/tests/ported_static/stArgsZeroOneBalance/test_log2_non_const.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -58,9 +57,7 @@ def test_log2_non_const( ) -> None: """Test_log2_non_const.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -90,7 +87,6 @@ def test_log2_non_const( nonce=0, address=Address(0x007631BF0FC6669FE93C41401498B2612BBF41CF), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stArgsZeroOneBalance/test_log3_non_const.py b/tests/ported_static/stArgsZeroOneBalance/test_log3_non_const.py index 0833cc82b95..4a34ed3a76c 100644 --- a/tests/ported_static/stArgsZeroOneBalance/test_log3_non_const.py +++ b/tests/ported_static/stArgsZeroOneBalance/test_log3_non_const.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -58,9 +57,7 @@ def test_log3_non_const( ) -> None: """Test_log3_non_const.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -93,7 +90,6 @@ def test_log3_non_const( nonce=0, address=Address(0x02724F6CB897BBC3E063A03633D2CE4E83DA8678), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stArgsZeroOneBalance/test_lt_non_const.py b/tests/ported_static/stArgsZeroOneBalance/test_lt_non_const.py index ae40ef0a737..34354330ff4 100644 --- a/tests/ported_static/stArgsZeroOneBalance/test_lt_non_const.py +++ b/tests/ported_static/stArgsZeroOneBalance/test_lt_non_const.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -58,9 +57,7 @@ def test_lt_non_const( ) -> None: """Test_lt_non_const.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -85,7 +82,6 @@ def test_lt_non_const( nonce=0, address=Address(0x2538BC735B54983A8F85ED92072DC2D0F07A2797), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stArgsZeroOneBalance/test_mload_non_const.py b/tests/ported_static/stArgsZeroOneBalance/test_mload_non_const.py index 9e87e6a1aa5..244fefd710b 100644 --- a/tests/ported_static/stArgsZeroOneBalance/test_mload_non_const.py +++ b/tests/ported_static/stArgsZeroOneBalance/test_mload_non_const.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -58,9 +57,7 @@ def test_mload_non_const( ) -> None: """Test_mload_non_const.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -86,7 +83,6 @@ def test_mload_non_const( nonce=0, address=Address(0x14DD543A6D90CE85F819B764F0F38AFC1DF76C48), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stArgsZeroOneBalance/test_mod_non_const.py b/tests/ported_static/stArgsZeroOneBalance/test_mod_non_const.py index c00fed827db..bda76416253 100644 --- a/tests/ported_static/stArgsZeroOneBalance/test_mod_non_const.py +++ b/tests/ported_static/stArgsZeroOneBalance/test_mod_non_const.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -58,9 +57,7 @@ def test_mod_non_const( ) -> None: """Test_mod_non_const.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -85,7 +82,6 @@ def test_mod_non_const( nonce=0, address=Address(0x1FD117CCD0620EDE7967DAF31CDD8926B5B4EF5C), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stArgsZeroOneBalance/test_mstore8_non_const.py b/tests/ported_static/stArgsZeroOneBalance/test_mstore8_non_const.py index 5c0c1874156..0447a50df4c 100644 --- a/tests/ported_static/stArgsZeroOneBalance/test_mstore8_non_const.py +++ b/tests/ported_static/stArgsZeroOneBalance/test_mstore8_non_const.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -58,9 +57,7 @@ def test_mstore8_non_const( ) -> None: """Test_mstore8_non_const.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -86,7 +83,6 @@ def test_mstore8_non_const( nonce=0, address=Address(0xF9BB7A1F4D45DD4F87D9C94A491CE7606BA41276), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stArgsZeroOneBalance/test_mstore_non_const.py b/tests/ported_static/stArgsZeroOneBalance/test_mstore_non_const.py index 695a50beda3..8b021a9b2cd 100644 --- a/tests/ported_static/stArgsZeroOneBalance/test_mstore_non_const.py +++ b/tests/ported_static/stArgsZeroOneBalance/test_mstore_non_const.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -58,9 +57,7 @@ def test_mstore_non_const( ) -> None: """Test_mstore_non_const.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -86,7 +83,6 @@ def test_mstore_non_const( nonce=0, address=Address(0x2737DAE115785244CFD2540FD942DC496B37CB71), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stArgsZeroOneBalance/test_mul_non_const.py b/tests/ported_static/stArgsZeroOneBalance/test_mul_non_const.py index 7c3111f0d28..76886038831 100644 --- a/tests/ported_static/stArgsZeroOneBalance/test_mul_non_const.py +++ b/tests/ported_static/stArgsZeroOneBalance/test_mul_non_const.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -58,9 +57,7 @@ def test_mul_non_const( ) -> None: """Test_mul_non_const.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -85,7 +82,6 @@ def test_mul_non_const( nonce=0, address=Address(0xB64C7A374E0080660379EBD421077AB5866CC9EF), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stArgsZeroOneBalance/test_mulmod_non_const.py b/tests/ported_static/stArgsZeroOneBalance/test_mulmod_non_const.py index 59985f33687..cd61591b4c6 100644 --- a/tests/ported_static/stArgsZeroOneBalance/test_mulmod_non_const.py +++ b/tests/ported_static/stArgsZeroOneBalance/test_mulmod_non_const.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -58,9 +57,7 @@ def test_mulmod_non_const( ) -> None: """Test_mulmod_non_const.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -86,7 +83,6 @@ def test_mulmod_non_const( nonce=0, address=Address(0x9793633B7AD5CA376BA862E9D9B098A0EF8E71D8), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stArgsZeroOneBalance/test_not_non_const.py b/tests/ported_static/stArgsZeroOneBalance/test_not_non_const.py index 51221b43f20..5ff4ec0e605 100644 --- a/tests/ported_static/stArgsZeroOneBalance/test_not_non_const.py +++ b/tests/ported_static/stArgsZeroOneBalance/test_not_non_const.py @@ -71,6 +71,7 @@ def test_not_non_const( gas_limit=1000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { [[ 0 ]](NOT (BALANCE )) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -84,7 +85,6 @@ def test_not_non_const( nonce=0, address=Address(0xCB87599782F7101D77A9B56283A67CD13FA0D97E), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stArgsZeroOneBalance/test_or_non_const.py b/tests/ported_static/stArgsZeroOneBalance/test_or_non_const.py index a5532b43e08..343f19c2fec 100644 --- a/tests/ported_static/stArgsZeroOneBalance/test_or_non_const.py +++ b/tests/ported_static/stArgsZeroOneBalance/test_or_non_const.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -58,9 +57,7 @@ def test_or_non_const( ) -> None: """Test_or_non_const.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -85,7 +82,6 @@ def test_or_non_const( nonce=0, address=Address(0x60DA449405B736A6920D45831CD6B173520FDF34), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stArgsZeroOneBalance/test_return_non_const.py b/tests/ported_static/stArgsZeroOneBalance/test_return_non_const.py index 56dc8ca8bec..4e790b391e0 100644 --- a/tests/ported_static/stArgsZeroOneBalance/test_return_non_const.py +++ b/tests/ported_static/stArgsZeroOneBalance/test_return_non_const.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -58,9 +57,7 @@ def test_return_non_const( ) -> None: """Test_return_non_const.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -86,7 +83,6 @@ def test_return_non_const( nonce=0, address=Address(0xC40D7523B9B65560BE87507FD6FF17AB29DFCFF0), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stArgsZeroOneBalance/test_sdiv_non_const.py b/tests/ported_static/stArgsZeroOneBalance/test_sdiv_non_const.py index 3c4672de6ca..fe11f8c49a8 100644 --- a/tests/ported_static/stArgsZeroOneBalance/test_sdiv_non_const.py +++ b/tests/ported_static/stArgsZeroOneBalance/test_sdiv_non_const.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -58,9 +57,7 @@ def test_sdiv_non_const( ) -> None: """Test_sdiv_non_const.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -85,7 +82,6 @@ def test_sdiv_non_const( nonce=0, address=Address(0xA652FE2C234233D6EB3D62B283D56F67C76635BD), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stArgsZeroOneBalance/test_sgt_non_const.py b/tests/ported_static/stArgsZeroOneBalance/test_sgt_non_const.py index c3e46f512dd..8e955bebd63 100644 --- a/tests/ported_static/stArgsZeroOneBalance/test_sgt_non_const.py +++ b/tests/ported_static/stArgsZeroOneBalance/test_sgt_non_const.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -58,9 +57,7 @@ def test_sgt_non_const( ) -> None: """Test_sgt_non_const.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -85,7 +82,6 @@ def test_sgt_non_const( nonce=0, address=Address(0x696E25C48BC937162438ECD7B3CCD13B4EA2B98B), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stArgsZeroOneBalance/test_sha3_non_const.py b/tests/ported_static/stArgsZeroOneBalance/test_sha3_non_const.py index 12c10c258da..6efbe2105b6 100644 --- a/tests/ported_static/stArgsZeroOneBalance/test_sha3_non_const.py +++ b/tests/ported_static/stArgsZeroOneBalance/test_sha3_non_const.py @@ -71,6 +71,7 @@ def test_sha3_non_const( gas_limit=1000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { [[ 0 ]](KECCAK256 (BALANCE ) (BALANCE )) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -89,7 +90,6 @@ def test_sha3_non_const( nonce=0, address=Address(0x8F7ECEEA4B37C6F7FAF5D64D64FBFFBCD14B79A4), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stArgsZeroOneBalance/test_signext_non_const.py b/tests/ported_static/stArgsZeroOneBalance/test_signext_non_const.py index e054c35c391..ca26efca5c8 100644 --- a/tests/ported_static/stArgsZeroOneBalance/test_signext_non_const.py +++ b/tests/ported_static/stArgsZeroOneBalance/test_signext_non_const.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -58,9 +57,7 @@ def test_signext_non_const( ) -> None: """Test_signext_non_const.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -85,7 +82,6 @@ def test_signext_non_const( nonce=0, address=Address(0x36325C04EB27ABE09CFFAF61AC7823254B193AC8), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stArgsZeroOneBalance/test_sload_non_const.py b/tests/ported_static/stArgsZeroOneBalance/test_sload_non_const.py index 46d0645894e..253acce3f33 100644 --- a/tests/ported_static/stArgsZeroOneBalance/test_sload_non_const.py +++ b/tests/ported_static/stArgsZeroOneBalance/test_sload_non_const.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -58,9 +57,7 @@ def test_sload_non_const( ) -> None: """Test_sload_non_const.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -86,7 +83,6 @@ def test_sload_non_const( nonce=0, address=Address(0x14F6D924BBF6563DD087359472133FFE566E60B1), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stArgsZeroOneBalance/test_slt_non_const.py b/tests/ported_static/stArgsZeroOneBalance/test_slt_non_const.py index 3cadd977b14..4785add59ca 100644 --- a/tests/ported_static/stArgsZeroOneBalance/test_slt_non_const.py +++ b/tests/ported_static/stArgsZeroOneBalance/test_slt_non_const.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -58,9 +57,7 @@ def test_slt_non_const( ) -> None: """Test_slt_non_const.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -85,7 +82,6 @@ def test_slt_non_const( nonce=0, address=Address(0x31D72308BB942D557F1F7AD5987321FB3D75C896), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stArgsZeroOneBalance/test_smod_non_const.py b/tests/ported_static/stArgsZeroOneBalance/test_smod_non_const.py index 7189d613739..1408d1dbfb2 100644 --- a/tests/ported_static/stArgsZeroOneBalance/test_smod_non_const.py +++ b/tests/ported_static/stArgsZeroOneBalance/test_smod_non_const.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -58,9 +57,7 @@ def test_smod_non_const( ) -> None: """Test_smod_non_const.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -85,7 +82,6 @@ def test_smod_non_const( nonce=0, address=Address(0xB5ACE6E2AD4512822412E4E09FA278096CE8C63D), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stArgsZeroOneBalance/test_sstore_non_const.py b/tests/ported_static/stArgsZeroOneBalance/test_sstore_non_const.py index cbf15ed8db1..8f1e6ba7914 100644 --- a/tests/ported_static/stArgsZeroOneBalance/test_sstore_non_const.py +++ b/tests/ported_static/stArgsZeroOneBalance/test_sstore_non_const.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -58,9 +57,7 @@ def test_sstore_non_const( ) -> None: """Test_sstore_non_const.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -84,7 +81,6 @@ def test_sstore_non_const( nonce=0, address=Address(0x82D3D8BE7168E697ED33F2A50810FA614393171E), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stArgsZeroOneBalance/test_sub_non_const.py b/tests/ported_static/stArgsZeroOneBalance/test_sub_non_const.py index ee8e39636b5..311cc71bfa2 100644 --- a/tests/ported_static/stArgsZeroOneBalance/test_sub_non_const.py +++ b/tests/ported_static/stArgsZeroOneBalance/test_sub_non_const.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -58,9 +57,7 @@ def test_sub_non_const( ) -> None: """Test_sub_non_const.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -85,7 +82,6 @@ def test_sub_non_const( nonce=0, address=Address(0xF9A85AC17DF3D37B898990AED6481E88D77DFA36), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stArgsZeroOneBalance/test_suicide_non_const.py b/tests/ported_static/stArgsZeroOneBalance/test_suicide_non_const.py index f4b82e58e0e..3cbaaecceb4 100644 --- a/tests/ported_static/stArgsZeroOneBalance/test_suicide_non_const.py +++ b/tests/ported_static/stArgsZeroOneBalance/test_suicide_non_const.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -56,9 +55,7 @@ def test_suicide_non_const( """Test_suicide_non_const.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) contract_0 = Address(0x095E7BAEA6A6C7C4C2DFEB977EFAC326AF552D87) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -81,7 +78,6 @@ def test_suicide_non_const( nonce=0, address=Address(0x095E7BAEA6A6C7C4C2DFEB977EFAC326AF552D87), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx_data = [ Bytes(""), diff --git a/tests/ported_static/stArgsZeroOneBalance/test_xor_non_const.py b/tests/ported_static/stArgsZeroOneBalance/test_xor_non_const.py index a9aeaa75f22..1ca082aca84 100644 --- a/tests/ported_static/stArgsZeroOneBalance/test_xor_non_const.py +++ b/tests/ported_static/stArgsZeroOneBalance/test_xor_non_const.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -58,9 +57,7 @@ def test_xor_non_const( ) -> None: """Test_xor_non_const.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -85,7 +82,6 @@ def test_xor_non_const( nonce=0, address=Address(0x49A48E464281CDA5C9CA67F9A29A7CBD7CF86590), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stAttackTest/test_contract_creation_spam.py b/tests/ported_static/stAttackTest/test_contract_creation_spam.py index 6129e04b060..1805f8cc254 100644 --- a/tests/ported_static/stAttackTest/test_contract_creation_spam.py +++ b/tests/ported_static/stAttackTest/test_contract_creation_spam.py @@ -48,6 +48,7 @@ def test_contract_creation_spam( gas_limit=100000000000, ) + pre[sender] = Account(balance=0xC9F2C9CD04674EDEA40000000) # Source: hex # 0x7f6004600c60003960046000f3600035ff00000000000000000000000000000000600052602060006000f0600054805b6001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1506001018060005260008060208180876006f1505a616000106200002f57600055 # noqa: E501 contract_0 = pre.deploy_contract( # noqa: F841 @@ -626,7 +627,6 @@ def test_contract_creation_spam( nonce=0, address=Address(0x6A0A0FC761C612C340A0E98D33B37A75E5268472), # noqa: E501 ) - pre[sender] = Account(balance=0xC9F2C9CD04674EDEA40000000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stAttackTest/test_crashing_transaction.py b/tests/ported_static/stAttackTest/test_crashing_transaction.py index 8ad213c6b79..8f8320dd1b8 100644 --- a/tests/ported_static/stAttackTest/test_crashing_transaction.py +++ b/tests/ported_static/stAttackTest/test_crashing_transaction.py @@ -7,13 +7,13 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, Environment, StateTestFiller, Transaction, + compute_create_address, ) from execution_testing.vm import Op @@ -32,9 +32,7 @@ def test_crashing_transaction( ) -> None: """Https://ropsten.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000, nonce=3270) env = Environment( fee_recipient=coinbase, @@ -45,8 +43,6 @@ def test_crashing_transaction( gas_limit=4712388, ) - pre[sender] = Account(balance=0xDE0B6B3A7640000, nonce=3270) - tx = Transaction( sender=sender, to=None, @@ -101,7 +97,7 @@ def test_crashing_transaction( post = { sender: Account(nonce=3271), - Address(0xECBF9AA676D9E0BBBA7E517D1350C1B64F8C6779): Account( + compute_create_address(address=sender, nonce=3270): Account( code=bytes.fromhex("60606040526008565b00"), balance=1, nonce=124, diff --git a/tests/ported_static/stBadOpcode/test_eip2315_not_removed.py b/tests/ported_static/stBadOpcode/test_eip2315_not_removed.py index f96607816e1..f2d0943b19d 100644 --- a/tests/ported_static/stBadOpcode/test_eip2315_not_removed.py +++ b/tests/ported_static/stBadOpcode/test_eip2315_not_removed.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_eip2315_not_removed( ) -> None: """Test_eip2315_not_removed.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x31B5AF02B012484AE954B3A43943242EDE546A2E76FC0A6ACC17435107C385EB - ) + sender = pre.fund_eoa(amount=0x7FFFFFFFFFFFFFFF) env = Environment( fee_recipient=coinbase, @@ -57,9 +54,7 @@ def test_eip2315_not_removed( + Op.TSTORE, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x147943601B1281618E4D824D11073025CD2AC623), # noqa: E501 ) - pre[sender] = Account(balance=0x7FFFFFFFFFFFFFFF) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stBadOpcode/test_invalid_addr.py b/tests/ported_static/stBadOpcode/test_invalid_addr.py index 0f87ed31c7d..2f3e97b7ed8 100644 --- a/tests/ported_static/stBadOpcode/test_invalid_addr.py +++ b/tests/ported_static/stBadOpcode/test_invalid_addr.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -554,9 +553,7 @@ def test_invalid_addr( ) -> None: """Ori Pomerantz qbzzt1@gmail.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x40AC0FC28C27E961EE46EC43355A094DE205856EDBD4654CF2577C2608D4EC1E - ) + sender = pre.fund_eoa(amount=0xBA1A9CE0BA1A9CE) env = Environment( fee_recipient=coinbase, @@ -1036,7 +1033,6 @@ def test_invalid_addr( nonce=0, address=Address(0x2D876FD03A90703F170C256363BA225F9494E604), # noqa: E501 ) - pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE) tx_data = [ Bytes("048071d3") + Hash(0x31) + Hash(0x1) + Hash(0x0), diff --git a/tests/ported_static/stBadOpcode/test_measure_gas.py b/tests/ported_static/stBadOpcode/test_measure_gas.py index 00c734e99ec..b262b96b127 100644 --- a/tests/ported_static/stBadOpcode/test_measure_gas.py +++ b/tests/ported_static/stBadOpcode/test_measure_gas.py @@ -139,6 +139,7 @@ def test_measure_gas( gas_limit=100000000, ) + pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE, nonce=1) # Source: yul # berlin { # pop(create(0, 0, 0x200)) @@ -175,80 +176,6 @@ def test_measure_gas( ) # Source: yul # berlin { - # let retval := call(gas(), 0xCA11, 0, 0, 0x100, 0, 0x100) - # } - contract_3 = pre.deploy_contract( # noqa: F841 - code=Op.CALL( - gas=Op.GAS, - address=0xCA11, - value=Op.DUP1, - args_offset=Op.DUP2, - args_size=Op.DUP2, - ret_offset=0x0, - ret_size=0x100, - ) - + Op.STOP, - balance=0xBA1A9CE0BA1A9CE, - nonce=1, - address=Address(0x0000000000000000000000000000000000C0DEF1), # noqa: E501 - ) - # Source: yul - # berlin { - # let retval := callcode(gas(), 0xCA11, 0, 0, 0x100, 0, 0x100) - # } - contract_4 = pre.deploy_contract( # noqa: F841 - code=Op.CALLCODE( - gas=Op.GAS, - address=0xCA11, - value=Op.DUP1, - args_offset=Op.DUP2, - args_size=Op.DUP2, - ret_offset=0x0, - ret_size=0x100, - ) - + Op.STOP, - balance=0xBA1A9CE0BA1A9CE, - nonce=1, - address=Address(0x0000000000000000000000000000000000C0DEF2), # noqa: E501 - ) - # Source: yul - # berlin { - # let retval := delegatecall(gas(), 0xCA11, 0, 0x100, 0, 0x100) - # } - contract_5 = pre.deploy_contract( # noqa: F841 - code=Op.DELEGATECALL( - gas=Op.GAS, - address=0xCA11, - args_offset=Op.DUP2, - args_size=Op.DUP2, - ret_offset=0x0, - ret_size=0x100, - ) - + Op.STOP, - balance=0xBA1A9CE0BA1A9CE, - nonce=1, - address=Address(0x0000000000000000000000000000000000C0DEF4), # noqa: E501 - ) - # Source: yul - # berlin { - # let retval := staticcall(gas(), 0xCA11, 0, 0x100, 0, 0x100) - # } - contract_6 = pre.deploy_contract( # noqa: F841 - code=Op.STATICCALL( - gas=Op.GAS, - address=0xCA11, - args_offset=Op.DUP2, - args_size=Op.DUP2, - ret_offset=0x0, - ret_size=0x100, - ) - + Op.STOP, - balance=0xBA1A9CE0BA1A9CE, - nonce=1, - address=Address(0x0000000000000000000000000000000000C0DEFA), # noqa: E501 - ) - # Source: yul - # berlin { # let useless := mload(0xB000) # } contract_7 = pre.deploy_contract( # noqa: F841 @@ -289,23 +216,6 @@ def test_measure_gas( ) # Source: yul # berlin { - # let addr := 0xCA11 - # extcodecopy(addr, 0, 0, extcodesize(addr)) - # } - contract_11 = pre.deploy_contract( # noqa: F841 - code=Op.PUSH2[0xCA11] - + Op.PUSH1[0x0] - + Op.DUP1 - + Op.EXTCODESIZE(address=Op.DUP3) - + Op.SWAP3 - + Op.EXTCODECOPY - + Op.STOP, - balance=0xBA1A9CE0BA1A9CE, - nonce=1, - address=Address(0x0000000000000000000000000000000000C0DE3B), # noqa: E501 - ) - # Source: yul - # berlin { # // Find the operation's cost in gas # let min := 0 # let max := 60000 @@ -361,7 +271,97 @@ def test_measure_gas( nonce=1, address=Address(0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC), # noqa: E501 ) - pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE, nonce=1) + # Source: yul + # berlin { + # let retval := call(gas(), 0xCA11, 0, 0, 0x100, 0, 0x100) + # } + contract_3 = pre.deploy_contract( # noqa: F841 + code=Op.CALL( + gas=Op.GAS, + address=0xCA11, + value=Op.DUP1, + args_offset=Op.DUP2, + args_size=Op.DUP2, + ret_offset=0x0, + ret_size=0x100, + ) + + Op.STOP, + balance=0xBA1A9CE0BA1A9CE, + nonce=1, + address=Address(0x0000000000000000000000000000000000C0DEF1), # noqa: E501 + ) + # Source: yul + # berlin { + # let addr := 0xCA11 + # extcodecopy(addr, 0, 0, extcodesize(addr)) + # } + contract_11 = pre.deploy_contract( # noqa: F841 + code=Op.PUSH2[0xCA11] + + Op.PUSH1[0x0] + + Op.DUP1 + + Op.EXTCODESIZE(address=Op.DUP3) + + Op.SWAP3 + + Op.EXTCODECOPY + + Op.STOP, + balance=0xBA1A9CE0BA1A9CE, + nonce=1, + address=Address(0x0000000000000000000000000000000000C0DE3B), # noqa: E501 + ) + # Source: yul + # berlin { + # let retval := staticcall(gas(), 0xCA11, 0, 0x100, 0, 0x100) + # } + contract_6 = pre.deploy_contract( # noqa: F841 + code=Op.STATICCALL( + gas=Op.GAS, + address=0xCA11, + args_offset=Op.DUP2, + args_size=Op.DUP2, + ret_offset=0x0, + ret_size=0x100, + ) + + Op.STOP, + balance=0xBA1A9CE0BA1A9CE, + nonce=1, + address=Address(0x0000000000000000000000000000000000C0DEFA), # noqa: E501 + ) + # Source: yul + # berlin { + # let retval := delegatecall(gas(), 0xCA11, 0, 0x100, 0, 0x100) + # } + contract_5 = pre.deploy_contract( # noqa: F841 + code=Op.DELEGATECALL( + gas=Op.GAS, + address=0xCA11, + args_offset=Op.DUP2, + args_size=Op.DUP2, + ret_offset=0x0, + ret_size=0x100, + ) + + Op.STOP, + balance=0xBA1A9CE0BA1A9CE, + nonce=1, + address=Address(0x0000000000000000000000000000000000C0DEF4), # noqa: E501 + ) + # Source: yul + # berlin { + # let retval := callcode(gas(), 0xCA11, 0, 0, 0x100, 0, 0x100) + # } + contract_4 = pre.deploy_contract( # noqa: F841 + code=Op.CALLCODE( + gas=Op.GAS, + address=0xCA11, + value=Op.DUP1, + args_offset=Op.DUP2, + args_size=Op.DUP2, + ret_offset=0x0, + ret_size=0x100, + ) + + Op.STOP, + balance=0xBA1A9CE0BA1A9CE, + nonce=1, + address=Address(0x0000000000000000000000000000000000C0DEF2), # noqa: E501 + ) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stBadOpcode/test_operation_diff_gas.py b/tests/ported_static/stBadOpcode/test_operation_diff_gas.py index d92e6b68f5d..82a3e5c4cbd 100644 --- a/tests/ported_static/stBadOpcode/test_operation_diff_gas.py +++ b/tests/ported_static/stBadOpcode/test_operation_diff_gas.py @@ -139,6 +139,7 @@ def test_operation_diff_gas( gas_limit=100000000, ) + pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE, nonce=1) # Source: yul # berlin { # sstore(0,create(0, 0, 0x200)) @@ -170,80 +171,6 @@ def test_operation_diff_gas( ) # Source: yul # berlin { - # let retval := call(gas(), 0xCA11, 0, 0, 0x100, 0, 0x100) - # } - contract_2 = pre.deploy_contract( # noqa: F841 - code=Op.CALL( - gas=Op.GAS, - address=0xCA11, - value=Op.DUP1, - args_offset=Op.DUP2, - args_size=Op.DUP2, - ret_offset=0x0, - ret_size=0x100, - ) - + Op.STOP, - balance=0xBA1A9CE0BA1A9CE, - nonce=1, - address=Address(0x0000000000000000000000000000000000C0DEF1), # noqa: E501 - ) - # Source: yul - # berlin { - # let retval := callcode(gas(), 0xCA11, 0, 0, 0x100, 0, 0x100) - # } - contract_3 = pre.deploy_contract( # noqa: F841 - code=Op.CALLCODE( - gas=Op.GAS, - address=0xCA11, - value=Op.DUP1, - args_offset=Op.DUP2, - args_size=Op.DUP2, - ret_offset=0x0, - ret_size=0x100, - ) - + Op.STOP, - balance=0xBA1A9CE0BA1A9CE, - nonce=1, - address=Address(0x0000000000000000000000000000000000C0DEF2), # noqa: E501 - ) - # Source: yul - # berlin { - # let retval := delegatecall(gas(), 0xCA11, 0, 0x100, 0, 0x100) - # } - contract_4 = pre.deploy_contract( # noqa: F841 - code=Op.DELEGATECALL( - gas=Op.GAS, - address=0xCA11, - args_offset=Op.DUP2, - args_size=Op.DUP2, - ret_offset=0x0, - ret_size=0x100, - ) - + Op.STOP, - balance=0xBA1A9CE0BA1A9CE, - nonce=1, - address=Address(0x0000000000000000000000000000000000C0DEF4), # noqa: E501 - ) - # Source: yul - # berlin { - # let retval := staticcall(gas(), 0xCA11, 0, 0x100, 0, 0x100) - # } - contract_5 = pre.deploy_contract( # noqa: F841 - code=Op.STATICCALL( - gas=Op.GAS, - address=0xCA11, - args_offset=Op.DUP2, - args_size=Op.DUP2, - ret_offset=0x0, - ret_size=0x100, - ) - + Op.STOP, - balance=0xBA1A9CE0BA1A9CE, - nonce=1, - address=Address(0x0000000000000000000000000000000000C0DEFA), # noqa: E501 - ) - # Source: yul - # berlin { # mstore(0, 0xDEADBEEF) # return(0, 0x100) # } @@ -296,23 +223,6 @@ def test_operation_diff_gas( ) # Source: yul # berlin { - # let addr := 0xCA11 - # extcodecopy(addr, 0, 0, extcodesize(addr)) - # } - contract_11 = pre.deploy_contract( # noqa: F841 - code=Op.PUSH2[0xCA11] - + Op.PUSH1[0x0] - + Op.DUP1 - + Op.EXTCODESIZE(address=Op.DUP3) - + Op.SWAP3 - + Op.EXTCODECOPY - + Op.STOP, - balance=0xBA1A9CE0BA1A9CE, - nonce=1, - address=Address(0x0000000000000000000000000000000000C0DE3B), # noqa: E501 - ) - # Source: yul - # berlin { # // Run the operation with gasAmt, gasAmt+gasDiff, gasAmt+2*gasDiff, etc. # noqa: E501 # let gasAmt := calldataload(0x24) # let gasDiff := calldataload(0x44) @@ -356,7 +266,97 @@ def test_operation_diff_gas( nonce=1, address=Address(0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC), # noqa: E501 ) - pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE, nonce=1) + # Source: yul + # berlin { + # let retval := call(gas(), 0xCA11, 0, 0, 0x100, 0, 0x100) + # } + contract_2 = pre.deploy_contract( # noqa: F841 + code=Op.CALL( + gas=Op.GAS, + address=0xCA11, + value=Op.DUP1, + args_offset=Op.DUP2, + args_size=Op.DUP2, + ret_offset=0x0, + ret_size=0x100, + ) + + Op.STOP, + balance=0xBA1A9CE0BA1A9CE, + nonce=1, + address=Address(0x0000000000000000000000000000000000C0DEF1), # noqa: E501 + ) + # Source: yul + # berlin { + # let addr := 0xCA11 + # extcodecopy(addr, 0, 0, extcodesize(addr)) + # } + contract_11 = pre.deploy_contract( # noqa: F841 + code=Op.PUSH2[0xCA11] + + Op.PUSH1[0x0] + + Op.DUP1 + + Op.EXTCODESIZE(address=Op.DUP3) + + Op.SWAP3 + + Op.EXTCODECOPY + + Op.STOP, + balance=0xBA1A9CE0BA1A9CE, + nonce=1, + address=Address(0x0000000000000000000000000000000000C0DE3B), # noqa: E501 + ) + # Source: yul + # berlin { + # let retval := staticcall(gas(), 0xCA11, 0, 0x100, 0, 0x100) + # } + contract_5 = pre.deploy_contract( # noqa: F841 + code=Op.STATICCALL( + gas=Op.GAS, + address=0xCA11, + args_offset=Op.DUP2, + args_size=Op.DUP2, + ret_offset=0x0, + ret_size=0x100, + ) + + Op.STOP, + balance=0xBA1A9CE0BA1A9CE, + nonce=1, + address=Address(0x0000000000000000000000000000000000C0DEFA), # noqa: E501 + ) + # Source: yul + # berlin { + # let retval := delegatecall(gas(), 0xCA11, 0, 0x100, 0, 0x100) + # } + contract_4 = pre.deploy_contract( # noqa: F841 + code=Op.DELEGATECALL( + gas=Op.GAS, + address=0xCA11, + args_offset=Op.DUP2, + args_size=Op.DUP2, + ret_offset=0x0, + ret_size=0x100, + ) + + Op.STOP, + balance=0xBA1A9CE0BA1A9CE, + nonce=1, + address=Address(0x0000000000000000000000000000000000C0DEF4), # noqa: E501 + ) + # Source: yul + # berlin { + # let retval := callcode(gas(), 0xCA11, 0, 0, 0x100, 0, 0x100) + # } + contract_3 = pre.deploy_contract( # noqa: F841 + code=Op.CALLCODE( + gas=Op.GAS, + address=0xCA11, + value=Op.DUP1, + args_offset=Op.DUP2, + args_size=Op.DUP2, + ret_offset=0x0, + ret_size=0x100, + ) + + Op.STOP, + balance=0xBA1A9CE0BA1A9CE, + nonce=1, + address=Address(0x0000000000000000000000000000000000C0DEF2), # noqa: E501 + ) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stBugs/test_random_statetest_default_minus_tue_07_58_41_minus_15153_minus_575192.py b/tests/ported_static/stBugs/test_random_statetest_default_minus_tue_07_58_41_minus_15153_minus_575192.py index 1e3900a095f..ebb0afbf4b4 100644 --- a/tests/ported_static/stBugs/test_random_statetest_default_minus_tue_07_58_41_minus_15153_minus_575192.py +++ b/tests/ported_static/stBugs/test_random_statetest_default_minus_tue_07_58_41_minus_15153_minus_575192.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_random_statetest_default_minus_tue_07_58_41_minus_15153_minus_575192( ) -> None: """Test: tis is a canon example of a test found by fuzzing with EVMlab,...""" # noqa: E501 coinbase = Address(0xDF5277352F687058BEC2D433F2E2D1B7F0C970AE) - sender = EOA( - key=0xEDDB5B1A0109F06919449A6279E9DE92A892086BDD851894EB8FFA6C8FF4E563 - ) + sender = pre.fund_eoa(amount=0x5D8FDD3FF54298B4, nonce=28) env = Environment( fee_recipient=coinbase, @@ -53,7 +50,6 @@ def test_random_statetest_default_minus_tue_07_58_41_minus_15153_minus_575192( addr = pre.deploy_contract( # noqa: F841 code=Op.SELFDESTRUCT(address=0xABCDEF), nonce=28, - address=Address(0x589D1B72331C25EFFEE38732D79F48F729681853), # noqa: E501 ) # Source: raw # 0x61dead6000600060006000600061dead5af162abcdef3f600155 @@ -72,7 +68,6 @@ def test_random_statetest_default_minus_tue_07_58_41_minus_15153_minus_575192( nonce=28, address=Address(0xDF5277352F687058BEC2D433F2E2D1B7F0C970AE), # noqa: E501 ) - pre[sender] = Account(balance=0x5D8FDD3FF54298B4, nonce=28) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stBugs/test_random_statetest_default_minus_tue_07_58_41_minus_15153_minus_575192_london.py b/tests/ported_static/stBugs/test_random_statetest_default_minus_tue_07_58_41_minus_15153_minus_575192_london.py index 02b325d3db7..254bb3ee7f4 100644 --- a/tests/ported_static/stBugs/test_random_statetest_default_minus_tue_07_58_41_minus_15153_minus_575192_london.py +++ b/tests/ported_static/stBugs/test_random_statetest_default_minus_tue_07_58_41_minus_15153_minus_575192_london.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_random_statetest_default_minus_tue_07_58_41_minus_15153_minus_575192_lo ) -> None: """Test: tis is a canon example of a test found by fuzzing with EVMlab,...""" # noqa: E501 coinbase = Address(0xDF5277352F687058BEC2D433F2E2D1B7F0C970AE) - sender = EOA( - key=0xEDDB5B1A0109F06919449A6279E9DE92A892086BDD851894EB8FFA6C8FF4E563 - ) + sender = pre.fund_eoa(amount=0x5D8FDD3FF54298B4, nonce=28) env = Environment( fee_recipient=coinbase, @@ -53,7 +50,6 @@ def test_random_statetest_default_minus_tue_07_58_41_minus_15153_minus_575192_lo addr = pre.deploy_contract( # noqa: F841 code=Op.SELFDESTRUCT(address=0xABCDEF), nonce=28, - address=Address(0x589D1B72331C25EFFEE38732D79F48F729681853), # noqa: E501 ) # Source: raw # 0x61dead6000600060006000600061dead5af162abcdef3f600155 @@ -72,7 +68,6 @@ def test_random_statetest_default_minus_tue_07_58_41_minus_15153_minus_575192_lo nonce=28, address=Address(0xDF5277352F687058BEC2D433F2E2D1B7F0C970AE), # noqa: E501 ) - pre[sender] = Account(balance=0x5D8FDD3FF54298B4, nonce=28) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stBugs/test_returndatacopy_python_bug_tue_03_48_41_minus_1432.py b/tests/ported_static/stBugs/test_returndatacopy_python_bug_tue_03_48_41_minus_1432.py index 394c61cf9ef..2e34a2366d4 100644 --- a/tests/ported_static/stBugs/test_returndatacopy_python_bug_tue_03_48_41_minus_1432.py +++ b/tests/ported_static/stBugs/test_returndatacopy_python_bug_tue_03_48_41_minus_1432.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -59,7 +58,6 @@ ), ], ) -@pytest.mark.pre_alloc_mutable def test_returndatacopy_python_bug_tue_03_48_41_minus_1432( state_test: StateTestFiller, pre: Alloc, @@ -70,9 +68,7 @@ def test_returndatacopy_python_bug_tue_03_48_41_minus_1432( ) -> None: """Fuzzer generated bug.""" coinbase = Address(0x1000000000000000000000000000000000000000) - sender = EOA( - key=0x7B8E1B8983BDCF0DF1A8A35F27CE0D6E94E340D0C15BD288E587771F560B3570 - ) + sender = pre.fund_eoa(amount=0x38BEEC8FEECA2598) env = Environment( fee_recipient=coinbase, @@ -83,7 +79,6 @@ def test_returndatacopy_python_bug_tue_03_48_41_minus_1432( gas_limit=23826461031063688, ) - pre[sender] = Account(balance=0x38BEEC8FEECA2598) # Source: raw # 0x7b1db054ccc801c0666b34b3c6242bbfc5e98f20c14fb95e0118be9ad054326f33d50e215ff59297861847ea911a6a9d566103a560a860fb60cb6342a46f5073b94f5374fce5edbc8e2a8697c15331677e6ebf0b632c1e2816f26d135e2f826dc603850e0db21d105b778732a34b873c7d943050b8659794f0bd3e841d35a2231ef6027e97f8cde11728fa2051e87933cf858e4e5e91baa74fc1e9ffe4c7b15ba600e8678f095989dc68f47e67d704be2b41c7f8670a # noqa: E501 addr = pre.deploy_contract( # noqa: F841 @@ -111,7 +106,6 @@ def test_returndatacopy_python_bug_tue_03_48_41_minus_1432( + Op.EXP(0xD704BE2B41C7F867, 0x8F095989DC68F47E), balance=0x2CE99FC81ED55962, nonce=63, - address=Address(0xF4C98E0DDA63A5C89847CA3E6DDF34F23443370F), # noqa: E501 ) # Source: raw # 0x610326610100fd79c940b5f2046740058558468f238b85db7f6bbe3f3d51e92a3e326102d85268b7f7c4147541c695f376705288410b81b217e80726fb9e4c5c7b4c49eca0c1b6b9137e117c16c26c9816459f38396ffc36da48d65defdc7d055cbc846c07e81cfab0607c6cbc968774d4de7df8e3236f581e688cc2081a96b1cad9e0fb6103ca601361019f6101016364b68c8e73ffffffffffffffffffffffffffffffffffffffff63200fbd63f16017610215610161610119635af7465b73000000000000000000000000000000000000000863792c6916f1799bf4fddda49ae97714e7d325ceab23acd5f4a15b52104741161261023f608ff360197021a04ff3f933b9ad91b735bfbfe41da7066b499c5d47b6de1fe398cb91fd68f681cbb8661dd457cf713cef75dabf5ea496d7012f4c56b9fee6c4208461022d61021661036e610200630277795a73ffffffffffffffffffffffffffffffffffffffff6333d3d55ff1644720e3ce666101ad526b874cead08499d57a5497d3776102fa60ff60f561014863202b2ea873d94f5374fce5edbc8e2a8697c15331677e6ebf0b6302e83dbef1327144ce205e051f296fb116fc9e5f3c280919af70f3c93c5d5cefff338db2b1165b4918f1780a73852663192a9579a68b50eefdc639ca0b62ab4d5230 # noqa: E501 @@ -121,7 +115,6 @@ def test_returndatacopy_python_bug_tue_03_48_41_minus_1432( ), balance=0x442F5872DD93B01A, nonce=28, - address=Address(0x786208C0F93DAC2045BEC6A3F8A41B73AB845593), # noqa: E501 ) # Source: raw # 0x6102dd6103e06103146052632318d76f7332f4d5419b41e6887cca98e0943f141a5c66df986347cfe65df16abd0c6d6c4cec6593afaa8c7de1769c96cd0751aa76a98c8196fa8c92e70d7bda1799c91c7f05de318110659b819438774667f9ec15a6e0233f75669e43360bd4e0a0764e9f395117afcd072774ce12d13dc73305858002a921407eb6508e3a3be377d4825dbf618a393c7c061e75a8a496a33afe0f017f2e3354789e321838b083d48893f23dced4592e9ea08fe3f80970d6334b626c6f1f6ede8bcc81d03a7ccc244231cb6606db986101d761010761031c61025673ffffffffffffffffffffffffffffffffffffffff6311ecd01bfa7aa6d0c1c5158ef0db6994192acbd4cac6abc8449d80fc2c3247194668e0d9606bd390266d7f78712766f4765076283ad67450d7ab4df6f3f6ee014ab802ec9d55727ed96dc0b9ce7bd14b193dc1f0d11ce19283c77ef651d4d2e7c180715ff7fcbc995ea8b27613cc516dad16d17f29a93220ce0d6edb0a65d3d474dbc39cba5bcb3d4fcf6a9fef19107dc04511df2752fb346103ce6101c163459d135bf0712ab2475fbb2ba0720711a903dbecfa0429bf6811e6e90cbb0f13d4ee61050c7052c865e0216b4096186fc604fb563fa59f761263ee91d55e407fdffe82ca1558f793f3a218dd9ba69084621fdea97de498f0b0e1874331115e31aaad4d87227362a9ec3e1c1be11cdb23097bbc600c64692eeadfa97f1616b8aec24564487dc74f8e17e6a133b5dbe576838697de73f856197203ef1a733a54f7edb0dbd60f9d52db6b5c1477169b77f0d86917ed731a20db4b9e5b836bd26bffefab084a31c4afda166f8156612f281da0be688e5bdb1f31ed7869bc62343a7665abad657369482449e68b3acfe820997d3ddf5785384d51aaa0612dab5ddbf2a9bf550736ad42293387d70693587d74f6ccfae5218d01559bac159497edb6a665eae52f52784975568a159c0cae9044d258c55b10f4d1008d29ab1df7fceb76b789e2a8cdbaa9c67c42cd1ebe81716ead0e94c721279d77d3a0b3de311596d547292878449ccce511e6991b3dc636a16278159a9f61014a6102216342ce224df06f3d9a062274cd9a67ccba17c2cb06de46628e0bf703610106602e636db4b55bf06102056102c9633ff89b31f0788e55af17e19973f2c3f5d4c21c169890b9a92491f91aa1e714605d526103a1601f609b6103ee73d94f5374fce5edbc8e2a8697c15331677e6ebf0b6335adeabdf46d26060d385ed594e21b02b23a6c4c157350e7ab6a3ef66f83a29845b4ba85c4fdfbd0054a620123ad6893eff4b525b0f4b08d73285f36f3bcac6a985b906c348472b7cbc5a02e61678666f0c50eecdc1167f20fc1dc41c2fd95856d7752e55ede4e56f4f536a04d436a7fd418a1ca44c0173c10f1806ba284f9c9c7c13670005de594dec538cd56c2743b66fdfa7683ae0df6917b8bbcb53461be606ef617322e6448e3e4124dbe061257a8f486529de36997f08ce92502957f85587a18082b5b5b49e36de5a83e8a270663088571bf2fdf8f5f29b949976b41e3859928a237f5e5df84c17d3c431e82328f9093e64defbdd07d74d84835800999791abc41260472d96f9362604d077b198e859adc806beae7200cf116d2b55e89ddd564abc3900e69a68b0f6f0e9e4f12998728815d01c42f3b109ed25561027b610132635f449586f06101726101ec631fe4bdc3f06101316101246103b33e60bd19610284610305fd6102db6102e4631ea09dc6f06b72a6cf13500241c2a5e5c4e1777ea9ed9b05ba9b57d70dd270ece76ecf21d3a41ad554f795167084dcab761d4c8437774cad4bb13b2bece16d40358df93ec0f49abe102cd44e475560476101f3fd605b61030a6328f7e2e9f032604a547db71c0237247865fa2add74c8b27041c5718a2554a72662720296dff5b3b5327d59df4558b8a5b2c9e7d15eb3947a70064f935c8fdf0a4e6f644aa31b42c17d0280e50ea92a366c3d060c12c6a16a75522fbeb3d7cca702807f521781ab6101b252639cceb9e27f37ee8fde4ed3a23d3ec8db334ac1caa7e06523b0132dd615cf3fc16140d34c19761617823c3af47c42bc36b69cb4385463595c7f6f9ea451396fe05303603e0cd401e13df744e2a67382774d943941551704ff14dfa8646efbb2d8abc4ac6e258e99240372924b8001f8f0650d66b37411d484b18f41e779702bd1c169fa52bbfc8af4a45f20acb0ef956edb2ecbc0d4eadbbbf6732f8bd33b367a33c0faf0cf1970bcd38093a50a44fd253b0e74f2706239c499217b7bdae332e21d5d5e7e795c998cceed14cf46977e7d3cbb3c79ef0530c36fa8ac3fd8d49f10bb0ae919fa149adead7f67dae0b9ba628e056e0e87e029b8e5f42821d775338e6774301ecb428b3938237c6ee22b0b5edf2ad6997869f427ba0672a7168614233e85f61dae5ed428643a53f605116d6dad586dce62833a62ca8c914c646b1f861a5b1c4ea7298a95029e63cb849fe08b6c943cb9d854c7d50ad04cfdfe64718e2868b8f2b53e55fe01a152c8496cbcc69956787447062b734cebde6c6452e9efc4aba5bf071cbff56208a52561a8ef635f52399b724f3369d988884f58166d734881774eff46d77b76b189c89c55b1c6591f178d2d21bf2b023adf9bc5b862127935e3346d98d56047a3f71241fd5a24abbb0cfc463fb8a5e67e327b055696fe51258dd07526ebd8439bcebb514ae26dc12d653a5c1263707c5109097ec5dcdb3918ab114985f709d3003b50e58fba91007825a6b80073f644eaa306051808460fc3b2d8e276b2187c583f7ef29ee0b0c34f9ee57bac9ebb996402e3300ddf06c760fc5f531f6b1e2beda77fa15c07f90f92422822e8d33c5d2409ea75197f7cd6d61770eddb078206cfc7c57b006cd0e9a9ec65fa4fc683da22cfaf6dfc995feb5f8386a052851fc58b7402f32e7ef9343d4633def4c0a4b9be12f2cd7c646073e14ca3fb977524f677714c3d994ea05f1997a246537d2fc0ab20ed2a5958f3712602bee2a270429abbd3ff3b9945f72f58dcf4f86eb344417a87dfa1ebd701a0ff381bb40b620bb8287cd7781d2ef7c0fd8695f705465fbadf99fdffef2afd94b0e76531b6ea0d537a23d2332d13c20368a0724e41bc1130a6b1ebc3464527e34c26a43751649f9dfe4f8e7957981a9fc08558c90d38079f1921b60fe6fa448171fec55c4c630575e811712211cf72f489a4e83a2f5427eab647b075a91064929de0a65517 # noqa: E501 @@ -131,7 +124,6 @@ def test_returndatacopy_python_bug_tue_03_48_41_minus_1432( ), balance=0x161150E7531F1933, nonce=29, - address=Address(0x47A24DD3A5F1A6A8238EFDB32782A0B56AB9A1DD), # noqa: E501 ) # Source: raw # 0x7e4fc1426b49cd8e2c770339616ce9c501fb746715dd4a20219229d0673ac05575993bd089a6663f6dff488574195b848fbb357eb7be1f61026352605861011761027f60e373c94f5374fce5edbc8e2a8697c15331677e6ebf0b63748b4abbfa60e76101bc6103f33e60d861036a6315193f47f07aff076e997770d03b70288679871dc28aa5a1399b21c8afa8155ecd7e75dd05f9d7eb42fa3e79c6a2109dff2a1e53e612fbe000bed18eec8345f00574f537c72820d8b97350ae523a8f7467ae14a8bd9aae6be55862b685e32476cc67ae2c6a40cf55729540d111f44c63629458da68e7ad2a9b389ed3bb60682169ea8a7b3a1bcf92621919c062413cb5986101236103596101776103be73d94f5374fce5edbc8e2a8697c15331677e6ebf0b631f6d9dfffa6103716101f760163e76d609ca9a51645238e4f1f8268f973c3a01a0b67479a34563d1e70065610173525b64e6d218af5474c3d8045447d06c726801695cfa26fdfaa6460a868569cd662855a55716140ae07eb1e25aeaf04ae7cf54e8aa7a22206da5a6e52bdd3ef82ad40a4681d25811167f7b0a3f66a727652592924dc1291a6085d537c5da2d6272a54f882460bc76407d666361c40cc56bc8778a8bc9a9b45d44c78cfe4333fe0c49418dd61f183d41132f755340e48ababb825a26ebc0ca693a8b465121200fd21a727b4c365a65a3255278f6705e5ca0f6146fccd3766a6e5b9decfb6e50968851e829313a2cc9d5b518e2586166c31ba04ed3f5a377310bd9993aa534b007858d9545342410ce8c156d780a8cb477a65efed30aa9d6bd63c48a134c9cb0c677ecda48aacef0c17c91de37e3cfdae69153742406995ea81bbae6a201663b9b37a6a9f597ae8d5a634f40e44e517174ea92616bc228ced0d712c265c2925470326102f26102146101b13e601d6103a360726103ec73ffffffffffffffffffffffffffffffffffffffff6319628a1bf4740e5f285d15a08a263b0a444516266bd51fe7266771604469df3c080d07dd47c4eb9e7344a87541ddc5a6971632a021033eb3542b375cd06bd0dfb48f6acde07152794b556839563efff1afed3b0a857615166526175e7184b83cc2dedf61ec5d65d1eee66efcb87b4f2c73335db9fba49e3d40638cd7f462f1d3b315f18dc1f692a68b24036102c16101f36102f23e783d6331b166ee517c71a4ba159dd322b9fa5f3237dfb85d2594edd580948177bd72d2244f767352371e3428d28bc6356c553b18d00e6b3cf602061672c2abbd7763059f61940b0d19fde33f7b5a960861025b61021d6101d361035173b94f5374fce5edbc8e2a8697c15331677e6ebf0b635ba25f69f4790d251e9ae89c718dd41c3f57b0c304fbb83978de28d23499bdd1729c04301ff527ccc9f7ed74a8dbd906b468d4487ffba738f193e3047b02e40beb08b4f11707681ef103ec1b00585a85f27227a179917ef15e97a359268b06ff34bcee23a869974fbca6e201cb16179743ac0f8c9f867003d5e26a5aad5217ebfff31407169237230772efaab6cd87fbc9fd408d4ac5a048e43fb4e7a261037c6101f76103e13e # noqa: E501 @@ -141,7 +133,6 @@ def test_returndatacopy_python_bug_tue_03_48_41_minus_1432( ), balance=0x16B3E0323B4F717D, nonce=28, - address=Address(0xD1F0BEFC94D951FB4B787ADA0927F60A9A94CE12), # noqa: E501 ) tx_data = [ diff --git a/tests/ported_static/stBugs/test_staticcall_createfails.py b/tests/ported_static/stBugs/test_staticcall_createfails.py index fae119fdb8f..4d63012c711 100644 --- a/tests/ported_static/stBugs/test_staticcall_createfails.py +++ b/tests/ported_static/stBugs/test_staticcall_createfails.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -59,9 +58,7 @@ def test_staticcall_createfails( contract_0 = Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) contract_1 = Address(0xC94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) contract_2 = Address(0xD94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0x38BEEC8FEECA2598) env = Environment( fee_recipient=coinbase, @@ -72,7 +69,6 @@ def test_staticcall_createfails( gas_limit=23826461031063688, ) - pre[sender] = Account(balance=0x38BEEC8FEECA2598) # Source: lll # { [[1]] (STATICCALL 70000 (CALLDATALOAD 0) 0 0 0 0) } contract_0 = pre.deploy_contract( # noqa: F841 diff --git a/tests/ported_static/stCallCodes/test_call_oog_additional_gas_costs1.py b/tests/ported_static/stCallCodes/test_call_oog_additional_gas_costs1.py index aff20e0dffb..e8b77af0ac3 100644 --- a/tests/ported_static/stCallCodes/test_call_oog_additional_gas_costs1.py +++ b/tests/ported_static/stCallCodes/test_call_oog_additional_gas_costs1.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_call_oog_additional_gas_costs1( ) -> None: """Call(oog during init) -> code .""" coinbase = Address(0xEB201D2887816E041F6E807E804F64F3A7A226FE) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -47,12 +44,19 @@ def test_call_oog_additional_gas_costs1( ) pre[coinbase] = Account(balance=0, nonce=1) + # Source: raw + # 0x6000 + addr = pre.deploy_contract( # noqa: F841 + code=Op.PUSH1[0x0], + balance=0xDE0B6B3A7640000, + nonce=0, + ) # Source: lll # { (CALL 6000 0 0 64 0 64 ) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 code=Op.CALL( gas=0x1770, - address=0xD0735F094C16E509E8D76999D9EE2E4FD5166C2E, + address=addr, value=0x0, args_offset=0x0, args_size=0x40, @@ -62,17 +66,7 @@ def test_call_oog_additional_gas_costs1( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xEF8DD89DEA93DC2BFF0CE3A1196188496E6C28DC), # noqa: E501 - ) - # Source: raw - # 0x6000 - addr = pre.deploy_contract( # noqa: F841 - code=Op.PUSH1[0x0], - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0xD0735F094C16E509E8D76999D9EE2E4FD5166C2E), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallCodes/test_call_oog_additional_gas_costs2.py b/tests/ported_static/stCallCodes/test_call_oog_additional_gas_costs2.py index 6049be60cf3..fe9d6e75686 100644 --- a/tests/ported_static/stCallCodes/test_call_oog_additional_gas_costs2.py +++ b/tests/ported_static/stCallCodes/test_call_oog_additional_gas_costs2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_call_oog_additional_gas_costs2( ) -> None: """Call(oog during init) -> code .""" coinbase = Address(0xEB201D2887816E041F6E807E804F64F3A7A226FE) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -47,6 +44,12 @@ def test_call_oog_additional_gas_costs2( ) pre[coinbase] = Account(balance=0, nonce=1) + # Source: raw + # 0x6000 + addr = pre.deploy_contract( # noqa: F841 + code=Op.PUSH1[0x0], + nonce=0, + ) # Source: lll # { [[0]] (CALL 6000 1 0 64 0 64 ) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -54,7 +57,7 @@ def test_call_oog_additional_gas_costs2( key=0x0, value=Op.CALL( gas=0x1770, - address=0x89CD1CB7AD11C6949BEC0C8C7533DC073960C54F, + address=addr, value=0x1, args_offset=0x0, args_size=0x40, @@ -66,16 +69,7 @@ def test_call_oog_additional_gas_costs2( storage={0: 2}, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xC1F36F15E971B13F8178B8C0C5C4F5E6B1B2B2C3), # noqa: E501 - ) - # Source: raw - # 0x6000 - addr = pre.deploy_contract( # noqa: F841 - code=Op.PUSH1[0x0], - nonce=0, - address=Address(0x89CD1CB7AD11C6949BEC0C8C7533DC073960C54F), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallCodes/test_callcall_00.py b/tests/ported_static/stCallCodes/test_callcall_00.py index 43fed748cd3..b3738552685 100644 --- a/tests/ported_static/stCallCodes/test_callcall_00.py +++ b/tests/ported_static/stCallCodes/test_callcall_00.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_callcall_00( ) -> None: """Call -> call -> code, params check.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -47,24 +44,18 @@ def test_callcall_00( ) # Source: lll - # { [[ 0 ]] (CALL 350000 1 0 64 0 64 ) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.CALL( - gas=0x55730, - address=0xC3E151E887921D1EDB46AAE9B4A3FFC5B85E2A89, - value=0x1, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ), - ) + # { (SSTORE 2 1) (SSTORE 4 (CALLER)) (SSTORE 7 (CALLVALUE)) (SSTORE 230 (ADDRESS)) (SSTORE 232 (ORIGIN)) (SSTORE 236 (CALLDATASIZE)) (SSTORE 238 (CODESIZE)) (SSTORE 240 (GASPRICE))} # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x2, value=0x1) + + Op.SSTORE(key=0x4, value=Op.CALLER) + + Op.SSTORE(key=0x7, value=Op.CALLVALUE) + + Op.SSTORE(key=0xE6, value=Op.ADDRESS) + + Op.SSTORE(key=0xE8, value=Op.ORIGIN) + + Op.SSTORE(key=0xEC, value=Op.CALLDATASIZE) + + Op.SSTORE(key=0xEE, value=Op.CODESIZE) + + Op.SSTORE(key=0xF0, value=Op.GASPRICE) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xEB09FF15547417853F6F4B240B8804769C37B0F1), # noqa: E501 ) # Source: lll # { [[ 1 ]] (CALL 250000 2 0 64 0 64 ) } # noqa: E501 @@ -73,7 +64,7 @@ def test_callcall_00( key=0x1, value=Op.CALL( gas=0x3D090, - address=0x33F368F0B54063613CF5944941E8E0E4EEB64697, + address=addr_2, value=0x2, args_offset=0x0, args_size=0x40, @@ -84,24 +75,26 @@ def test_callcall_00( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xC3E151E887921D1EDB46AAE9B4A3FFC5B85E2A89), # noqa: E501 ) # Source: lll - # { (SSTORE 2 1) (SSTORE 4 (CALLER)) (SSTORE 7 (CALLVALUE)) (SSTORE 230 (ADDRESS)) (SSTORE 232 (ORIGIN)) (SSTORE 236 (CALLDATASIZE)) (SSTORE 238 (CODESIZE)) (SSTORE 240 (GASPRICE))} # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x2, value=0x1) - + Op.SSTORE(key=0x4, value=Op.CALLER) - + Op.SSTORE(key=0x7, value=Op.CALLVALUE) - + Op.SSTORE(key=0xE6, value=Op.ADDRESS) - + Op.SSTORE(key=0xE8, value=Op.ORIGIN) - + Op.SSTORE(key=0xEC, value=Op.CALLDATASIZE) - + Op.SSTORE(key=0xEE, value=Op.CODESIZE) - + Op.SSTORE(key=0xF0, value=Op.GASPRICE) + # { [[ 0 ]] (CALL 350000 1 0 64 0 64 ) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.CALL( + gas=0x55730, + address=addr, + value=0x1, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ), + ) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x33F368F0B54063613CF5944941E8E0E4EEB64697), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, @@ -114,10 +107,10 @@ def test_callcall_00( addr_2: Account( storage={ 2: 1, - 4: 0xC3E151E887921D1EDB46AAE9B4A3FFC5B85E2A89, + 4: addr, 7: 2, - 230: 0x33F368F0B54063613CF5944941E8E0E4EEB64697, - 232: 0xEBAF50DEBF10E08302FE4280C32DF010463CA297, + 230: addr_2, + 232: sender, 236: 64, 238: 34, 240: 10, diff --git a/tests/ported_static/stCallCodes/test_callcall_00_ooge.py b/tests/ported_static/stCallCodes/test_callcall_00_ooge.py index 042a62087c6..531f8276f0b 100644 --- a/tests/ported_static/stCallCodes/test_callcall_00_ooge.py +++ b/tests/ported_static/stCallCodes/test_callcall_00_ooge.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_callcall_00_ooge( ) -> None: """Call -> call -> code oog .""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -47,24 +44,12 @@ def test_callcall_00_ooge( ) # Source: lll - # { [[ 0 ]] (CALL 150000 0 0 64 0 64 ) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.CALL( - gas=0x249F0, - address=0x9196F97BCA1B117E521275693C79420479D9CC90, - value=0x0, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ), - ) + # { (SSTORE 2 1) (KECCAK256 0x00 0x2fffff) } + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x2, value=0x1) + + Op.SHA3(offset=0x0, size=0x2FFFFF) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x4353E77718BE108D4C149D88B34CACEDA42C5C66), # noqa: E501 ) # Source: lll # { [[ 1 ]] (CALL 20020 0 0 64 0 64 ) [[11]] 1 } # noqa: E501 @@ -73,7 +58,7 @@ def test_callcall_00_ooge( key=0x1, value=Op.CALL( gas=0x4E34, - address=0x766B2CF0691F51029181FC511395B7AB71353A88, + address=addr_2, value=0x0, args_offset=0x0, args_size=0x40, @@ -84,18 +69,26 @@ def test_callcall_00_ooge( + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, nonce=0, - address=Address(0x9196F97BCA1B117E521275693C79420479D9CC90), # noqa: E501 ) # Source: lll - # { (SSTORE 2 1) (KECCAK256 0x00 0x2fffff) } - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x2, value=0x1) - + Op.SHA3(offset=0x0, size=0x2FFFFF) + # { [[ 0 ]] (CALL 150000 0 0 64 0 64 ) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.CALL( + gas=0x249F0, + address=addr, + value=0x0, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ), + ) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x766B2CF0691F51029181FC511395B7AB71353A88), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallCodes/test_callcall_00_ooge_value_transfer.py b/tests/ported_static/stCallCodes/test_callcall_00_ooge_value_transfer.py index 5070853c5a7..1116a38c40a 100644 --- a/tests/ported_static/stCallCodes/test_callcall_00_ooge_value_transfer.py +++ b/tests/ported_static/stCallCodes/test_callcall_00_ooge_value_transfer.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_callcall_00_ooge_value_transfer( ) -> None: """Call -> call -> code oog .""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -47,24 +44,12 @@ def test_callcall_00_ooge_value_transfer( ) # Source: lll - # { [[ 0 ]] (CALL 800000 20 0 64 0 64 ) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.CALL( - gas=0xC3500, - address=0xA781AD010268E97D590D07E5B442975243B2F05B, - value=0x14, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ), - ) + # { (SSTORE 2 1) (KECCAK256 0x00 0x2fffff) } + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x2, value=0x1) + + Op.SHA3(offset=0x0, size=0x2FFFFF) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xB06C4FF2E2503BB892CC3C9237A1AE465A759616), # noqa: E501 ) # Source: lll # { [[ 1 ]] (CALL 600000 10 0 64 0 64 ) [[11]] 1} # noqa: E501 @@ -73,7 +58,7 @@ def test_callcall_00_ooge_value_transfer( key=0x1, value=Op.CALL( gas=0x927C0, - address=0x766B2CF0691F51029181FC511395B7AB71353A88, + address=addr_2, value=0xA, args_offset=0x0, args_size=0x40, @@ -84,18 +69,26 @@ def test_callcall_00_ooge_value_transfer( + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, nonce=0, - address=Address(0xA781AD010268E97D590D07E5B442975243B2F05B), # noqa: E501 ) # Source: lll - # { (SSTORE 2 1) (KECCAK256 0x00 0x2fffff) } - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x2, value=0x1) - + Op.SHA3(offset=0x0, size=0x2FFFFF) + # { [[ 0 ]] (CALL 800000 20 0 64 0 64 ) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.CALL( + gas=0xC3500, + address=addr, + value=0x14, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ), + ) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x766B2CF0691F51029181FC511395B7AB71353A88), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallCodes/test_callcall_00_suicide_end.py b/tests/ported_static/stCallCodes/test_callcall_00_suicide_end.py index 758337ec1d7..86d19960801 100644 --- a/tests/ported_static/stCallCodes/test_callcall_00_suicide_end.py +++ b/tests/ported_static/stCallCodes/test_callcall_00_suicide_end.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_callcall_00_suicide_end( ) -> None: """Call -> (call -> code) suicide .""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,6 +43,14 @@ def test_callcall_00_suicide_end( gas_limit=30000000, ) + # Source: lll + # { (SSTORE 2 1) } + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x2, value=0x1) + Op.STOP, + balance=0x2540BE400, + nonce=0, + address=Address(0x703B936FD4D674F0FF5D6957F61097152F8781B8), # noqa: E501 + ) # Source: lll # { [[ 0 ]] (CALL 150000 0 0 64 0 64 ) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -87,15 +92,6 @@ def test_callcall_00_suicide_end( nonce=0, address=Address(0xF741CFEE7B7FB1025DCCEF3DB5A3CBC8FFB776F8), # noqa: E501 ) - # Source: lll - # { (SSTORE 2 1) } - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x2, value=0x1) + Op.STOP, - balance=0x2540BE400, - nonce=0, - address=Address(0x703B936FD4D674F0FF5D6957F61097152F8781B8), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallCodes/test_callcallcall_000.py b/tests/ported_static/stCallCodes/test_callcallcall_000.py index abc28fb0d5c..e4289de543f 100644 --- a/tests/ported_static/stCallCodes/test_callcallcall_000.py +++ b/tests/ported_static/stCallCodes/test_callcallcall_000.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_callcallcall_000( ) -> None: """Call -> call -> call -> code, params check.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -47,14 +44,28 @@ def test_callcallcall_000( ) # Source: lll - # { [[ 0 ]] (CALL 350000 1 0 64 0 64 ) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 + # { (SSTORE 3 1) (SSTORE 4 (CALLER)) (SSTORE 7 (CALLVALUE)) (SSTORE 330 (ADDRESS)) (SSTORE 332 (ORIGIN)) (SSTORE 336 (CALLDATASIZE)) (SSTORE 338 (CODESIZE)) (SSTORE 340 (GASPRICE))} # noqa: E501 + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + + Op.SSTORE(key=0x4, value=Op.CALLER) + + Op.SSTORE(key=0x7, value=Op.CALLVALUE) + + Op.SSTORE(key=0x14A, value=Op.ADDRESS) + + Op.SSTORE(key=0x14C, value=Op.ORIGIN) + + Op.SSTORE(key=0x150, value=Op.CALLDATASIZE) + + Op.SSTORE(key=0x152, value=Op.CODESIZE) + + Op.SSTORE(key=0x154, value=Op.GASPRICE) + + Op.STOP, + nonce=0, + ) + # Source: lll + # { [[ 2 ]] (CALL 250000 3 0 64 0 64 ) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x0, + key=0x2, value=Op.CALL( - gas=0x55730, - address=0x9073671D2BFB351331716FD279282EACF50824AD, - value=0x1, + gas=0x3D090, + address=addr_3, + value=0x3, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -64,7 +75,6 @@ def test_callcallcall_000( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xEB09FF15547417853F6F4B240B8804769C37B0F1), # noqa: E501 ) # Source: lll # { [[ 1 ]] (CALL 300000 2 0 64 0 64 ) } # noqa: E501 @@ -73,7 +83,7 @@ def test_callcallcall_000( key=0x1, value=Op.CALL( gas=0x493E0, - address=0x62441CBE78AA4A4244E084D4F86098E31DCED749, + address=addr_2, value=0x2, args_offset=0x0, args_size=0x40, @@ -84,17 +94,16 @@ def test_callcallcall_000( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x9073671D2BFB351331716FD279282EACF50824AD), # noqa: E501 ) # Source: lll - # { [[ 2 ]] (CALL 250000 3 0 64 0 64 ) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 + # { [[ 0 ]] (CALL 350000 1 0 64 0 64 ) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x2, + key=0x0, value=Op.CALL( - gas=0x3D090, - address=0x181B4ED322E192361633CC3C0A418F259AB0CF4B, - value=0x3, + gas=0x55730, + address=addr, + value=0x1, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -104,24 +113,7 @@ def test_callcallcall_000( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x62441CBE78AA4A4244E084D4F86098E31DCED749), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) (SSTORE 4 (CALLER)) (SSTORE 7 (CALLVALUE)) (SSTORE 330 (ADDRESS)) (SSTORE 332 (ORIGIN)) (SSTORE 336 (CALLDATASIZE)) (SSTORE 338 (CODESIZE)) (SSTORE 340 (GASPRICE))} # noqa: E501 - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) - + Op.SSTORE(key=0x4, value=Op.CALLER) - + Op.SSTORE(key=0x7, value=Op.CALLVALUE) - + Op.SSTORE(key=0x14A, value=Op.ADDRESS) - + Op.SSTORE(key=0x14C, value=Op.ORIGIN) - + Op.SSTORE(key=0x150, value=Op.CALLDATASIZE) - + Op.SSTORE(key=0x152, value=Op.CODESIZE) - + Op.SSTORE(key=0x154, value=Op.GASPRICE) - + Op.STOP, - nonce=0, - address=Address(0x181B4ED322E192361633CC3C0A418F259AB0CF4B), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, @@ -134,10 +126,10 @@ def test_callcallcall_000( addr_3: Account( storage={ 3: 1, - 4: 0x62441CBE78AA4A4244E084D4F86098E31DCED749, + 4: addr_2, 7: 3, - 330: 0x181B4ED322E192361633CC3C0A418F259AB0CF4B, - 332: 0xEBAF50DEBF10E08302FE4280C32DF010463CA297, + 330: addr_3, + 332: sender, 336: 64, 338: 39, 340: 10, diff --git a/tests/ported_static/stCallCodes/test_callcallcall_000_ooge.py b/tests/ported_static/stCallCodes/test_callcallcall_000_ooge.py index d9a3951ff1b..77f967932fc 100644 --- a/tests/ported_static/stCallCodes/test_callcallcall_000_ooge.py +++ b/tests/ported_static/stCallCodes/test_callcallcall_000_ooge.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_callcallcall_000_ooge( ) -> None: """Call -> call -> call -> code oog .""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -47,13 +44,21 @@ def test_callcallcall_000_ooge( ) # Source: lll - # { [[ 0 ]] (CALL 800000 0 0 64 0 64 ) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 + # { (SSTORE 3 1) (KECCAK256 0x00 0x2fffff) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + + Op.SHA3(offset=0x0, size=0x2FFFFF) + + Op.STOP, + nonce=0, + ) + # Source: lll + # { [[ 2 ]] (CALL 400000 0 0 64 0 64 ) [[11]] 1 } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x0, + key=0x2, value=Op.CALL( - gas=0xC3500, - address=0xBBDCE54B3C571B853032CB3A637E8F5B81DBAF0D, + gas=0x61A80, + address=addr_3, value=0x0, args_offset=0x0, args_size=0x40, @@ -61,10 +66,9 @@ def test_callcallcall_000_ooge( ret_size=0x40, ), ) + + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x335B558774699D81F685543CFBCDE5C4E5407686), # noqa: E501 ) # Source: lll # { [[ 1 ]] (CALL 600000 0 0 64 0 64 ) } # noqa: E501 @@ -73,7 +77,7 @@ def test_callcallcall_000_ooge( key=0x1, value=Op.CALL( gas=0x927C0, - address=0xB11130CF7EEF6D3F1552623D3506A5BBB07B12CE, + address=addr_2, value=0x0, args_offset=0x0, args_size=0x40, @@ -83,16 +87,15 @@ def test_callcallcall_000_ooge( ) + Op.STOP, nonce=0, - address=Address(0xBBDCE54B3C571B853032CB3A637E8F5B81DBAF0D), # noqa: E501 ) # Source: lll - # { [[ 2 ]] (CALL 400000 0 0 64 0 64 ) [[11]] 1 } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 + # { [[ 0 ]] (CALL 800000 0 0 64 0 64 ) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x2, + key=0x0, value=Op.CALL( - gas=0x61A80, - address=0x1DD747F92062BB53BB8E867EC2902792435F1748, + gas=0xC3500, + address=addr, value=0x0, args_offset=0x0, args_size=0x40, @@ -100,21 +103,10 @@ def test_callcallcall_000_ooge( ret_size=0x40, ), ) - + Op.SSTORE(key=0xB, value=0x1) - + Op.STOP, - nonce=0, - address=Address(0xB11130CF7EEF6D3F1552623D3506A5BBB07B12CE), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) (KECCAK256 0x00 0x2fffff) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) - + Op.SHA3(offset=0x0, size=0x2FFFFF) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x1DD747F92062BB53BB8E867EC2902792435F1748), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallCodes/test_callcallcall_000_oogm_after.py b/tests/ported_static/stCallCodes/test_callcallcall_000_oogm_after.py index 25d6bc1d554..11cc5e458fb 100644 --- a/tests/ported_static/stCallCodes/test_callcallcall_000_oogm_after.py +++ b/tests/ported_static/stCallCodes/test_callcallcall_000_oogm_after.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_callcallcall_000_oogm_after( ) -> None: """Call -> (call -> call -> code) oog .""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -47,13 +44,19 @@ def test_callcallcall_000_oogm_after( ) # Source: lll - # { [[ 0 ]] (CALL 800000 0 0 64 0 64 ) [[11]] 1} # noqa: E501 - target = pre.deploy_contract( # noqa: F841 + # { (SSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + nonce=0, + ) + # Source: lll + # { [[ 2 ]] (CALL 400000 0 0 64 0 64 ) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x0, + key=0x2, value=Op.CALL( - gas=0xC3500, - address=0xB5D1A486869D27225126C47727513F57D329A01A, + gas=0x61A80, + address=addr_3, value=0x0, args_offset=0x0, args_size=0x40, @@ -61,11 +64,8 @@ def test_callcallcall_000_oogm_after( ret_size=0x40, ), ) - + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x1F4CB3E7976BA5835015B9C3B0075AEA78AAA482), # noqa: E501 ) # Source: lll # { [[ 1 ]] (CALL 600000 0 0 64 0 64 ) (KECCAK256 0x00 0x2fffff) } # noqa: E501 @@ -74,7 +74,7 @@ def test_callcallcall_000_oogm_after( key=0x1, value=Op.CALL( gas=0x927C0, - address=0x8D7270785422B63A97D83BADA6AAC80BEBC3A99D, + address=addr_2, value=0x0, args_offset=0x0, args_size=0x40, @@ -85,16 +85,15 @@ def test_callcallcall_000_oogm_after( + Op.SHA3(offset=0x0, size=0x2FFFFF) + Op.STOP, nonce=0, - address=Address(0xB5D1A486869D27225126C47727513F57D329A01A), # noqa: E501 ) # Source: lll - # { [[ 2 ]] (CALL 400000 0 0 64 0 64 ) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 + # { [[ 0 ]] (CALL 800000 0 0 64 0 64 ) [[11]] 1} # noqa: E501 + target = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x2, + key=0x0, value=Op.CALL( - gas=0x61A80, - address=0xB126C622075B1189FB6C45E851641CFADDF65B36, + gas=0xC3500, + address=addr, value=0x0, args_offset=0x0, args_size=0x40, @@ -102,18 +101,11 @@ def test_callcallcall_000_oogm_after( ret_size=0x40, ), ) + + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x8D7270785422B63A97D83BADA6AAC80BEBC3A99D), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, - nonce=0, - address=Address(0xB126C622075B1189FB6C45E851641CFADDF65B36), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallCodes/test_callcallcall_000_oogm_before.py b/tests/ported_static/stCallCodes/test_callcallcall_000_oogm_before.py index d9cbe3c259d..c5391539ca9 100644 --- a/tests/ported_static/stCallCodes/test_callcallcall_000_oogm_before.py +++ b/tests/ported_static/stCallCodes/test_callcallcall_000_oogm_before.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_callcallcall_000_oogm_before( ) -> None: """Call -> call -> oog call -> code.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -47,13 +44,20 @@ def test_callcallcall_000_oogm_before( ) # Source: lll - # { [[ 0 ]] (CALL 800000 0 0 64 0 64 ) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, + # { (SSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + nonce=0, + ) + # Source: lll + # { (KECCAK256 0x00 0x2fffff) [[ 2 ]] (CALL 400000 0 0 64 0 64 ) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.POP(Op.SHA3(offset=0x0, size=0x2FFFFF)) + + Op.SSTORE( + key=0x2, value=Op.CALL( - gas=0xC3500, - address=0x471072D55A5A95044C2326F0E94A6D8DF5B8089E, + gas=0x61A80, + address=addr_3, value=0x0, args_offset=0x0, args_size=0x40, @@ -62,9 +66,7 @@ def test_callcallcall_000_oogm_before( ), ) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x335B558774699D81F685543CFBCDE5C4E5407686), # noqa: E501 ) # Source: lll # { [[ 1 ]] (CALL 600000 0 0 64 0 64 ) [[11]] 1 } # noqa: E501 @@ -73,7 +75,7 @@ def test_callcallcall_000_oogm_before( key=0x1, value=Op.CALL( gas=0x927C0, - address=0x51A61D678EC27711369C527E5D42A9DE66A5727F, + address=addr_2, value=0x0, args_offset=0x0, args_size=0x40, @@ -84,17 +86,15 @@ def test_callcallcall_000_oogm_before( + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, nonce=0, - address=Address(0x471072D55A5A95044C2326F0E94A6D8DF5B8089E), # noqa: E501 ) # Source: lll - # { (KECCAK256 0x00 0x2fffff) [[ 2 ]] (CALL 400000 0 0 64 0 64 ) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.POP(Op.SHA3(offset=0x0, size=0x2FFFFF)) - + Op.SSTORE( - key=0x2, + # { [[ 0 ]] (CALL 800000 0 0 64 0 64 ) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, value=Op.CALL( - gas=0x61A80, - address=0xB126C622075B1189FB6C45E851641CFADDF65B36, + gas=0xC3500, + address=addr, value=0x0, args_offset=0x0, args_size=0x40, @@ -103,17 +103,9 @@ def test_callcallcall_000_oogm_before( ), ) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x51A61D678EC27711369C527E5D42A9DE66A5727F), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, - nonce=0, - address=Address(0xB126C622075B1189FB6C45E851641CFADDF65B36), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallCodes/test_callcallcall_000_suicide_end.py b/tests/ported_static/stCallCodes/test_callcallcall_000_suicide_end.py index 92469a30501..1ddf3839b34 100644 --- a/tests/ported_static/stCallCodes/test_callcallcall_000_suicide_end.py +++ b/tests/ported_static/stCallCodes/test_callcallcall_000_suicide_end.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_callcallcall_000_suicide_end( ) -> None: """Call -> call -> (call -> code) suicide.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,6 +43,14 @@ def test_callcallcall_000_suicide_end( gas_limit=30000000, ) + # Source: lll + # { (SSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + balance=0x2540BE400, + nonce=0, + address=Address(0xCB6497F0337B6CD0F7239A8819295EC7D1DAFD34), # noqa: E501 + ) # Source: lll # { [[ 0 ]] (CALL 150000 0 0 64 0 64 ) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -107,15 +112,6 @@ def test_callcallcall_000_suicide_end( nonce=0, address=Address(0xD957E143AD2C011BC6A2B142795F1A9BA70D0680), # noqa: E501 ) - # Source: lll - # { (SSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, - balance=0x2540BE400, - nonce=0, - address=Address(0xCB6497F0337B6CD0F7239A8819295EC7D1DAFD34), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallCodes/test_callcallcall_000_suicide_middle.py b/tests/ported_static/stCallCodes/test_callcallcall_000_suicide_middle.py index 664858c25e6..3c0d5a31284 100644 --- a/tests/ported_static/stCallCodes/test_callcallcall_000_suicide_middle.py +++ b/tests/ported_static/stCallCodes/test_callcallcall_000_suicide_middle.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_callcallcall_000_suicide_middle( ) -> None: """Call -> call -> suicide, call -> code.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,6 +43,14 @@ def test_callcallcall_000_suicide_middle( gas_limit=30000000, ) + # Source: lll + # { (SSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + balance=0x2540BE400, + nonce=0, + address=Address(0x73B954EBC05BB0FF4A0F6A13A054D50AD1584099), # noqa: E501 + ) # Source: lll # { [[ 0 ]] (CALL 150000 0 0 64 0 64 ) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -109,15 +114,6 @@ def test_callcallcall_000_suicide_middle( nonce=0, address=Address(0xBA5A575C914981FB64BFB082DC59434C66EB2714), # noqa: E501 ) - # Source: lll - # { (SSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, - balance=0x2540BE400, - nonce=0, - address=Address(0x73B954EBC05BB0FF4A0F6A13A054D50AD1584099), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallCodes/test_callcallcallcode_001.py b/tests/ported_static/stCallCodes/test_callcallcallcode_001.py index 03a2b46a55e..ca7c0a3198c 100644 --- a/tests/ported_static/stCallCodes/test_callcallcallcode_001.py +++ b/tests/ported_static/stCallCodes/test_callcallcallcode_001.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_callcallcallcode_001( ) -> None: """Call -> call -> callcode - > code, params check.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -47,14 +44,28 @@ def test_callcallcallcode_001( ) # Source: lll - # { [[ 0 ]] (CALL 350000 1 0 64 0 64 ) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 + # { (SSTORE 3 1) (SSTORE 4 (CALLER)) (SSTORE 7 (CALLVALUE)) (SSTORE 330 (ADDRESS)) (SSTORE 332 (ORIGIN)) (SSTORE 336 (CALLDATASIZE)) (SSTORE 338 (CODESIZE)) (SSTORE 340 (GASPRICE)) } # noqa: E501 + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + + Op.SSTORE(key=0x4, value=Op.CALLER) + + Op.SSTORE(key=0x7, value=Op.CALLVALUE) + + Op.SSTORE(key=0x14A, value=Op.ADDRESS) + + Op.SSTORE(key=0x14C, value=Op.ORIGIN) + + Op.SSTORE(key=0x150, value=Op.CALLDATASIZE) + + Op.SSTORE(key=0x152, value=Op.CODESIZE) + + Op.SSTORE(key=0x154, value=Op.GASPRICE) + + Op.STOP, + nonce=0, + ) + # Source: lll + # { [[ 2 ]] (CALLCODE 250000 3 0 64 0 64 ) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x0, - value=Op.CALL( - gas=0x55730, - address=0x9073671D2BFB351331716FD279282EACF50824AD, - value=0x1, + key=0x2, + value=Op.CALLCODE( + gas=0x3D090, + address=addr_3, + value=0x3, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -64,7 +75,6 @@ def test_callcallcallcode_001( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xEB09FF15547417853F6F4B240B8804769C37B0F1), # noqa: E501 ) # Source: lll # { [[ 1 ]] (CALL 300000 2 0 64 0 64 ) } # noqa: E501 @@ -73,7 +83,7 @@ def test_callcallcallcode_001( key=0x1, value=Op.CALL( gas=0x493E0, - address=0xFFFFAEB931552E5F094CA96A70BE612DA56B887, + address=addr_2, value=0x2, args_offset=0x0, args_size=0x40, @@ -84,17 +94,16 @@ def test_callcallcallcode_001( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x9073671D2BFB351331716FD279282EACF50824AD), # noqa: E501 ) # Source: lll - # { [[ 2 ]] (CALLCODE 250000 3 0 64 0 64 ) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 + # { [[ 0 ]] (CALL 350000 1 0 64 0 64 ) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x2, - value=Op.CALLCODE( - gas=0x3D090, - address=0x7E63847AAD8CA50FB7C04777DCE6871A6BF8DE0C, - value=0x3, + key=0x0, + value=Op.CALL( + gas=0x55730, + address=addr, + value=0x1, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -104,24 +113,7 @@ def test_callcallcallcode_001( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x0FFFFAEB931552E5F094CA96A70BE612DA56B887), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) (SSTORE 4 (CALLER)) (SSTORE 7 (CALLVALUE)) (SSTORE 330 (ADDRESS)) (SSTORE 332 (ORIGIN)) (SSTORE 336 (CALLDATASIZE)) (SSTORE 338 (CODESIZE)) (SSTORE 340 (GASPRICE)) } # noqa: E501 - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) - + Op.SSTORE(key=0x4, value=Op.CALLER) - + Op.SSTORE(key=0x7, value=Op.CALLVALUE) - + Op.SSTORE(key=0x14A, value=Op.ADDRESS) - + Op.SSTORE(key=0x14C, value=Op.ORIGIN) - + Op.SSTORE(key=0x150, value=Op.CALLDATASIZE) - + Op.SSTORE(key=0x152, value=Op.CODESIZE) - + Op.SSTORE(key=0x154, value=Op.GASPRICE) - + Op.STOP, - nonce=0, - address=Address(0x7E63847AAD8CA50FB7C04777DCE6871A6BF8DE0C), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, @@ -135,10 +127,10 @@ def test_callcallcallcode_001( storage={ 2: 1, 3: 1, - 4: 0xFFFFAEB931552E5F094CA96A70BE612DA56B887, + 4: addr_2, 7: 3, - 330: 0xFFFFAEB931552E5F094CA96A70BE612DA56B887, - 332: 0xEBAF50DEBF10E08302FE4280C32DF010463CA297, + 330: addr_2, + 332: sender, 336: 64, 338: 39, 340: 10, diff --git a/tests/ported_static/stCallCodes/test_callcallcallcode_001_ooge.py b/tests/ported_static/stCallCodes/test_callcallcallcode_001_ooge.py index d006261d6f7..e8e85b353f4 100644 --- a/tests/ported_static/stCallCodes/test_callcallcallcode_001_ooge.py +++ b/tests/ported_static/stCallCodes/test_callcallcallcode_001_ooge.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_callcallcallcode_001_ooge( ) -> None: """Call -> call -> callcode -> code oog.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -47,13 +44,21 @@ def test_callcallcallcode_001_ooge( ) # Source: lll - # { [[ 0 ]] (CALL 800000 0 0 64 0 64 ) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 + # { (SSTORE 3 1) (KECCAK256 0x00 0x2fffff) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + + Op.SHA3(offset=0x0, size=0x2FFFFF) + + Op.STOP, + nonce=0, + ) + # Source: lll + # { [[ 2 ]] (CALLCODE 400000 0 0 64 0 64 ) [[11]] 1 } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x0, - value=Op.CALL( - gas=0xC3500, - address=0xBBDCE54B3C571B853032CB3A637E8F5B81DBAF0D, + key=0x2, + value=Op.CALLCODE( + gas=0x61A80, + address=addr_3, value=0x0, args_offset=0x0, args_size=0x40, @@ -61,10 +66,9 @@ def test_callcallcallcode_001_ooge( ret_size=0x40, ), ) + + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x335B558774699D81F685543CFBCDE5C4E5407686), # noqa: E501 ) # Source: lll # { [[ 1 ]] (CALL 600000 0 0 64 0 64 ) } # noqa: E501 @@ -73,7 +77,7 @@ def test_callcallcallcode_001_ooge( key=0x1, value=Op.CALL( gas=0x927C0, - address=0x6322DC554ACDCADA01CBF7AC6A163D207C34DED2, + address=addr_2, value=0x0, args_offset=0x0, args_size=0x40, @@ -83,16 +87,15 @@ def test_callcallcallcode_001_ooge( ) + Op.STOP, nonce=0, - address=Address(0xBBDCE54B3C571B853032CB3A637E8F5B81DBAF0D), # noqa: E501 ) # Source: lll - # { [[ 2 ]] (CALLCODE 400000 0 0 64 0 64 ) [[11]] 1 } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 + # { [[ 0 ]] (CALL 800000 0 0 64 0 64 ) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x2, - value=Op.CALLCODE( - gas=0x61A80, - address=0x1DD747F92062BB53BB8E867EC2902792435F1748, + key=0x0, + value=Op.CALL( + gas=0xC3500, + address=addr, value=0x0, args_offset=0x0, args_size=0x40, @@ -100,21 +103,10 @@ def test_callcallcallcode_001_ooge( ret_size=0x40, ), ) - + Op.SSTORE(key=0xB, value=0x1) - + Op.STOP, - nonce=0, - address=Address(0x6322DC554ACDCADA01CBF7AC6A163D207C34DED2), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) (KECCAK256 0x00 0x2fffff) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) - + Op.SHA3(offset=0x0, size=0x2FFFFF) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x1DD747F92062BB53BB8E867EC2902792435F1748), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallCodes/test_callcallcallcode_001_oogm_after.py b/tests/ported_static/stCallCodes/test_callcallcallcode_001_oogm_after.py index 5f1b1edd8b7..0c425122802 100644 --- a/tests/ported_static/stCallCodes/test_callcallcallcode_001_oogm_after.py +++ b/tests/ported_static/stCallCodes/test_callcallcallcode_001_oogm_after.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_callcallcallcode_001_oogm_after( ) -> None: """Call -> (call -> callcode -> code) oog.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -47,13 +44,19 @@ def test_callcallcallcode_001_oogm_after( ) # Source: lll - # { [[ 0 ]] (CALL 800000 0 0 64 0 64 ) [[11]] 1 } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 + # { (SSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + nonce=0, + ) + # Source: lll + # { [[ 2 ]] (CALLCODE 400000 0 0 64 0 64 ) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x0, - value=Op.CALL( - gas=0xC3500, - address=0xB5D1A486869D27225126C47727513F57D329A01A, + key=0x2, + value=Op.CALLCODE( + gas=0x61A80, + address=addr_3, value=0x0, args_offset=0x0, args_size=0x40, @@ -61,11 +64,8 @@ def test_callcallcallcode_001_oogm_after( ret_size=0x40, ), ) - + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xE54CCFA5E33A84943997885F0AB9C19C587D8C4F), # noqa: E501 ) # Source: lll # { [[ 1 ]] (CALL 600000 0 0 64 0 64 ) (KECCAK256 0x00 0x2fffff) } # noqa: E501 @@ -74,7 +74,7 @@ def test_callcallcallcode_001_oogm_after( key=0x1, value=Op.CALL( gas=0x927C0, - address=0xBE2D28F50CB59FFBD66D2EB6A3E8D34F3561D8B, + address=addr_2, value=0x0, args_offset=0x0, args_size=0x40, @@ -85,16 +85,15 @@ def test_callcallcallcode_001_oogm_after( + Op.SHA3(offset=0x0, size=0x2FFFFF) + Op.STOP, nonce=0, - address=Address(0xB5D1A486869D27225126C47727513F57D329A01A), # noqa: E501 ) # Source: lll - # { [[ 2 ]] (CALLCODE 400000 0 0 64 0 64 ) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 + # { [[ 0 ]] (CALL 800000 0 0 64 0 64 ) [[11]] 1 } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x2, - value=Op.CALLCODE( - gas=0x61A80, - address=0xB126C622075B1189FB6C45E851641CFADDF65B36, + key=0x0, + value=Op.CALL( + gas=0xC3500, + address=addr, value=0x0, args_offset=0x0, args_size=0x40, @@ -102,18 +101,11 @@ def test_callcallcallcode_001_oogm_after( ret_size=0x40, ), ) + + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x0BE2D28F50CB59FFBD66D2EB6A3E8D34F3561D8B), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, - nonce=0, - address=Address(0xB126C622075B1189FB6C45E851641CFADDF65B36), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallCodes/test_callcallcallcode_001_oogm_before.py b/tests/ported_static/stCallCodes/test_callcallcallcode_001_oogm_before.py index 68dd3ecba8d..965ca6c1752 100644 --- a/tests/ported_static/stCallCodes/test_callcallcallcode_001_oogm_before.py +++ b/tests/ported_static/stCallCodes/test_callcallcallcode_001_oogm_before.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_callcallcallcode_001_oogm_before( ) -> None: """Call -> call -> oog callcode -> code .""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -47,13 +44,20 @@ def test_callcallcallcode_001_oogm_before( ) # Source: lll - # { [[ 0 ]] (CALL 800000 0 0 64 0 64 ) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.CALL( - gas=0xC3500, - address=0x471072D55A5A95044C2326F0E94A6D8DF5B8089E, + # { (SSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + nonce=0, + ) + # Source: lll + # { (KECCAK256 0x00 0x2fffff) [[ 2 ]] (CALLCODE 400000 0 0 64 0 64 ) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.POP(Op.SHA3(offset=0x0, size=0x2FFFFF)) + + Op.SSTORE( + key=0x2, + value=Op.CALLCODE( + gas=0x61A80, + address=addr_3, value=0x0, args_offset=0x0, args_size=0x40, @@ -62,9 +66,7 @@ def test_callcallcallcode_001_oogm_before( ), ) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x335B558774699D81F685543CFBCDE5C4E5407686), # noqa: E501 ) # Source: lll # { [[ 1 ]] (CALL 600000 0 0 64 0 64 ) [[11]] 1 } # noqa: E501 @@ -73,7 +75,7 @@ def test_callcallcallcode_001_oogm_before( key=0x1, value=Op.CALL( gas=0x927C0, - address=0xD33AB78AC3965E7D6F9548DFF5839138A9F69C5, + address=addr_2, value=0x0, args_offset=0x0, args_size=0x40, @@ -84,17 +86,15 @@ def test_callcallcallcode_001_oogm_before( + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, nonce=0, - address=Address(0x471072D55A5A95044C2326F0E94A6D8DF5B8089E), # noqa: E501 ) # Source: lll - # { (KECCAK256 0x00 0x2fffff) [[ 2 ]] (CALLCODE 400000 0 0 64 0 64 ) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.POP(Op.SHA3(offset=0x0, size=0x2FFFFF)) - + Op.SSTORE( - key=0x2, - value=Op.CALLCODE( - gas=0x61A80, - address=0xB126C622075B1189FB6C45E851641CFADDF65B36, + # { [[ 0 ]] (CALL 800000 0 0 64 0 64 ) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.CALL( + gas=0xC3500, + address=addr, value=0x0, args_offset=0x0, args_size=0x40, @@ -103,17 +103,9 @@ def test_callcallcallcode_001_oogm_before( ), ) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x0D33AB78AC3965E7D6F9548DFF5839138A9F69C5), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, - nonce=0, - address=Address(0xB126C622075B1189FB6C45E851641CFADDF65B36), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallCodes/test_callcallcallcode_001_suicide_end.py b/tests/ported_static/stCallCodes/test_callcallcallcode_001_suicide_end.py index 31b589b0576..10bf588c464 100644 --- a/tests/ported_static/stCallCodes/test_callcallcallcode_001_suicide_end.py +++ b/tests/ported_static/stCallCodes/test_callcallcallcode_001_suicide_end.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_callcallcallcode_001_suicide_end( ) -> None: """Call -> call -> ( callcode - > code ) suicide.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,6 +43,14 @@ def test_callcallcallcode_001_suicide_end( gas_limit=30000000, ) + # Source: lll + # { (SSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + balance=0x2540BE400, + nonce=0, + address=Address(0x73B954EBC05BB0FF4A0F6A13A054D50AD1584099), # noqa: E501 + ) # Source: lll # { [[ 0 ]] (CALL 150000 0 0 64 0 64 ) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -107,15 +112,6 @@ def test_callcallcallcode_001_suicide_end( nonce=0, address=Address(0x94C8F980AEECBB6575B12AE614A249FC3E836F21), # noqa: E501 ) - # Source: lll - # { (SSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, - balance=0x2540BE400, - nonce=0, - address=Address(0x73B954EBC05BB0FF4A0F6A13A054D50AD1584099), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallCodes/test_callcallcallcode_001_suicide_middle.py b/tests/ported_static/stCallCodes/test_callcallcallcode_001_suicide_middle.py index 89332f1db52..8819bcc98d8 100644 --- a/tests/ported_static/stCallCodes/test_callcallcallcode_001_suicide_middle.py +++ b/tests/ported_static/stCallCodes/test_callcallcallcode_001_suicide_middle.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_callcallcallcode_001_suicide_middle( ) -> None: """Call -> call -> (suicide) callcode - > code.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,6 +43,14 @@ def test_callcallcallcode_001_suicide_middle( gas_limit=30000000, ) + # Source: lll + # { (SSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + balance=0x2540BE400, + nonce=0, + address=Address(0x73B954EBC05BB0FF4A0F6A13A054D50AD1584099), # noqa: E501 + ) # Source: lll # { [[ 0 ]] (CALL 150000 0 0 64 0 64 ) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -109,15 +114,6 @@ def test_callcallcallcode_001_suicide_middle( nonce=0, address=Address(0x23A077E1E6B0740D6BFBC41DE582F2930ABD1762), # noqa: E501 ) - # Source: lll - # { (SSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, - balance=0x2540BE400, - nonce=0, - address=Address(0x73B954EBC05BB0FF4A0F6A13A054D50AD1584099), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallCodes/test_callcallcode_01.py b/tests/ported_static/stCallCodes/test_callcallcode_01.py index caadf28c8a3..f57fa53ef1d 100644 --- a/tests/ported_static/stCallCodes/test_callcallcode_01.py +++ b/tests/ported_static/stCallCodes/test_callcallcode_01.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_callcallcode_01( ) -> None: """Call -> callcode -> code, params check.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -47,24 +44,18 @@ def test_callcallcode_01( ) # Source: lll - # { [[ 0 ]] (CALL 350000 1 0 64 0 64 ) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.CALL( - gas=0x55730, - address=0x69142B38329C92930601FE8DA12DC5866CDE11C3, - value=0x1, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ), - ) + # { (SSTORE 2 1) (SSTORE 4 (CALLER)) (SSTORE 7 (CALLVALUE)) (SSTORE 230 (ADDRESS)) (SSTORE 232 (ORIGIN)) (SSTORE 236 (CALLDATASIZE)) (SSTORE 238 (CODESIZE)) (SSTORE 240 (GASPRICE)) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x2, value=0x1) + + Op.SSTORE(key=0x4, value=Op.CALLER) + + Op.SSTORE(key=0x7, value=Op.CALLVALUE) + + Op.SSTORE(key=0xE6, value=Op.ADDRESS) + + Op.SSTORE(key=0xE8, value=Op.ORIGIN) + + Op.SSTORE(key=0xEC, value=Op.CALLDATASIZE) + + Op.SSTORE(key=0xEE, value=Op.CODESIZE) + + Op.SSTORE(key=0xF0, value=Op.GASPRICE) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xEB09FF15547417853F6F4B240B8804769C37B0F1), # noqa: E501 ) # Source: lll # { [[ 1 ]] (CALLCODE 250000 2 0 64 0 64 ) } # noqa: E501 @@ -73,7 +64,7 @@ def test_callcallcode_01( key=0x1, value=Op.CALLCODE( gas=0x3D090, - address=0xB096ECA04CD5C92C88BA466F92627D4F04D53C95, + address=addr_2, value=0x2, args_offset=0x0, args_size=0x40, @@ -84,24 +75,26 @@ def test_callcallcode_01( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x69142B38329C92930601FE8DA12DC5866CDE11C3), # noqa: E501 ) # Source: lll - # { (SSTORE 2 1) (SSTORE 4 (CALLER)) (SSTORE 7 (CALLVALUE)) (SSTORE 230 (ADDRESS)) (SSTORE 232 (ORIGIN)) (SSTORE 236 (CALLDATASIZE)) (SSTORE 238 (CODESIZE)) (SSTORE 240 (GASPRICE)) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x2, value=0x1) - + Op.SSTORE(key=0x4, value=Op.CALLER) - + Op.SSTORE(key=0x7, value=Op.CALLVALUE) - + Op.SSTORE(key=0xE6, value=Op.ADDRESS) - + Op.SSTORE(key=0xE8, value=Op.ORIGIN) - + Op.SSTORE(key=0xEC, value=Op.CALLDATASIZE) - + Op.SSTORE(key=0xEE, value=Op.CODESIZE) - + Op.SSTORE(key=0xF0, value=Op.GASPRICE) + # { [[ 0 ]] (CALL 350000 1 0 64 0 64 ) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.CALL( + gas=0x55730, + address=addr, + value=0x1, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ), + ) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xB096ECA04CD5C92C88BA466F92627D4F04D53C95), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, @@ -115,10 +108,10 @@ def test_callcallcode_01( storage={ 1: 1, 2: 1, - 4: 0x69142B38329C92930601FE8DA12DC5866CDE11C3, + 4: addr, 7: 2, - 230: 0x69142B38329C92930601FE8DA12DC5866CDE11C3, - 232: 0xEBAF50DEBF10E08302FE4280C32DF010463CA297, + 230: addr, + 232: sender, 236: 64, 238: 34, 240: 10, diff --git a/tests/ported_static/stCallCodes/test_callcallcode_01_ooge.py b/tests/ported_static/stCallCodes/test_callcallcode_01_ooge.py index a6dc9536fce..bde8c6665fe 100644 --- a/tests/ported_static/stCallCodes/test_callcallcode_01_ooge.py +++ b/tests/ported_static/stCallCodes/test_callcallcode_01_ooge.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_callcallcode_01_ooge( ) -> None: """Call -> callcode -> code oog .""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -47,24 +44,12 @@ def test_callcallcode_01_ooge( ) # Source: lll - # { [[ 0 ]] (CALL 800000 0 0 64 0 64 ) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.CALL( - gas=0xC3500, - address=0x8E6E134402F2EECA8E910E8EC62B45B36EE31F30, - value=0x0, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ), - ) + # { (SSTORE 2 1) (KECCAK256 0x00 0x2fffff) } + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x2, value=0x1) + + Op.SHA3(offset=0x0, size=0x2FFFFF) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x335B558774699D81F685543CFBCDE5C4E5407686), # noqa: E501 ) # Source: lll # { [[ 1 ]] (CALLCODE 600000 0 0 64 0 64 ) [[11]] 1 } # noqa: E501 @@ -73,7 +58,7 @@ def test_callcallcode_01_ooge( key=0x1, value=Op.CALLCODE( gas=0x927C0, - address=0x766B2CF0691F51029181FC511395B7AB71353A88, + address=addr_2, value=0x0, args_offset=0x0, args_size=0x40, @@ -84,18 +69,26 @@ def test_callcallcode_01_ooge( + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, nonce=0, - address=Address(0x8E6E134402F2EECA8E910E8EC62B45B36EE31F30), # noqa: E501 ) # Source: lll - # { (SSTORE 2 1) (KECCAK256 0x00 0x2fffff) } - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x2, value=0x1) - + Op.SHA3(offset=0x0, size=0x2FFFFF) + # { [[ 0 ]] (CALL 800000 0 0 64 0 64 ) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.CALL( + gas=0xC3500, + address=addr, + value=0x0, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ), + ) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x766B2CF0691F51029181FC511395B7AB71353A88), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallCodes/test_callcallcode_01_suicide_end.py b/tests/ported_static/stCallCodes/test_callcallcode_01_suicide_end.py index 9ba100a0daa..fb4a9010a5e 100644 --- a/tests/ported_static/stCallCodes/test_callcallcode_01_suicide_end.py +++ b/tests/ported_static/stCallCodes/test_callcallcode_01_suicide_end.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_callcallcode_01_suicide_end( ) -> None: """Call -> (callcode -> code) suicide.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,6 +43,14 @@ def test_callcallcode_01_suicide_end( gas_limit=30000000, ) + # Source: lll + # { (SSTORE 2 1) } + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x2, value=0x1) + Op.STOP, + balance=0x2540BE400, + nonce=0, + address=Address(0x703B936FD4D674F0FF5D6957F61097152F8781B8), # noqa: E501 + ) # Source: lll # { [[ 0 ]] (CALL 150000 0 0 64 0 64 ) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -87,15 +92,6 @@ def test_callcallcode_01_suicide_end( nonce=0, address=Address(0x799DA5A3C983A22F9C430DE1BF99134EE561E856), # noqa: E501 ) - # Source: lll - # { (SSTORE 2 1) } - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x2, value=0x1) + Op.STOP, - balance=0x2540BE400, - nonce=0, - address=Address(0x703B936FD4D674F0FF5D6957F61097152F8781B8), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallCodes/test_callcallcodecall_010.py b/tests/ported_static/stCallCodes/test_callcallcodecall_010.py index e51b9b6e0a9..ba39016c1c6 100644 --- a/tests/ported_static/stCallCodes/test_callcallcodecall_010.py +++ b/tests/ported_static/stCallCodes/test_callcallcodecall_010.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_callcallcodecall_010( ) -> None: """Call -> callcode -> call -> code, params check.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -47,14 +44,28 @@ def test_callcallcodecall_010( ) # Source: lll - # { [[ 0 ]] (CALL 350000 1 0 64 0 64 ) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 + # { (SSTORE 3 1) (SSTORE 4 (CALLER)) (SSTORE 7 (CALLVALUE)) (SSTORE 330 (ADDRESS)) (SSTORE 332 (ORIGIN)) (SSTORE 336 (CALLDATASIZE)) (SSTORE 338 (CODESIZE)) (SSTORE 340 (GASPRICE)) } # noqa: E501 + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + + Op.SSTORE(key=0x4, value=Op.CALLER) + + Op.SSTORE(key=0x7, value=Op.CALLVALUE) + + Op.SSTORE(key=0x14A, value=Op.ADDRESS) + + Op.SSTORE(key=0x14C, value=Op.ORIGIN) + + Op.SSTORE(key=0x150, value=Op.CALLDATASIZE) + + Op.SSTORE(key=0x152, value=Op.CODESIZE) + + Op.SSTORE(key=0x154, value=Op.GASPRICE) + + Op.STOP, + nonce=0, + ) + # Source: lll + # { [[ 2 ]] (CALL 250000 3 0 64 0 64 ) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x0, + key=0x2, value=Op.CALL( - gas=0x55730, - address=0x4C0DE71B93DE6B7055A3686E4BF93ADD02B39ED8, - value=0x1, + gas=0x3D090, + address=addr_3, + value=0x3, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -64,7 +75,6 @@ def test_callcallcodecall_010( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xEB09FF15547417853F6F4B240B8804769C37B0F1), # noqa: E501 ) # Source: lll # { [[ 1 ]] (CALLCODE 300000 2 0 64 0 64 ) } # noqa: E501 @@ -73,7 +83,7 @@ def test_callcallcodecall_010( key=0x1, value=Op.CALLCODE( gas=0x493E0, - address=0x62441CBE78AA4A4244E084D4F86098E31DCED749, + address=addr_2, value=0x2, args_offset=0x0, args_size=0x40, @@ -84,17 +94,16 @@ def test_callcallcodecall_010( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x4C0DE71B93DE6B7055A3686E4BF93ADD02B39ED8), # noqa: E501 ) # Source: lll - # { [[ 2 ]] (CALL 250000 3 0 64 0 64 ) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 + # { [[ 0 ]] (CALL 350000 1 0 64 0 64 ) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x2, + key=0x0, value=Op.CALL( - gas=0x3D090, - address=0x7E63847AAD8CA50FB7C04777DCE6871A6BF8DE0C, - value=0x3, + gas=0x55730, + address=addr, + value=0x1, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -104,24 +113,7 @@ def test_callcallcodecall_010( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x62441CBE78AA4A4244E084D4F86098E31DCED749), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) (SSTORE 4 (CALLER)) (SSTORE 7 (CALLVALUE)) (SSTORE 330 (ADDRESS)) (SSTORE 332 (ORIGIN)) (SSTORE 336 (CALLDATASIZE)) (SSTORE 338 (CODESIZE)) (SSTORE 340 (GASPRICE)) } # noqa: E501 - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) - + Op.SSTORE(key=0x4, value=Op.CALLER) - + Op.SSTORE(key=0x7, value=Op.CALLVALUE) - + Op.SSTORE(key=0x14A, value=Op.ADDRESS) - + Op.SSTORE(key=0x14C, value=Op.ORIGIN) - + Op.SSTORE(key=0x150, value=Op.CALLDATASIZE) - + Op.SSTORE(key=0x152, value=Op.CODESIZE) - + Op.SSTORE(key=0x154, value=Op.GASPRICE) - + Op.STOP, - nonce=0, - address=Address(0x7E63847AAD8CA50FB7C04777DCE6871A6BF8DE0C), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, @@ -135,10 +127,10 @@ def test_callcallcodecall_010( addr_3: Account( storage={ 3: 1, - 4: 0x4C0DE71B93DE6B7055A3686E4BF93ADD02B39ED8, + 4: addr, 7: 3, - 330: 0x7E63847AAD8CA50FB7C04777DCE6871A6BF8DE0C, - 332: 0xEBAF50DEBF10E08302FE4280C32DF010463CA297, + 330: addr_3, + 332: sender, 336: 64, 338: 39, 340: 10, diff --git a/tests/ported_static/stCallCodes/test_callcallcodecall_010_ooge.py b/tests/ported_static/stCallCodes/test_callcallcodecall_010_ooge.py index 36afdde2292..59d81ad6585 100644 --- a/tests/ported_static/stCallCodes/test_callcallcodecall_010_ooge.py +++ b/tests/ported_static/stCallCodes/test_callcallcodecall_010_ooge.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_callcallcodecall_010_ooge( ) -> None: """Call -> callcode -> call -> code oog.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -47,13 +44,21 @@ def test_callcallcodecall_010_ooge( ) # Source: lll - # { [[ 0 ]] (CALL 800000 0 0 64 0 64 ) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 + # { (SSTORE 3 1) (KECCAK256 0x00 0x2fffff) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + + Op.SHA3(offset=0x0, size=0x2FFFFF) + + Op.STOP, + nonce=0, + ) + # Source: lll + # { [[ 2 ]] (CALL 400000 0 0 64 0 64 ) [[ 11 ]] 1 } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x0, + key=0x2, value=Op.CALL( - gas=0xC3500, - address=0x913CF7A18F61BAB7BCCF5607DFA9B730C5976000, + gas=0x61A80, + address=addr_3, value=0x0, args_offset=0x0, args_size=0x40, @@ -61,10 +66,9 @@ def test_callcallcodecall_010_ooge( ret_size=0x40, ), ) + + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x335B558774699D81F685543CFBCDE5C4E5407686), # noqa: E501 ) # Source: lll # { [[ 1 ]] (CALLCODE 600000 0 0 64 0 64 ) } # noqa: E501 @@ -73,7 +77,7 @@ def test_callcallcodecall_010_ooge( key=0x1, value=Op.CALLCODE( gas=0x927C0, - address=0x8232556DC6A7EED9EBE5B86C640A52AADF2C29AF, + address=addr_2, value=0x0, args_offset=0x0, args_size=0x40, @@ -83,16 +87,15 @@ def test_callcallcodecall_010_ooge( ) + Op.STOP, nonce=0, - address=Address(0x913CF7A18F61BAB7BCCF5607DFA9B730C5976000), # noqa: E501 ) # Source: lll - # { [[ 2 ]] (CALL 400000 0 0 64 0 64 ) [[ 11 ]] 1 } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 + # { [[ 0 ]] (CALL 800000 0 0 64 0 64 ) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x2, + key=0x0, value=Op.CALL( - gas=0x61A80, - address=0x1DD747F92062BB53BB8E867EC2902792435F1748, + gas=0xC3500, + address=addr, value=0x0, args_offset=0x0, args_size=0x40, @@ -100,21 +103,10 @@ def test_callcallcodecall_010_ooge( ret_size=0x40, ), ) - + Op.SSTORE(key=0xB, value=0x1) - + Op.STOP, - nonce=0, - address=Address(0x8232556DC6A7EED9EBE5B86C640A52AADF2C29AF), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) (KECCAK256 0x00 0x2fffff) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) - + Op.SHA3(offset=0x0, size=0x2FFFFF) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x1DD747F92062BB53BB8E867EC2902792435F1748), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallCodes/test_callcallcodecall_010_oogm_after.py b/tests/ported_static/stCallCodes/test_callcallcodecall_010_oogm_after.py index d9f534f0c0e..fa22c791099 100644 --- a/tests/ported_static/stCallCodes/test_callcallcodecall_010_oogm_after.py +++ b/tests/ported_static/stCallCodes/test_callcallcodecall_010_oogm_after.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_callcallcodecall_010_oogm_after( ) -> None: """Call -> (callcode -> call -> code) oog.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -47,13 +44,19 @@ def test_callcallcodecall_010_oogm_after( ) # Source: lll - # { [[ 0 ]] (CALL 800000 0 0 64 0 64 ) [[11]] 1 } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 + # { (SSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + nonce=0, + ) + # Source: lll + # { [[ 2 ]] (CALL 400000 0 0 64 0 64 ) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x0, + key=0x2, value=Op.CALL( - gas=0xC3500, - address=0x37E72DD6FF3C2AC8C1DDAB092A26164A2AD5988C, + gas=0x61A80, + address=addr_3, value=0x0, args_offset=0x0, args_size=0x40, @@ -61,11 +64,8 @@ def test_callcallcodecall_010_oogm_after( ret_size=0x40, ), ) - + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xE54CCFA5E33A84943997885F0AB9C19C587D8C4F), # noqa: E501 ) # Source: lll # { [[ 1 ]] (CALLCODE 600000 0 0 64 0 64 ) (KECCAK256 0x00 0x2fffff) } # noqa: E501 @@ -74,7 +74,7 @@ def test_callcallcodecall_010_oogm_after( key=0x1, value=Op.CALLCODE( gas=0x927C0, - address=0x8D7270785422B63A97D83BADA6AAC80BEBC3A99D, + address=addr_2, value=0x0, args_offset=0x0, args_size=0x40, @@ -85,16 +85,15 @@ def test_callcallcodecall_010_oogm_after( + Op.SHA3(offset=0x0, size=0x2FFFFF) + Op.STOP, nonce=0, - address=Address(0x37E72DD6FF3C2AC8C1DDAB092A26164A2AD5988C), # noqa: E501 ) # Source: lll - # { [[ 2 ]] (CALL 400000 0 0 64 0 64 ) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 + # { [[ 0 ]] (CALL 800000 0 0 64 0 64 ) [[11]] 1 } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x2, + key=0x0, value=Op.CALL( - gas=0x61A80, - address=0xB126C622075B1189FB6C45E851641CFADDF65B36, + gas=0xC3500, + address=addr, value=0x0, args_offset=0x0, args_size=0x40, @@ -102,18 +101,11 @@ def test_callcallcodecall_010_oogm_after( ret_size=0x40, ), ) + + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x8D7270785422B63A97D83BADA6AAC80BEBC3A99D), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, - nonce=0, - address=Address(0xB126C622075B1189FB6C45E851641CFADDF65B36), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallCodes/test_callcallcodecall_010_oogm_before.py b/tests/ported_static/stCallCodes/test_callcallcodecall_010_oogm_before.py index f81ed05bb29..09664f945ba 100644 --- a/tests/ported_static/stCallCodes/test_callcallcodecall_010_oogm_before.py +++ b/tests/ported_static/stCallCodes/test_callcallcodecall_010_oogm_before.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_callcallcodecall_010_oogm_before( ) -> None: """Call -> callcode -> oog call -> code .""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -47,13 +44,20 @@ def test_callcallcodecall_010_oogm_before( ) # Source: lll - # { [[ 0 ]] (CALL 800000 0 0 64 0 64 ) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, + # { (SSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + nonce=0, + ) + # Source: lll + # { (KECCAK256 0x00 0x2fffff) [[ 2 ]] (CALL 400000 0 0 64 0 64 ) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.POP(Op.SHA3(offset=0x0, size=0x2FFFFF)) + + Op.SSTORE( + key=0x2, value=Op.CALL( - gas=0xC3500, - address=0x8E6E134402F2EECA8E910E8EC62B45B36EE31F30, + gas=0x61A80, + address=addr_3, value=0x0, args_offset=0x0, args_size=0x40, @@ -62,9 +66,7 @@ def test_callcallcodecall_010_oogm_before( ), ) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x335B558774699D81F685543CFBCDE5C4E5407686), # noqa: E501 ) # Source: lll # { [[ 1 ]] (CALLCODE 600000 0 0 64 0 64 ) [[11]] 1 } # noqa: E501 @@ -73,7 +75,7 @@ def test_callcallcodecall_010_oogm_before( key=0x1, value=Op.CALLCODE( gas=0x927C0, - address=0x51A61D678EC27711369C527E5D42A9DE66A5727F, + address=addr_2, value=0x0, args_offset=0x0, args_size=0x40, @@ -84,17 +86,15 @@ def test_callcallcodecall_010_oogm_before( + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, nonce=0, - address=Address(0x8E6E134402F2EECA8E910E8EC62B45B36EE31F30), # noqa: E501 ) # Source: lll - # { (KECCAK256 0x00 0x2fffff) [[ 2 ]] (CALL 400000 0 0 64 0 64 ) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.POP(Op.SHA3(offset=0x0, size=0x2FFFFF)) - + Op.SSTORE( - key=0x2, + # { [[ 0 ]] (CALL 800000 0 0 64 0 64 ) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, value=Op.CALL( - gas=0x61A80, - address=0xB126C622075B1189FB6C45E851641CFADDF65B36, + gas=0xC3500, + address=addr, value=0x0, args_offset=0x0, args_size=0x40, @@ -103,17 +103,9 @@ def test_callcallcodecall_010_oogm_before( ), ) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x51A61D678EC27711369C527E5D42A9DE66A5727F), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, - nonce=0, - address=Address(0xB126C622075B1189FB6C45E851641CFADDF65B36), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallCodes/test_callcallcodecall_010_suicide_end.py b/tests/ported_static/stCallCodes/test_callcallcodecall_010_suicide_end.py index 7df47b616e3..f58f5b44ccc 100644 --- a/tests/ported_static/stCallCodes/test_callcallcodecall_010_suicide_end.py +++ b/tests/ported_static/stCallCodes/test_callcallcodecall_010_suicide_end.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_callcallcodecall_010_suicide_end( ) -> None: """Call -> callcode -> (call -> code) (suicide).""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,6 +43,14 @@ def test_callcallcodecall_010_suicide_end( gas_limit=30000000, ) + # Source: lll + # { (SSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + balance=0x2540BE400, + nonce=0, + address=Address(0x73B954EBC05BB0FF4A0F6A13A054D50AD1584099), # noqa: E501 + ) # Source: lll # { [[ 0 ]] (CALL 150000 0 0 64 0 64 ) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -107,15 +112,6 @@ def test_callcallcodecall_010_suicide_end( nonce=0, address=Address(0xD957E143AD2C011BC6A2B142795F1A9BA70D0680), # noqa: E501 ) - # Source: lll - # { (SSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, - balance=0x2540BE400, - nonce=0, - address=Address(0x73B954EBC05BB0FF4A0F6A13A054D50AD1584099), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallCodes/test_callcallcodecall_010_suicide_middle.py b/tests/ported_static/stCallCodes/test_callcallcodecall_010_suicide_middle.py index a5961caa24e..ba15575df15 100644 --- a/tests/ported_static/stCallCodes/test_callcallcodecall_010_suicide_middle.py +++ b/tests/ported_static/stCallCodes/test_callcallcodecall_010_suicide_middle.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_callcallcodecall_010_suicide_middle( ) -> None: """Call -> callcode -> (suicide) call -> code.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,6 +43,14 @@ def test_callcallcodecall_010_suicide_middle( gas_limit=30000000, ) + # Source: lll + # { (SSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + balance=0x2540BE400, + nonce=0, + address=Address(0x73B954EBC05BB0FF4A0F6A13A054D50AD1584099), # noqa: E501 + ) # Source: lll # { [[ 0 ]] (CALL 150000 0 0 64 0 64 ) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -109,15 +114,6 @@ def test_callcallcodecall_010_suicide_middle( nonce=0, address=Address(0xAC90BB4611B91D4C6292BD64E8656110822E01ED), # noqa: E501 ) - # Source: lll - # { (SSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, - balance=0x2540BE400, - nonce=0, - address=Address(0x73B954EBC05BB0FF4A0F6A13A054D50AD1584099), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallCodes/test_callcallcodecallcode_011.py b/tests/ported_static/stCallCodes/test_callcallcodecallcode_011.py index d23bfc2d2a8..f9b66fda98b 100644 --- a/tests/ported_static/stCallCodes/test_callcallcodecallcode_011.py +++ b/tests/ported_static/stCallCodes/test_callcallcodecallcode_011.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_callcallcodecallcode_011( ) -> None: """Call -> callcode -> callcode -> code, check params.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -47,14 +44,28 @@ def test_callcallcodecallcode_011( ) # Source: lll - # { [[ 0 ]] (CALL 350000 1 0 64 0 64 ) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 + # { (SSTORE 3 1) (SSTORE 4 (CALLER)) (SSTORE 7 (CALLVALUE)) (SSTORE 330 (ADDRESS)) (SSTORE 332 (ORIGIN)) (SSTORE 336 (CALLDATASIZE)) (SSTORE 338 (CODESIZE)) (SSTORE 340 (GASPRICE))} # noqa: E501 + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + + Op.SSTORE(key=0x4, value=Op.CALLER) + + Op.SSTORE(key=0x7, value=Op.CALLVALUE) + + Op.SSTORE(key=0x14A, value=Op.ADDRESS) + + Op.SSTORE(key=0x14C, value=Op.ORIGIN) + + Op.SSTORE(key=0x150, value=Op.CALLDATASIZE) + + Op.SSTORE(key=0x152, value=Op.CODESIZE) + + Op.SSTORE(key=0x154, value=Op.GASPRICE) + + Op.STOP, + nonce=0, + ) + # Source: lll + # { [[ 2 ]] (CALLCODE 250000 3 0 64 0 64 ) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x0, - value=Op.CALL( - gas=0x55730, - address=0x4C0DE71B93DE6B7055A3686E4BF93ADD02B39ED8, - value=0x1, + key=0x2, + value=Op.CALLCODE( + gas=0x3D090, + address=addr_3, + value=0x3, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -64,7 +75,6 @@ def test_callcallcodecallcode_011( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xEB09FF15547417853F6F4B240B8804769C37B0F1), # noqa: E501 ) # Source: lll # { [[ 1 ]] (CALLCODE 300000 2 0 64 0 64 ) } # noqa: E501 @@ -73,7 +83,7 @@ def test_callcallcodecallcode_011( key=0x1, value=Op.CALLCODE( gas=0x493E0, - address=0xFFFFAEB931552E5F094CA96A70BE612DA56B887, + address=addr_2, value=0x2, args_offset=0x0, args_size=0x40, @@ -84,17 +94,16 @@ def test_callcallcodecallcode_011( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x4C0DE71B93DE6B7055A3686E4BF93ADD02B39ED8), # noqa: E501 ) # Source: lll - # { [[ 2 ]] (CALLCODE 250000 3 0 64 0 64 ) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 + # { [[ 0 ]] (CALL 350000 1 0 64 0 64 ) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x2, - value=Op.CALLCODE( - gas=0x3D090, - address=0x181B4ED322E192361633CC3C0A418F259AB0CF4B, - value=0x3, + key=0x0, + value=Op.CALL( + gas=0x55730, + address=addr, + value=0x1, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -104,24 +113,7 @@ def test_callcallcodecallcode_011( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x0FFFFAEB931552E5F094CA96A70BE612DA56B887), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) (SSTORE 4 (CALLER)) (SSTORE 7 (CALLVALUE)) (SSTORE 330 (ADDRESS)) (SSTORE 332 (ORIGIN)) (SSTORE 336 (CALLDATASIZE)) (SSTORE 338 (CODESIZE)) (SSTORE 340 (GASPRICE))} # noqa: E501 - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) - + Op.SSTORE(key=0x4, value=Op.CALLER) - + Op.SSTORE(key=0x7, value=Op.CALLVALUE) - + Op.SSTORE(key=0x14A, value=Op.ADDRESS) - + Op.SSTORE(key=0x14C, value=Op.ORIGIN) - + Op.SSTORE(key=0x150, value=Op.CALLDATASIZE) - + Op.SSTORE(key=0x152, value=Op.CODESIZE) - + Op.SSTORE(key=0x154, value=Op.GASPRICE) - + Op.STOP, - nonce=0, - address=Address(0x181B4ED322E192361633CC3C0A418F259AB0CF4B), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, @@ -136,10 +128,10 @@ def test_callcallcodecallcode_011( 1: 1, 2: 1, 3: 1, - 4: 0x4C0DE71B93DE6B7055A3686E4BF93ADD02B39ED8, + 4: addr, 7: 3, - 330: 0x4C0DE71B93DE6B7055A3686E4BF93ADD02B39ED8, - 332: 0xEBAF50DEBF10E08302FE4280C32DF010463CA297, + 330: addr, + 332: sender, 336: 64, 338: 39, 340: 10, diff --git a/tests/ported_static/stCallCodes/test_callcallcodecallcode_011_ooge.py b/tests/ported_static/stCallCodes/test_callcallcodecallcode_011_ooge.py index 178bca74a1d..ce3e20242b0 100644 --- a/tests/ported_static/stCallCodes/test_callcallcodecallcode_011_ooge.py +++ b/tests/ported_static/stCallCodes/test_callcallcodecallcode_011_ooge.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_callcallcodecallcode_011_ooge( ) -> None: """Call -> callcode -> callcode -> code oog.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -47,13 +44,21 @@ def test_callcallcodecallcode_011_ooge( ) # Source: lll - # { [[ 0 ]] (CALL 800000 0 0 64 0 64 ) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 + # { (SSTORE 3 1) (KECCAK256 0x00 0x2fffff) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + + Op.SHA3(offset=0x0, size=0x2FFFFF) + + Op.STOP, + nonce=0, + ) + # Source: lll + # { [[ 2 ]] (CALLCODE 400000 0 0 64 0 64 ) [[11]] 1 } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x0, - value=Op.CALL( - gas=0xC3500, - address=0x913CF7A18F61BAB7BCCF5607DFA9B730C5976000, + key=0x2, + value=Op.CALLCODE( + gas=0x61A80, + address=addr_3, value=0x0, args_offset=0x0, args_size=0x40, @@ -61,10 +66,9 @@ def test_callcallcodecallcode_011_ooge( ret_size=0x40, ), ) + + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x335B558774699D81F685543CFBCDE5C4E5407686), # noqa: E501 ) # Source: lll # { [[ 1 ]] (CALLCODE 600000 0 0 64 0 64 ) } # noqa: E501 @@ -73,7 +77,7 @@ def test_callcallcodecallcode_011_ooge( key=0x1, value=Op.CALLCODE( gas=0x927C0, - address=0x6322DC554ACDCADA01CBF7AC6A163D207C34DED2, + address=addr_2, value=0x0, args_offset=0x0, args_size=0x40, @@ -83,16 +87,15 @@ def test_callcallcodecallcode_011_ooge( ) + Op.STOP, nonce=0, - address=Address(0x913CF7A18F61BAB7BCCF5607DFA9B730C5976000), # noqa: E501 ) # Source: lll - # { [[ 2 ]] (CALLCODE 400000 0 0 64 0 64 ) [[11]] 1 } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 + # { [[ 0 ]] (CALL 800000 0 0 64 0 64 ) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x2, - value=Op.CALLCODE( - gas=0x61A80, - address=0x1DD747F92062BB53BB8E867EC2902792435F1748, + key=0x0, + value=Op.CALL( + gas=0xC3500, + address=addr, value=0x0, args_offset=0x0, args_size=0x40, @@ -100,21 +103,10 @@ def test_callcallcodecallcode_011_ooge( ret_size=0x40, ), ) - + Op.SSTORE(key=0xB, value=0x1) - + Op.STOP, - nonce=0, - address=Address(0x6322DC554ACDCADA01CBF7AC6A163D207C34DED2), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) (KECCAK256 0x00 0x2fffff) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) - + Op.SHA3(offset=0x0, size=0x2FFFFF) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x1DD747F92062BB53BB8E867EC2902792435F1748), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallCodes/test_callcallcodecallcode_011_oogm_after.py b/tests/ported_static/stCallCodes/test_callcallcodecallcode_011_oogm_after.py index c4d0cf4304e..284456ca466 100644 --- a/tests/ported_static/stCallCodes/test_callcallcodecallcode_011_oogm_after.py +++ b/tests/ported_static/stCallCodes/test_callcallcodecallcode_011_oogm_after.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_callcallcodecallcode_011_oogm_after( ) -> None: """Call -> callcode oog -> callcode -> code.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -47,13 +44,19 @@ def test_callcallcodecallcode_011_oogm_after( ) # Source: lll - # { [[ 0 ]] (CALL 800000 0 0 64 0 64 ) [[ 11 ]] 1 } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 + # { (SSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + nonce=0, + ) + # Source: lll + # { [[ 2 ]] (CALLCODE 400000 0 0 64 0 64 ) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x0, - value=Op.CALL( - gas=0xC3500, - address=0x37E72DD6FF3C2AC8C1DDAB092A26164A2AD5988C, + key=0x2, + value=Op.CALLCODE( + gas=0x61A80, + address=addr_3, value=0x0, args_offset=0x0, args_size=0x40, @@ -61,11 +64,8 @@ def test_callcallcodecallcode_011_oogm_after( ret_size=0x40, ), ) - + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x497A77DDB638324A7B8EBF99E189F9FF8C118F19), # noqa: E501 ) # Source: lll # { [[ 1 ]] (CALLCODE 600000 0 0 64 0 64 ) (KECCAK256 0x00 0x2fffff) } # noqa: E501 @@ -74,7 +74,7 @@ def test_callcallcodecallcode_011_oogm_after( key=0x1, value=Op.CALLCODE( gas=0x927C0, - address=0x926DFBCC20B2AB686FC85331883541D174CCC738, + address=addr_2, value=0x0, args_offset=0x0, args_size=0x40, @@ -85,16 +85,15 @@ def test_callcallcodecallcode_011_oogm_after( + Op.SHA3(offset=0x0, size=0x2FFFFF) + Op.STOP, nonce=0, - address=Address(0x37E72DD6FF3C2AC8C1DDAB092A26164A2AD5988C), # noqa: E501 ) # Source: lll - # { [[ 2 ]] (CALLCODE 400000 0 0 64 0 64 ) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 + # { [[ 0 ]] (CALL 800000 0 0 64 0 64 ) [[ 11 ]] 1 } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x2, - value=Op.CALLCODE( - gas=0x61A80, - address=0xB126C622075B1189FB6C45E851641CFADDF65B36, + key=0x0, + value=Op.CALL( + gas=0xC3500, + address=addr, value=0x0, args_offset=0x0, args_size=0x40, @@ -102,18 +101,11 @@ def test_callcallcodecallcode_011_oogm_after( ret_size=0x40, ), ) + + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x926DFBCC20B2AB686FC85331883541D174CCC738), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, - nonce=0, - address=Address(0xB126C622075B1189FB6C45E851641CFADDF65B36), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallCodes/test_callcallcodecallcode_011_oogm_before.py b/tests/ported_static/stCallCodes/test_callcallcodecallcode_011_oogm_before.py index a7b86531004..7065ab4fb25 100644 --- a/tests/ported_static/stCallCodes/test_callcallcodecallcode_011_oogm_before.py +++ b/tests/ported_static/stCallCodes/test_callcallcodecallcode_011_oogm_before.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_callcallcodecallcode_011_oogm_before( ) -> None: """Call -> callcode -> oog callcode -> code.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -47,13 +44,20 @@ def test_callcallcodecallcode_011_oogm_before( ) # Source: lll - # { [[ 0 ]] (CALL 800000 0 0 64 0 64 ) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.CALL( - gas=0xC3500, - address=0x8E6E134402F2EECA8E910E8EC62B45B36EE31F30, + # { (SSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + nonce=0, + ) + # Source: lll + # { (KECCAK256 0x00 0x2fffff) [[ 2 ]] (CALLCODE 400000 0 0 64 0 64 ) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.POP(Op.SHA3(offset=0x0, size=0x2FFFFF)) + + Op.SSTORE( + key=0x2, + value=Op.CALLCODE( + gas=0x61A80, + address=addr_3, value=0x0, args_offset=0x0, args_size=0x40, @@ -62,9 +66,7 @@ def test_callcallcodecallcode_011_oogm_before( ), ) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x335B558774699D81F685543CFBCDE5C4E5407686), # noqa: E501 ) # Source: lll # { [[ 1 ]] (CALLCODE 600000 0 0 64 0 64 ) [[11]] 1 } # noqa: E501 @@ -73,7 +75,7 @@ def test_callcallcodecallcode_011_oogm_before( key=0x1, value=Op.CALLCODE( gas=0x927C0, - address=0xDBB53599A5D13E0C465E1CC4FF24D7F00D780DF4, + address=addr_2, value=0x0, args_offset=0x0, args_size=0x40, @@ -84,17 +86,15 @@ def test_callcallcodecallcode_011_oogm_before( + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, nonce=0, - address=Address(0x8E6E134402F2EECA8E910E8EC62B45B36EE31F30), # noqa: E501 ) # Source: lll - # { (KECCAK256 0x00 0x2fffff) [[ 2 ]] (CALLCODE 400000 0 0 64 0 64 ) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.POP(Op.SHA3(offset=0x0, size=0x2FFFFF)) - + Op.SSTORE( - key=0x2, - value=Op.CALLCODE( - gas=0x61A80, - address=0xB126C622075B1189FB6C45E851641CFADDF65B36, + # { [[ 0 ]] (CALL 800000 0 0 64 0 64 ) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.CALL( + gas=0xC3500, + address=addr, value=0x0, args_offset=0x0, args_size=0x40, @@ -103,17 +103,9 @@ def test_callcallcodecallcode_011_oogm_before( ), ) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xDBB53599A5D13E0C465E1CC4FF24D7F00D780DF4), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, - nonce=0, - address=Address(0xB126C622075B1189FB6C45E851641CFADDF65B36), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallCodes/test_callcallcodecallcode_011_suicide_end.py b/tests/ported_static/stCallCodes/test_callcallcodecallcode_011_suicide_end.py index a96e623ecaf..7891fd9c1cb 100644 --- a/tests/ported_static/stCallCodes/test_callcallcodecallcode_011_suicide_end.py +++ b/tests/ported_static/stCallCodes/test_callcallcodecallcode_011_suicide_end.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_callcallcodecallcode_011_suicide_end( ) -> None: """Call -> callcode -> (callcode -> code) (suicide).""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,6 +43,14 @@ def test_callcallcodecallcode_011_suicide_end( gas_limit=30000000, ) + # Source: lll + # { (SSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + balance=0x2540BE400, + nonce=0, + address=Address(0x73B954EBC05BB0FF4A0F6A13A054D50AD1584099), # noqa: E501 + ) # Source: lll # { [[ 0 ]] (CALL 150000 0 0 64 0 64 ) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -107,15 +112,6 @@ def test_callcallcodecallcode_011_suicide_end( nonce=0, address=Address(0x94C8F980AEECBB6575B12AE614A249FC3E836F21), # noqa: E501 ) - # Source: lll - # { (SSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, - balance=0x2540BE400, - nonce=0, - address=Address(0x73B954EBC05BB0FF4A0F6A13A054D50AD1584099), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallCodes/test_callcallcodecallcode_011_suicide_middle.py b/tests/ported_static/stCallCodes/test_callcallcodecallcode_011_suicide_middle.py index 59940814ba0..ad05de3c39c 100644 --- a/tests/ported_static/stCallCodes/test_callcallcodecallcode_011_suicide_middle.py +++ b/tests/ported_static/stCallCodes/test_callcallcodecallcode_011_suicide_middle.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcallcodecallcode_011_suicide_middle( ) -> None: """Call -> callcode -> (suicide) callcode -> code.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -48,6 +45,14 @@ def test_callcallcodecallcode_011_suicide_middle( gas_limit=30000000, ) + # Source: lll + # { (SSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + balance=0x2540BE400, + nonce=0, + address=Address(0x73B954EBC05BB0FF4A0F6A13A054D50AD1584099), # noqa: E501 + ) # Source: lll # { [[ 0 ]] (CALL 150000 0 0 64 0 64 ) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -111,15 +116,6 @@ def test_callcallcodecallcode_011_suicide_middle( nonce=0, address=Address(0x58DED445D89963DFB8668B9A16B24AFA6F9B83A8), # noqa: E501 ) - # Source: lll - # { (SSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, - balance=0x2540BE400, - nonce=0, - address=Address(0x73B954EBC05BB0FF4A0F6A13A054D50AD1584099), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallCodes/test_callcode_dynamic_code.py b/tests/ported_static/stCallCodes/test_callcode_dynamic_code.py index 334f4b1f1d3..b9d711740ab 100644 --- a/tests/ported_static/stCallCodes/test_callcode_dynamic_code.py +++ b/tests/ported_static/stCallCodes/test_callcode_dynamic_code.py @@ -89,6 +89,7 @@ def test_callcode_dynamic_code( gas_limit=1000000, ) + pre[sender] = Account(balance=0x2386F26FC10000) # Source: lll # { (CALL 800000 (CALLDATALOAD 0) 0 0 0 0 0) } contract_0 = pre.deploy_contract( # noqa: F841 @@ -263,7 +264,6 @@ def test_callcode_dynamic_code( nonce=0, address=Address(0x4000000000000000000000000000000000000000), # noqa: E501 ) - pre[sender] = Account(balance=0x2386F26FC10000) expect_entries_: list[dict] = [ { @@ -273,11 +273,13 @@ def test_callcode_dynamic_code( contract_1: Account( storage={ 0: 1, - 10: 0x13136008B64FF592819B2FA6D43F2835C452020E, + 10: compute_create_address( + address=contract_1, nonce=0 + ), 11: 1, - 20: 0x1000000000000000000000000000000000000000, - 21: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, - 22: 0x1000000000000000000000000000000000000000, + 20: contract_1, + 21: sender, + 22: contract_1, }, ), }, @@ -291,9 +293,9 @@ def test_callcode_dynamic_code( 0: 1, 10: 0x2D39FAD743351D4CF3F4717907D3DDA5E0A689A7, 11: 1, - 20: 0x2000000000000000000000000000000000000000, - 21: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, - 22: 0x2000000000000000000000000000000000000000, + 20: contract_2, + 21: sender, + 22: contract_2, }, ), }, @@ -307,9 +309,13 @@ def test_callcode_dynamic_code( 0: 1, 10: 0xBF1676BE6038AB86D66E00824C2E3577858040F6, 11: 1, - 20: 0x4B86C4ED99B87F0F396BC0C76885453C343916ED, - 21: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, - 22: 0x4B86C4ED99B87F0F396BC0C76885453C343916ED, + 20: compute_create_address( + address=contract_3, nonce=0 + ), + 21: sender, + 22: compute_create_address( + address=contract_3, nonce=0 + ), }, code=b"", balance=0, @@ -326,9 +332,13 @@ def test_callcode_dynamic_code( 0: 1, 10: 0xF2D6BF688FAE45DA62AB2DD4F36945BC924CC61, 11: 1, - 20: 0xA51C188504A60578914FCAE68F7A1F0DCBB856A9, - 21: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, - 22: 0xA51C188504A60578914FCAE68F7A1F0DCBB856A9, + 20: compute_create_address( + address=contract_4, nonce=0 + ), + 21: sender, + 22: compute_create_address( + address=contract_4, nonce=0 + ), }, code=b"", balance=0, diff --git a/tests/ported_static/stCallCodes/test_callcode_dynamic_code2_self_call.py b/tests/ported_static/stCallCodes/test_callcode_dynamic_code2_self_call.py index 70df0338618..258217d6fae 100644 --- a/tests/ported_static/stCallCodes/test_callcode_dynamic_code2_self_call.py +++ b/tests/ported_static/stCallCodes/test_callcode_dynamic_code2_self_call.py @@ -75,6 +75,7 @@ def test_callcode_dynamic_code2_self_call( gas_limit=10000000, ) + pre[sender] = Account(balance=0x2386F26FC10000) # Source: lll # { (CALL 800000 (CALLDATALOAD 0) 0 0 0 0 0) } contract_0 = pre.deploy_contract( # noqa: F841 @@ -156,7 +157,6 @@ def test_callcode_dynamic_code2_self_call( nonce=0, address=Address(0x1000000000000000000000000000000000000000), # noqa: E501 ) - pre[sender] = Account(balance=0x2386F26FC10000) expect_entries_: list[dict] = [ { @@ -164,11 +164,7 @@ def test_callcode_dynamic_code2_self_call( "network": [">=Cancun"], "result": { compute_create_address(address=contract_1, nonce=0): Account( - storage={ - 11: 1, - 12: 0xA000000000000000000000000000000000000000, - }, - balance=1, + storage={11: 1, 12: contract_1}, balance=1 ), }, }, @@ -179,11 +175,13 @@ def test_callcode_dynamic_code2_self_call( contract_2: Account( storage={ 0: 1, - 10: 0x13136008B64FF592819B2FA6D43F2835C452020E, + 10: compute_create_address( + address=contract_2, nonce=0 + ), 11: 1, - 20: 0x1000000000000000000000000000000000000000, - 21: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, - 22: 0x1000000000000000000000000000000000000000, + 20: contract_2, + 21: sender, + 22: contract_2, }, nonce=1, ), diff --git a/tests/ported_static/stCallCodes/test_callcode_emptycontract.py b/tests/ported_static/stCallCodes/test_callcode_emptycontract.py index 72ad304c6de..4e33f02ada6 100644 --- a/tests/ported_static/stCallCodes/test_callcode_emptycontract.py +++ b/tests/ported_static/stCallCodes/test_callcode_emptycontract.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_callcode_emptycontract( ) -> None: """Test_callcode_emptycontract.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xA2333EEF5630066B928DEA5FD85A239F511B5B067D1441EE7AC290D0122B917B - ) + sender = pre.fund_eoa(amount=0x5F5E100) env = Environment( fee_recipient=coinbase, @@ -64,9 +61,7 @@ def test_callcode_emptycontract( + Op.STOP, balance=1000, nonce=0, - address=Address(0x594F6A1A002FC9949AC40616CC146845680302E1), # noqa: E501 ) - pre[sender] = Account(balance=0x5F5E100) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallCodes/test_callcode_in_initcode_to_empty_contract.py b/tests/ported_static/stCallCodes/test_callcode_in_initcode_to_empty_contract.py index 6e5eb5efdb9..edd2ad15114 100644 --- a/tests/ported_static/stCallCodes/test_callcode_in_initcode_to_empty_contract.py +++ b/tests/ported_static/stCallCodes/test_callcode_in_initcode_to_empty_contract.py @@ -75,6 +75,7 @@ def test_callcode_in_initcode_to_empty_contract( gas_limit=10000000, ) + pre[sender] = Account(balance=0x2386F26FC10000) # Source: lll # { (CALL 300000 (CALLDATALOAD 0) 0 0 0 0 0) } contract_0 = pre.deploy_contract( # noqa: F841 @@ -146,7 +147,6 @@ def test_callcode_in_initcode_to_empty_contract( nonce=0, address=Address(0x2000000000000000000000000000000000000000), # noqa: E501 ) - pre[sender] = Account(balance=0x2386F26FC10000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stCallCodes/test_callcode_in_initcode_to_exis_contract_with_v_transfer_ne_money.py b/tests/ported_static/stCallCodes/test_callcode_in_initcode_to_exis_contract_with_v_transfer_ne_money.py index e2ea6f2641f..12715a68d24 100644 --- a/tests/ported_static/stCallCodes/test_callcode_in_initcode_to_exis_contract_with_v_transfer_ne_money.py +++ b/tests/ported_static/stCallCodes/test_callcode_in_initcode_to_exis_contract_with_v_transfer_ne_money.py @@ -78,6 +78,7 @@ def test_callcode_in_initcode_to_exis_contract_with_v_transfer_ne_money( gas_limit=1000000, ) + pre[sender] = Account(balance=0x2386F26FC10000) # Source: lll # { (CALL 300000 (CALLDATALOAD 0) 0 0 0 0 0) } contract_0 = pre.deploy_contract( # noqa: F841 @@ -95,12 +96,20 @@ def test_callcode_in_initcode_to_exis_contract_with_v_transfer_ne_money( address=Address(0x1100000000000000000000000000000000000000), # noqa: E501 ) # Source: lll - # {(seq (CREATE 0 0 (lll (seq [[1]] (CALLCODE 500000 0x1000000000000000000000000000000000000001 1 0 0 0 0)) 0) ) )} # noqa: E501 - contract_1 = pre.deploy_contract( # noqa: F841 - code=Op.PUSH1[0x28] - + Op.CODECOPY(dest_offset=0x0, offset=0xF, size=Op.DUP1) + # { (SSTORE 2 1) } + contract_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x2, value=0x1) + Op.STOP, + nonce=0, + address=Address(0x1000000000000000000000000000000000000001), # noqa: E501 + ) + # Source: lll + # {(seq (CREATE2 0 0 (lll (seq [[1]] (CALLCODE 500000 0x1000000000000000000000000000000000000001 1 0 0 0 0)) 0) 0) )} # noqa: E501 + contract_2 = pre.deploy_contract( # noqa: F841 + code=Op.PUSH1[0x0] + + Op.PUSH1[0x28] + + Op.CODECOPY(dest_offset=0x0, offset=0x11, size=Op.DUP1) + Op.PUSH1[0x0] * 2 - + Op.CREATE + + Op.CREATE2 + Op.STOP + Op.INVALID + Op.SSTORE( @@ -118,16 +127,15 @@ def test_callcode_in_initcode_to_exis_contract_with_v_transfer_ne_money( + Op.STOP, balance=10000, nonce=0, - address=Address(0x1000000000000000000000000000000000000000), # noqa: E501 + address=Address(0x2000000000000000000000000000000000000000), # noqa: E501 ) # Source: lll - # {(seq (CREATE2 0 0 (lll (seq [[1]] (CALLCODE 500000 0x1000000000000000000000000000000000000001 1 0 0 0 0)) 0) 0) )} # noqa: E501 - contract_2 = pre.deploy_contract( # noqa: F841 - code=Op.PUSH1[0x0] - + Op.PUSH1[0x28] - + Op.CODECOPY(dest_offset=0x0, offset=0x11, size=Op.DUP1) + # {(seq (CREATE 0 0 (lll (seq [[1]] (CALLCODE 500000 0x1000000000000000000000000000000000000001 1 0 0 0 0)) 0) ) )} # noqa: E501 + contract_1 = pre.deploy_contract( # noqa: F841 + code=Op.PUSH1[0x28] + + Op.CODECOPY(dest_offset=0x0, offset=0xF, size=Op.DUP1) + Op.PUSH1[0x0] * 2 - + Op.CREATE2 + + Op.CREATE + Op.STOP + Op.INVALID + Op.SSTORE( @@ -145,16 +153,8 @@ def test_callcode_in_initcode_to_exis_contract_with_v_transfer_ne_money( + Op.STOP, balance=10000, nonce=0, - address=Address(0x2000000000000000000000000000000000000000), # noqa: E501 - ) - # Source: lll - # { (SSTORE 2 1) } - contract_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x2, value=0x1) + Op.STOP, - nonce=0, - address=Address(0x1000000000000000000000000000000000000001), # noqa: E501 + address=Address(0x1000000000000000000000000000000000000000), # noqa: E501 ) - pre[sender] = Account(balance=0x2386F26FC10000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stCallCodes/test_callcode_in_initcode_to_existing_contract.py b/tests/ported_static/stCallCodes/test_callcode_in_initcode_to_existing_contract.py index 9bc6495e615..68451f0f3ad 100644 --- a/tests/ported_static/stCallCodes/test_callcode_in_initcode_to_existing_contract.py +++ b/tests/ported_static/stCallCodes/test_callcode_in_initcode_to_existing_contract.py @@ -78,6 +78,7 @@ def test_callcode_in_initcode_to_existing_contract( gas_limit=1000000, ) + pre[sender] = Account(balance=0x2386F26FC10000) # Source: lll # { (CALL 300000 (CALLDATALOAD 0) 0 0 0 0 0) } contract_0 = pre.deploy_contract( # noqa: F841 @@ -95,13 +96,21 @@ def test_callcode_in_initcode_to_existing_contract( address=Address(0x1100000000000000000000000000000000000000), # noqa: E501 ) # Source: lll - # {(seq (CREATE 1 0 (lll (seq [[1]] (CALLCODE 50000 0x1000000000000000000000000000000000000001 1 0 0 0 0)) 0) ) )} # noqa: E501 - contract_1 = pre.deploy_contract( # noqa: F841 - code=Op.PUSH1[0x27] - + Op.CODECOPY(dest_offset=0x0, offset=0xF, size=Op.DUP1) + # { (SSTORE 2 1) } + contract_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x2, value=0x1) + Op.STOP, + nonce=0, + address=Address(0x1000000000000000000000000000000000000001), # noqa: E501 + ) + # Source: lll + # {(seq (CREATE2 1 0 (lll (seq [[1]] (CALLCODE 50000 0x1000000000000000000000000000000000000001 1 0 0 0 0)) 0) 0) )} # noqa: E501 + contract_2 = pre.deploy_contract( # noqa: F841 + code=Op.PUSH1[0x0] + + Op.PUSH1[0x27] + + Op.CODECOPY(dest_offset=0x0, offset=0x11, size=Op.DUP1) + Op.PUSH1[0x0] + Op.PUSH1[0x1] - + Op.CREATE + + Op.CREATE2 + Op.STOP + Op.INVALID + Op.SSTORE( @@ -119,17 +128,16 @@ def test_callcode_in_initcode_to_existing_contract( + Op.STOP, balance=10000, nonce=0, - address=Address(0x1000000000000000000000000000000000000000), # noqa: E501 + address=Address(0x2000000000000000000000000000000000000000), # noqa: E501 ) # Source: lll - # {(seq (CREATE2 1 0 (lll (seq [[1]] (CALLCODE 50000 0x1000000000000000000000000000000000000001 1 0 0 0 0)) 0) 0) )} # noqa: E501 - contract_2 = pre.deploy_contract( # noqa: F841 - code=Op.PUSH1[0x0] - + Op.PUSH1[0x27] - + Op.CODECOPY(dest_offset=0x0, offset=0x11, size=Op.DUP1) + # {(seq (CREATE 1 0 (lll (seq [[1]] (CALLCODE 50000 0x1000000000000000000000000000000000000001 1 0 0 0 0)) 0) ) )} # noqa: E501 + contract_1 = pre.deploy_contract( # noqa: F841 + code=Op.PUSH1[0x27] + + Op.CODECOPY(dest_offset=0x0, offset=0xF, size=Op.DUP1) + Op.PUSH1[0x0] + Op.PUSH1[0x1] - + Op.CREATE2 + + Op.CREATE + Op.STOP + Op.INVALID + Op.SSTORE( @@ -147,16 +155,8 @@ def test_callcode_in_initcode_to_existing_contract( + Op.STOP, balance=10000, nonce=0, - address=Address(0x2000000000000000000000000000000000000000), # noqa: E501 - ) - # Source: lll - # { (SSTORE 2 1) } - contract_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x2, value=0x1) + Op.STOP, - nonce=0, - address=Address(0x1000000000000000000000000000000000000001), # noqa: E501 + address=Address(0x1000000000000000000000000000000000000000), # noqa: E501 ) - pre[sender] = Account(balance=0x2386F26FC10000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stCallCodes/test_callcode_in_initcode_to_existing_contract_with_value_transfer.py b/tests/ported_static/stCallCodes/test_callcode_in_initcode_to_existing_contract_with_value_transfer.py index bea3369e032..4822486a1ea 100644 --- a/tests/ported_static/stCallCodes/test_callcode_in_initcode_to_existing_contract_with_value_transfer.py +++ b/tests/ported_static/stCallCodes/test_callcode_in_initcode_to_existing_contract_with_value_transfer.py @@ -51,6 +51,7 @@ def test_callcode_in_initcode_to_existing_contract_with_value_transfer( gas_limit=1000000, ) + pre[sender] = Account(balance=0x2386F26FC10000) # Source: lll # { (MSTORE 0 0x6040600060406000600573945304eb96065b2a98b57a48a06ae28d285a71b562) (MSTORE 32 0x0186a0f260005500000000000000000000000000000000000000000000000000) (CREATE 5 0 64) } # noqa: E501 contract_0 = pre.deploy_contract( # noqa: F841 @@ -75,7 +76,6 @@ def test_callcode_in_initcode_to_existing_contract_with_value_transfer( nonce=0, address=Address(0x945304EB96065B2A98B57A48A06AE28D285A71B5), # noqa: E501 ) - pre[sender] = Account(balance=0x2386F26FC10000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallCodes/test_callcodecall_10.py b/tests/ported_static/stCallCodes/test_callcodecall_10.py index f00336ab22f..d35ec4f4c3d 100644 --- a/tests/ported_static/stCallCodes/test_callcodecall_10.py +++ b/tests/ported_static/stCallCodes/test_callcodecall_10.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_callcodecall_10( ) -> None: """Callcode -> call -> code, params check .""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -47,24 +44,18 @@ def test_callcodecall_10( ) # Source: lll - # { [[ 0 ]] (CALLCODE 350000 1 0 64 0 64 ) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.CALLCODE( - gas=0x55730, - address=0xC3E151E887921D1EDB46AAE9B4A3FFC5B85E2A89, - value=0x1, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ), - ) + # { (SSTORE 2 1) (SSTORE 4 (CALLER)) (SSTORE 7 (CALLVALUE)) (SSTORE 230 (ADDRESS)) (SSTORE 232 (ORIGIN)) (SSTORE 236 (CALLDATASIZE)) (SSTORE 238 (CODESIZE)) (SSTORE 240 (GASPRICE)) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x2, value=0x1) + + Op.SSTORE(key=0x4, value=Op.CALLER) + + Op.SSTORE(key=0x7, value=Op.CALLVALUE) + + Op.SSTORE(key=0xE6, value=Op.ADDRESS) + + Op.SSTORE(key=0xE8, value=Op.ORIGIN) + + Op.SSTORE(key=0xEC, value=Op.CALLDATASIZE) + + Op.SSTORE(key=0xEE, value=Op.CODESIZE) + + Op.SSTORE(key=0xF0, value=Op.GASPRICE) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xDB43306B16C521B9CC3667FBE7D1B697BB1F9605), # noqa: E501 ) # Source: lll # { [[ 1 ]] (CALL 250000 2 0 64 0 64 ) } # noqa: E501 @@ -73,7 +64,7 @@ def test_callcodecall_10( key=0x1, value=Op.CALL( gas=0x3D090, - address=0xB096ECA04CD5C92C88BA466F92627D4F04D53C95, + address=addr_2, value=0x2, args_offset=0x0, args_size=0x40, @@ -84,24 +75,26 @@ def test_callcodecall_10( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xC3E151E887921D1EDB46AAE9B4A3FFC5B85E2A89), # noqa: E501 ) # Source: lll - # { (SSTORE 2 1) (SSTORE 4 (CALLER)) (SSTORE 7 (CALLVALUE)) (SSTORE 230 (ADDRESS)) (SSTORE 232 (ORIGIN)) (SSTORE 236 (CALLDATASIZE)) (SSTORE 238 (CODESIZE)) (SSTORE 240 (GASPRICE)) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x2, value=0x1) - + Op.SSTORE(key=0x4, value=Op.CALLER) - + Op.SSTORE(key=0x7, value=Op.CALLVALUE) - + Op.SSTORE(key=0xE6, value=Op.ADDRESS) - + Op.SSTORE(key=0xE8, value=Op.ORIGIN) - + Op.SSTORE(key=0xEC, value=Op.CALLDATASIZE) - + Op.SSTORE(key=0xEE, value=Op.CODESIZE) - + Op.SSTORE(key=0xF0, value=Op.GASPRICE) + # { [[ 0 ]] (CALLCODE 350000 1 0 64 0 64 ) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.CALLCODE( + gas=0x55730, + address=addr, + value=0x1, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ), + ) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xB096ECA04CD5C92C88BA466F92627D4F04D53C95), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, @@ -115,10 +108,10 @@ def test_callcodecall_10( addr_2: Account( storage={ 2: 1, - 4: 0xDB43306B16C521B9CC3667FBE7D1B697BB1F9605, + 4: target, 7: 2, - 230: 0xB096ECA04CD5C92C88BA466F92627D4F04D53C95, - 232: 0xEBAF50DEBF10E08302FE4280C32DF010463CA297, + 230: addr_2, + 232: sender, 236: 64, 238: 34, 240: 10, diff --git a/tests/ported_static/stCallCodes/test_callcodecall_10_ooge.py b/tests/ported_static/stCallCodes/test_callcodecall_10_ooge.py index 63ff2db291d..a91fce61861 100644 --- a/tests/ported_static/stCallCodes/test_callcodecall_10_ooge.py +++ b/tests/ported_static/stCallCodes/test_callcodecall_10_ooge.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_callcodecall_10_ooge( ) -> None: """Callcode -> call -> code oog .""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -47,24 +44,12 @@ def test_callcodecall_10_ooge( ) # Source: lll - # { [[ 0 ]] (CALLCODE 800000 0 0 64 0 64 ) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.CALLCODE( - gas=0xC3500, - address=0x471072D55A5A95044C2326F0E94A6D8DF5B8089E, - value=0x0, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ), - ) + # { (SSTORE 2 1) (KECCAK256 0x00 0x2fffff) } + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x2, value=0x1) + + Op.SHA3(offset=0x0, size=0x2FFFFF) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x9E57433AFAFF8A546FBC43CF0330AFB6561DC550), # noqa: E501 ) # Source: lll # { [[ 1 ]] (CALL 600000 0 0 64 0 64 ) [[11]] 1 } # noqa: E501 @@ -73,7 +58,7 @@ def test_callcodecall_10_ooge( key=0x1, value=Op.CALL( gas=0x927C0, - address=0x766B2CF0691F51029181FC511395B7AB71353A88, + address=addr_2, value=0x0, args_offset=0x0, args_size=0x40, @@ -84,18 +69,26 @@ def test_callcodecall_10_ooge( + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, nonce=0, - address=Address(0x471072D55A5A95044C2326F0E94A6D8DF5B8089E), # noqa: E501 ) # Source: lll - # { (SSTORE 2 1) (KECCAK256 0x00 0x2fffff) } - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x2, value=0x1) - + Op.SHA3(offset=0x0, size=0x2FFFFF) + # { [[ 0 ]] (CALLCODE 800000 0 0 64 0 64 ) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.CALLCODE( + gas=0xC3500, + address=addr, + value=0x0, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ), + ) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x766B2CF0691F51029181FC511395B7AB71353A88), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallCodes/test_callcodecall_10_suicide_end.py b/tests/ported_static/stCallCodes/test_callcodecall_10_suicide_end.py index 8db6fa27f1e..9c9e867ae0b 100644 --- a/tests/ported_static/stCallCodes/test_callcodecall_10_suicide_end.py +++ b/tests/ported_static/stCallCodes/test_callcodecall_10_suicide_end.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_callcodecall_10_suicide_end( ) -> None: """CALLCODE -> (CALL -> code) (suicide).""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,6 +43,14 @@ def test_callcodecall_10_suicide_end( gas_limit=30000000, ) + # Source: lll + # { (SSTORE 2 1) } + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x2, value=0x1) + Op.STOP, + balance=0x2540BE400, + nonce=0, + address=Address(0x703B936FD4D674F0FF5D6957F61097152F8781B8), # noqa: E501 + ) # Source: lll # { [[ 0 ]] (CALLCODE 150000 0 0 64 0 64 ) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -87,15 +92,6 @@ def test_callcodecall_10_suicide_end( nonce=0, address=Address(0xF741CFEE7B7FB1025DCCEF3DB5A3CBC8FFB776F8), # noqa: E501 ) - # Source: lll - # { (SSTORE 2 1) } - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x2, value=0x1) + Op.STOP, - balance=0x2540BE400, - nonce=0, - address=Address(0x703B936FD4D674F0FF5D6957F61097152F8781B8), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallCodes/test_callcodecallcall_100.py b/tests/ported_static/stCallCodes/test_callcodecallcall_100.py index f613d36220a..ae6e5485b21 100644 --- a/tests/ported_static/stCallCodes/test_callcodecallcall_100.py +++ b/tests/ported_static/stCallCodes/test_callcodecallcall_100.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_callcodecallcall_100( ) -> None: """CALLCODE -> CALL -> CALL-> code, params check.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -47,14 +44,28 @@ def test_callcodecallcall_100( ) # Source: lll - # { [[ 0 ]] (CALLCODE 350000 1 0 64 0 64 ) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 + # { (SSTORE 3 1) (SSTORE 4 (CALLER)) (SSTORE 7 (CALLVALUE)) (SSTORE 330 (ADDRESS)) (SSTORE 332 (ORIGIN)) (SSTORE 336 (CALLDATASIZE)) (SSTORE 338 (CODESIZE)) (SSTORE 340 (GASPRICE)) } # noqa: E501 + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + + Op.SSTORE(key=0x4, value=Op.CALLER) + + Op.SSTORE(key=0x7, value=Op.CALLVALUE) + + Op.SSTORE(key=0x14A, value=Op.ADDRESS) + + Op.SSTORE(key=0x14C, value=Op.ORIGIN) + + Op.SSTORE(key=0x150, value=Op.CALLDATASIZE) + + Op.SSTORE(key=0x152, value=Op.CODESIZE) + + Op.SSTORE(key=0x154, value=Op.GASPRICE) + + Op.STOP, + nonce=0, + ) + # Source: lll + # { [[ 2 ]] (CALL 250000 3 0 64 0 64 ) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x0, - value=Op.CALLCODE( - gas=0x55730, - address=0x9073671D2BFB351331716FD279282EACF50824AD, - value=0x1, + key=0x2, + value=Op.CALL( + gas=0x3D090, + address=addr_3, + value=0x3, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -64,7 +75,6 @@ def test_callcodecallcall_100( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xDB43306B16C521B9CC3667FBE7D1B697BB1F9605), # noqa: E501 ) # Source: lll # { [[ 1 ]] (CALL 300000 2 0 64 0 64 ) } # noqa: E501 @@ -73,7 +83,7 @@ def test_callcodecallcall_100( key=0x1, value=Op.CALL( gas=0x493E0, - address=0x62441CBE78AA4A4244E084D4F86098E31DCED749, + address=addr_2, value=0x2, args_offset=0x0, args_size=0x40, @@ -84,17 +94,16 @@ def test_callcodecallcall_100( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x9073671D2BFB351331716FD279282EACF50824AD), # noqa: E501 ) # Source: lll - # { [[ 2 ]] (CALL 250000 3 0 64 0 64 ) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 + # { [[ 0 ]] (CALLCODE 350000 1 0 64 0 64 ) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x2, - value=Op.CALL( - gas=0x3D090, - address=0x7E63847AAD8CA50FB7C04777DCE6871A6BF8DE0C, - value=0x3, + key=0x0, + value=Op.CALLCODE( + gas=0x55730, + address=addr, + value=0x1, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -104,24 +113,7 @@ def test_callcodecallcall_100( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x62441CBE78AA4A4244E084D4F86098E31DCED749), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) (SSTORE 4 (CALLER)) (SSTORE 7 (CALLVALUE)) (SSTORE 330 (ADDRESS)) (SSTORE 332 (ORIGIN)) (SSTORE 336 (CALLDATASIZE)) (SSTORE 338 (CODESIZE)) (SSTORE 340 (GASPRICE)) } # noqa: E501 - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) - + Op.SSTORE(key=0x4, value=Op.CALLER) - + Op.SSTORE(key=0x7, value=Op.CALLVALUE) - + Op.SSTORE(key=0x14A, value=Op.ADDRESS) - + Op.SSTORE(key=0x14C, value=Op.ORIGIN) - + Op.SSTORE(key=0x150, value=Op.CALLDATASIZE) - + Op.SSTORE(key=0x152, value=Op.CODESIZE) - + Op.SSTORE(key=0x154, value=Op.GASPRICE) - + Op.STOP, - nonce=0, - address=Address(0x7E63847AAD8CA50FB7C04777DCE6871A6BF8DE0C), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, @@ -136,10 +128,10 @@ def test_callcodecallcall_100( addr_3: Account( storage={ 3: 1, - 4: 0x62441CBE78AA4A4244E084D4F86098E31DCED749, + 4: addr_2, 7: 3, - 330: 0x7E63847AAD8CA50FB7C04777DCE6871A6BF8DE0C, - 332: 0xEBAF50DEBF10E08302FE4280C32DF010463CA297, + 330: addr_3, + 332: sender, 336: 64, 338: 39, 340: 10, diff --git a/tests/ported_static/stCallCodes/test_callcodecallcall_100_ooge.py b/tests/ported_static/stCallCodes/test_callcodecallcall_100_ooge.py index d5c14cc93b9..73f66d5b3ce 100644 --- a/tests/ported_static/stCallCodes/test_callcodecallcall_100_ooge.py +++ b/tests/ported_static/stCallCodes/test_callcodecallcall_100_ooge.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_callcodecallcall_100_ooge( ) -> None: """Callcode -> call -> call -> code oog.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -47,13 +44,21 @@ def test_callcodecallcall_100_ooge( ) # Source: lll - # { [[ 0 ]] (CALLCODE 800000 0 0 64 0 64 ) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 + # { (SSTORE 3 1) (KECCAK256 0x00 0x2fffff) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + + Op.SHA3(offset=0x0, size=0x2FFFFF) + + Op.STOP, + nonce=0, + ) + # Source: lll + # { [[ 2 ]] (CALL 400000 0 0 64 0 64 ) [[ 11 ]] 1 } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x0, - value=Op.CALLCODE( - gas=0xC3500, - address=0xBBDCE54B3C571B853032CB3A637E8F5B81DBAF0D, + key=0x2, + value=Op.CALL( + gas=0x61A80, + address=addr_3, value=0x0, args_offset=0x0, args_size=0x40, @@ -61,10 +66,9 @@ def test_callcodecallcall_100_ooge( ret_size=0x40, ), ) + + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x9E57433AFAFF8A546FBC43CF0330AFB6561DC550), # noqa: E501 ) # Source: lll # { [[ 1 ]] (CALL 600000 0 0 64 0 64 ) } # noqa: E501 @@ -73,7 +77,7 @@ def test_callcodecallcall_100_ooge( key=0x1, value=Op.CALL( gas=0x927C0, - address=0x8232556DC6A7EED9EBE5B86C640A52AADF2C29AF, + address=addr_2, value=0x0, args_offset=0x0, args_size=0x40, @@ -83,16 +87,15 @@ def test_callcodecallcall_100_ooge( ) + Op.STOP, nonce=0, - address=Address(0xBBDCE54B3C571B853032CB3A637E8F5B81DBAF0D), # noqa: E501 ) # Source: lll - # { [[ 2 ]] (CALL 400000 0 0 64 0 64 ) [[ 11 ]] 1 } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 + # { [[ 0 ]] (CALLCODE 800000 0 0 64 0 64 ) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x2, - value=Op.CALL( - gas=0x61A80, - address=0x1DD747F92062BB53BB8E867EC2902792435F1748, + key=0x0, + value=Op.CALLCODE( + gas=0xC3500, + address=addr, value=0x0, args_offset=0x0, args_size=0x40, @@ -100,21 +103,10 @@ def test_callcodecallcall_100_ooge( ret_size=0x40, ), ) - + Op.SSTORE(key=0xB, value=0x1) - + Op.STOP, - nonce=0, - address=Address(0x8232556DC6A7EED9EBE5B86C640A52AADF2C29AF), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) (KECCAK256 0x00 0x2fffff) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) - + Op.SHA3(offset=0x0, size=0x2FFFFF) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x1DD747F92062BB53BB8E867EC2902792435F1748), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallCodes/test_callcodecallcall_100_oogm_after.py b/tests/ported_static/stCallCodes/test_callcodecallcall_100_oogm_after.py index d022528f8e1..ea93eb8f53f 100644 --- a/tests/ported_static/stCallCodes/test_callcodecallcall_100_oogm_after.py +++ b/tests/ported_static/stCallCodes/test_callcodecallcall_100_oogm_after.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_callcodecallcall_100_oogm_after( ) -> None: """Callcode -> (call -> call -> code) oog.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -47,13 +44,19 @@ def test_callcodecallcall_100_oogm_after( ) # Source: lll - # { [[ 0 ]] (CALLCODE 800000 0 0 64 0 64 ) [[11]] 1 } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 + # { (SSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + nonce=0, + ) + # Source: lll + # { [[ 2 ]] (CALL 400000 0 0 64 0 64 ) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x0, - value=Op.CALLCODE( - gas=0xC3500, - address=0xB5D1A486869D27225126C47727513F57D329A01A, + key=0x2, + value=Op.CALL( + gas=0x61A80, + address=addr_3, value=0x0, args_offset=0x0, args_size=0x40, @@ -61,11 +64,8 @@ def test_callcodecallcall_100_oogm_after( ret_size=0x40, ), ) - + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x400347DADA8C51A2AAC4B4C31AE726BA8551E2B9), # noqa: E501 ) # Source: lll # { [[ 1 ]] (CALL 600000 0 0 64 0 64 ) (KECCAK256 0x00 0x2fffff) } # noqa: E501 @@ -74,7 +74,7 @@ def test_callcodecallcall_100_oogm_after( key=0x1, value=Op.CALL( gas=0x927C0, - address=0x8D7270785422B63A97D83BADA6AAC80BEBC3A99D, + address=addr_2, value=0x0, args_offset=0x0, args_size=0x40, @@ -85,16 +85,15 @@ def test_callcodecallcall_100_oogm_after( + Op.SHA3(offset=0x0, size=0x2FFFFF) + Op.STOP, nonce=0, - address=Address(0xB5D1A486869D27225126C47727513F57D329A01A), # noqa: E501 ) # Source: lll - # { [[ 2 ]] (CALL 400000 0 0 64 0 64 ) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 + # { [[ 0 ]] (CALLCODE 800000 0 0 64 0 64 ) [[11]] 1 } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x2, - value=Op.CALL( - gas=0x61A80, - address=0xB126C622075B1189FB6C45E851641CFADDF65B36, + key=0x0, + value=Op.CALLCODE( + gas=0xC3500, + address=addr, value=0x0, args_offset=0x0, args_size=0x40, @@ -102,18 +101,11 @@ def test_callcodecallcall_100_oogm_after( ret_size=0x40, ), ) + + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x8D7270785422B63A97D83BADA6AAC80BEBC3A99D), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, - nonce=0, - address=Address(0xB126C622075B1189FB6C45E851641CFADDF65B36), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallCodes/test_callcodecallcall_100_oogm_before.py b/tests/ported_static/stCallCodes/test_callcodecallcall_100_oogm_before.py index b598b08b48b..d2ea7d3209f 100644 --- a/tests/ported_static/stCallCodes/test_callcodecallcall_100_oogm_before.py +++ b/tests/ported_static/stCallCodes/test_callcodecallcall_100_oogm_before.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_callcodecallcall_100_oogm_before( ) -> None: """Callcode -> call -> oog call -> code .""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -47,13 +44,20 @@ def test_callcodecallcall_100_oogm_before( ) # Source: lll - # { [[ 0 ]] (CALLCODE 800000 0 0 64 0 64 ) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.CALLCODE( - gas=0xC3500, - address=0x471072D55A5A95044C2326F0E94A6D8DF5B8089E, + # { (SSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + nonce=0, + ) + # Source: lll + # { (KECCAK256 0x00 0x2fffff) [[ 2 ]] (CALL 400000 0 0 64 0 64 ) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.POP(Op.SHA3(offset=0x0, size=0x2FFFFF)) + + Op.SSTORE( + key=0x2, + value=Op.CALL( + gas=0x61A80, + address=addr_3, value=0x0, args_offset=0x0, args_size=0x40, @@ -62,9 +66,7 @@ def test_callcodecallcall_100_oogm_before( ), ) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x9E57433AFAFF8A546FBC43CF0330AFB6561DC550), # noqa: E501 ) # Source: lll # { [[ 1 ]] (CALL 600000 0 0 64 0 64 ) [[11]] 1 } # noqa: E501 @@ -73,7 +75,7 @@ def test_callcodecallcall_100_oogm_before( key=0x1, value=Op.CALL( gas=0x927C0, - address=0x4A780315E172DB6C0A08FE70FF4362B0E061B668, + address=addr_2, value=0x0, args_offset=0x0, args_size=0x40, @@ -84,17 +86,15 @@ def test_callcodecallcall_100_oogm_before( + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, nonce=0, - address=Address(0x471072D55A5A95044C2326F0E94A6D8DF5B8089E), # noqa: E501 ) # Source: lll - # { (KECCAK256 0x00 0x2fffff) [[ 2 ]] (CALL 400000 0 0 64 0 64 ) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.POP(Op.SHA3(offset=0x0, size=0x2FFFFF)) - + Op.SSTORE( - key=0x2, - value=Op.CALL( - gas=0x61A80, - address=0xB126C622075B1189FB6C45E851641CFADDF65B36, + # { [[ 0 ]] (CALLCODE 800000 0 0 64 0 64 ) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.CALLCODE( + gas=0xC3500, + address=addr, value=0x0, args_offset=0x0, args_size=0x40, @@ -103,17 +103,9 @@ def test_callcodecallcall_100_oogm_before( ), ) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x4A780315E172DB6C0A08FE70FF4362B0E061B668), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, - nonce=0, - address=Address(0xB126C622075B1189FB6C45E851641CFADDF65B36), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallCodes/test_callcodecallcall_100_suicide_end.py b/tests/ported_static/stCallCodes/test_callcodecallcall_100_suicide_end.py index 3f11ed553b6..a3d8aa6d8fc 100644 --- a/tests/ported_static/stCallCodes/test_callcodecallcall_100_suicide_end.py +++ b/tests/ported_static/stCallCodes/test_callcodecallcall_100_suicide_end.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_callcodecallcall_100_suicide_end( ) -> None: """CALLCODE -> CALL -> (CALL-> code) (suicide).""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,6 +43,14 @@ def test_callcodecallcall_100_suicide_end( gas_limit=30000000, ) + # Source: lll + # { (SSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + balance=0x2540BE400, + nonce=0, + address=Address(0x73B954EBC05BB0FF4A0F6A13A054D50AD1584099), # noqa: E501 + ) # Source: lll # { [[ 0 ]] (CALLCODE 150000 0 0 64 0 64 ) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -107,15 +112,6 @@ def test_callcodecallcall_100_suicide_end( nonce=0, address=Address(0xD957E143AD2C011BC6A2B142795F1A9BA70D0680), # noqa: E501 ) - # Source: lll - # { (SSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, - balance=0x2540BE400, - nonce=0, - address=Address(0x73B954EBC05BB0FF4A0F6A13A054D50AD1584099), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallCodes/test_callcodecallcall_100_suicide_middle.py b/tests/ported_static/stCallCodes/test_callcodecallcall_100_suicide_middle.py index 98c839bd1a6..15ad5968229 100644 --- a/tests/ported_static/stCallCodes/test_callcodecallcall_100_suicide_middle.py +++ b/tests/ported_static/stCallCodes/test_callcodecallcall_100_suicide_middle.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_callcodecallcall_100_suicide_middle( ) -> None: """CALLCODE -> CALL -> (suicide) CALL-> code.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,6 +43,14 @@ def test_callcodecallcall_100_suicide_middle( gas_limit=30000000, ) + # Source: lll + # { (SSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + balance=0x2540BE400, + nonce=0, + address=Address(0x73B954EBC05BB0FF4A0F6A13A054D50AD1584099), # noqa: E501 + ) # Source: lll # { [[ 0 ]] (CALLCODE 150000 0 0 64 0 64 ) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -109,15 +114,6 @@ def test_callcodecallcall_100_suicide_middle( nonce=0, address=Address(0xAC90BB4611B91D4C6292BD64E8656110822E01ED), # noqa: E501 ) - # Source: lll - # { (SSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, - balance=0x2540BE400, - nonce=0, - address=Address(0x73B954EBC05BB0FF4A0F6A13A054D50AD1584099), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallCodes/test_callcodecallcallcode_101.py b/tests/ported_static/stCallCodes/test_callcodecallcallcode_101.py index e73fc0219ec..ed620198470 100644 --- a/tests/ported_static/stCallCodes/test_callcodecallcallcode_101.py +++ b/tests/ported_static/stCallCodes/test_callcodecallcallcode_101.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_callcodecallcallcode_101( ) -> None: """CALLCODE -> CALL -> CALLCODE -> code parameters check.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -47,14 +44,28 @@ def test_callcodecallcallcode_101( ) # Source: lll - # { [[ 0 ]] (CALLCODE 350000 1 0 64 0 64 ) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 + # { (SSTORE 3 1) (SSTORE 4 (CALLER)) (SSTORE 7 (CALLVALUE)) (SSTORE 330 (ADDRESS)) (SSTORE 332 (ORIGIN)) (SSTORE 336 (CALLDATASIZE)) (SSTORE 338 (CODESIZE)) (SSTORE 340 (GASPRICE))} # noqa: E501 + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + + Op.SSTORE(key=0x4, value=Op.CALLER) + + Op.SSTORE(key=0x7, value=Op.CALLVALUE) + + Op.SSTORE(key=0x14A, value=Op.ADDRESS) + + Op.SSTORE(key=0x14C, value=Op.ORIGIN) + + Op.SSTORE(key=0x150, value=Op.CALLDATASIZE) + + Op.SSTORE(key=0x152, value=Op.CODESIZE) + + Op.SSTORE(key=0x154, value=Op.GASPRICE) + + Op.STOP, + nonce=0, + ) + # Source: lll + # { [[ 2 ]] (CALLCODE 250000 3 0 64 0 64 ) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x0, + key=0x2, value=Op.CALLCODE( - gas=0x55730, - address=0x9073671D2BFB351331716FD279282EACF50824AD, - value=0x1, + gas=0x3D090, + address=addr_3, + value=0x3, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -64,7 +75,6 @@ def test_callcodecallcallcode_101( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xDB43306B16C521B9CC3667FBE7D1B697BB1F9605), # noqa: E501 ) # Source: lll # { [[ 1 ]] (CALL 300000 2 0 64 0 64 ) } # noqa: E501 @@ -73,7 +83,7 @@ def test_callcodecallcallcode_101( key=0x1, value=Op.CALL( gas=0x493E0, - address=0xFFFFAEB931552E5F094CA96A70BE612DA56B887, + address=addr_2, value=0x2, args_offset=0x0, args_size=0x40, @@ -84,17 +94,16 @@ def test_callcodecallcallcode_101( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x9073671D2BFB351331716FD279282EACF50824AD), # noqa: E501 ) # Source: lll - # { [[ 2 ]] (CALLCODE 250000 3 0 64 0 64 ) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 + # { [[ 0 ]] (CALLCODE 350000 1 0 64 0 64 ) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x2, + key=0x0, value=Op.CALLCODE( - gas=0x3D090, - address=0x181B4ED322E192361633CC3C0A418F259AB0CF4B, - value=0x3, + gas=0x55730, + address=addr, + value=0x1, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -104,24 +113,7 @@ def test_callcodecallcallcode_101( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x0FFFFAEB931552E5F094CA96A70BE612DA56B887), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) (SSTORE 4 (CALLER)) (SSTORE 7 (CALLVALUE)) (SSTORE 330 (ADDRESS)) (SSTORE 332 (ORIGIN)) (SSTORE 336 (CALLDATASIZE)) (SSTORE 338 (CODESIZE)) (SSTORE 340 (GASPRICE))} # noqa: E501 - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) - + Op.SSTORE(key=0x4, value=Op.CALLER) - + Op.SSTORE(key=0x7, value=Op.CALLVALUE) - + Op.SSTORE(key=0x14A, value=Op.ADDRESS) - + Op.SSTORE(key=0x14C, value=Op.ORIGIN) - + Op.SSTORE(key=0x150, value=Op.CALLDATASIZE) - + Op.SSTORE(key=0x152, value=Op.CODESIZE) - + Op.SSTORE(key=0x154, value=Op.GASPRICE) - + Op.STOP, - nonce=0, - address=Address(0x181B4ED322E192361633CC3C0A418F259AB0CF4B), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, @@ -136,10 +128,10 @@ def test_callcodecallcallcode_101( storage={ 2: 1, 3: 1, - 4: 0xFFFFAEB931552E5F094CA96A70BE612DA56B887, + 4: addr_2, 7: 3, - 330: 0xFFFFAEB931552E5F094CA96A70BE612DA56B887, - 332: 0xEBAF50DEBF10E08302FE4280C32DF010463CA297, + 330: addr_2, + 332: sender, 336: 64, 338: 39, 340: 10, diff --git a/tests/ported_static/stCallCodes/test_callcodecallcallcode_101_ooge.py b/tests/ported_static/stCallCodes/test_callcodecallcallcode_101_ooge.py index 9aa2eaf0700..585d1c19276 100644 --- a/tests/ported_static/stCallCodes/test_callcodecallcallcode_101_ooge.py +++ b/tests/ported_static/stCallCodes/test_callcodecallcallcode_101_ooge.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_callcodecallcallcode_101_ooge( ) -> None: """Callcode -> call -> callcode -> code oog.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -47,13 +44,21 @@ def test_callcodecallcallcode_101_ooge( ) # Source: lll - # { [[ 0 ]] (CALLCODE 800000 0 0 64 0 64 ) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 + # { (SSTORE 3 1) (KECCAK256 0x00 0x2fffff) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + + Op.SHA3(offset=0x0, size=0x2FFFFF) + + Op.STOP, + nonce=0, + ) + # Source: lll + # { [[ 2 ]] (CALLCODE 400000 0 0 64 0 64 ) [[11]] 1} # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x0, + key=0x2, value=Op.CALLCODE( - gas=0xC3500, - address=0xBBDCE54B3C571B853032CB3A637E8F5B81DBAF0D, + gas=0x61A80, + address=addr_3, value=0x0, args_offset=0x0, args_size=0x40, @@ -61,10 +66,9 @@ def test_callcodecallcallcode_101_ooge( ret_size=0x40, ), ) + + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x9E57433AFAFF8A546FBC43CF0330AFB6561DC550), # noqa: E501 ) # Source: lll # { [[ 1 ]] (CALL 600000 0 0 64 0 64 ) } # noqa: E501 @@ -73,7 +77,7 @@ def test_callcodecallcallcode_101_ooge( key=0x1, value=Op.CALL( gas=0x927C0, - address=0x3568EC0DDA63B253E338FBC4990869FD168AB515, + address=addr_2, value=0x0, args_offset=0x0, args_size=0x40, @@ -83,16 +87,15 @@ def test_callcodecallcallcode_101_ooge( ) + Op.STOP, nonce=0, - address=Address(0xBBDCE54B3C571B853032CB3A637E8F5B81DBAF0D), # noqa: E501 ) # Source: lll - # { [[ 2 ]] (CALLCODE 400000 0 0 64 0 64 ) [[11]] 1} # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 + # { [[ 0 ]] (CALLCODE 800000 0 0 64 0 64 ) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x2, + key=0x0, value=Op.CALLCODE( - gas=0x61A80, - address=0x1DD747F92062BB53BB8E867EC2902792435F1748, + gas=0xC3500, + address=addr, value=0x0, args_offset=0x0, args_size=0x40, @@ -100,21 +103,10 @@ def test_callcodecallcallcode_101_ooge( ret_size=0x40, ), ) - + Op.SSTORE(key=0xB, value=0x1) - + Op.STOP, - nonce=0, - address=Address(0x3568EC0DDA63B253E338FBC4990869FD168AB515), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) (KECCAK256 0x00 0x2fffff) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) - + Op.SHA3(offset=0x0, size=0x2FFFFF) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x1DD747F92062BB53BB8E867EC2902792435F1748), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallCodes/test_callcodecallcallcode_101_oogm_after.py b/tests/ported_static/stCallCodes/test_callcodecallcallcode_101_oogm_after.py index 9cb13642b85..5a7ee2f591e 100644 --- a/tests/ported_static/stCallCodes/test_callcodecallcallcode_101_oogm_after.py +++ b/tests/ported_static/stCallCodes/test_callcodecallcallcode_101_oogm_after.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_callcodecallcallcode_101_oogm_after( ) -> None: """Callcode -> call oog -> callcode -> code.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -47,13 +44,19 @@ def test_callcodecallcallcode_101_oogm_after( ) # Source: lll - # { [[ 0 ]] (CALLCODE 800000 0 0 64 0 64 ) [[11]] 1 } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 + # { (SSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + nonce=0, + ) + # Source: lll + # { [[ 2 ]] (CALLCODE 400000 0 0 64 0 64 ) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x0, + key=0x2, value=Op.CALLCODE( - gas=0xC3500, - address=0xB5D1A486869D27225126C47727513F57D329A01A, + gas=0x61A80, + address=addr_3, value=0x0, args_offset=0x0, args_size=0x40, @@ -61,11 +64,8 @@ def test_callcodecallcallcode_101_oogm_after( ret_size=0x40, ), ) - + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x400347DADA8C51A2AAC4B4C31AE726BA8551E2B9), # noqa: E501 ) # Source: lll # { [[ 1 ]] (CALL 600000 0 0 64 0 64 ) (KECCAK256 0x00 0x2fffff) } # noqa: E501 @@ -74,7 +74,7 @@ def test_callcodecallcallcode_101_oogm_after( key=0x1, value=Op.CALL( gas=0x927C0, - address=0x926DFBCC20B2AB686FC85331883541D174CCC738, + address=addr_2, value=0x0, args_offset=0x0, args_size=0x40, @@ -85,16 +85,15 @@ def test_callcodecallcallcode_101_oogm_after( + Op.SHA3(offset=0x0, size=0x2FFFFF) + Op.STOP, nonce=0, - address=Address(0xB5D1A486869D27225126C47727513F57D329A01A), # noqa: E501 ) # Source: lll - # { [[ 2 ]] (CALLCODE 400000 0 0 64 0 64 ) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 + # { [[ 0 ]] (CALLCODE 800000 0 0 64 0 64 ) [[11]] 1 } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x2, + key=0x0, value=Op.CALLCODE( - gas=0x61A80, - address=0xB126C622075B1189FB6C45E851641CFADDF65B36, + gas=0xC3500, + address=addr, value=0x0, args_offset=0x0, args_size=0x40, @@ -102,18 +101,11 @@ def test_callcodecallcallcode_101_oogm_after( ret_size=0x40, ), ) + + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x926DFBCC20B2AB686FC85331883541D174CCC738), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, - nonce=0, - address=Address(0xB126C622075B1189FB6C45E851641CFADDF65B36), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallCodes/test_callcodecallcallcode_101_oogm_before.py b/tests/ported_static/stCallCodes/test_callcodecallcallcode_101_oogm_before.py index 8b49a1bf1c3..0fb2b0dcefd 100644 --- a/tests/ported_static/stCallCodes/test_callcodecallcallcode_101_oogm_before.py +++ b/tests/ported_static/stCallCodes/test_callcodecallcallcode_101_oogm_before.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_callcodecallcallcode_101_oogm_before( ) -> None: """Callcode -> call -> oog callcode -> code.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -47,13 +44,20 @@ def test_callcodecallcallcode_101_oogm_before( ) # Source: lll - # { [[ 0 ]] (CALLCODE 800000 0 0 64 0 64 ) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, + # { (SSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + nonce=0, + ) + # Source: lll + # { (KECCAK256 0x00 0x2fffff) [[ 2 ]] (CALLCODE 400000 0 0 64 0 64 ) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.POP(Op.SHA3(offset=0x0, size=0x2FFFFF)) + + Op.SSTORE( + key=0x2, value=Op.CALLCODE( - gas=0xC3500, - address=0xCECED485B74F13EAFA913073424DC443A976CF14, + gas=0x61A80, + address=addr_3, value=0x0, args_offset=0x0, args_size=0x40, @@ -62,9 +66,7 @@ def test_callcodecallcallcode_101_oogm_before( ), ) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x9E57433AFAFF8A546FBC43CF0330AFB6561DC550), # noqa: E501 ) # Source: lll # { [[ 1 ]] (CALL 600000 0 0 64 0 64 ) [[11]] 1 } # noqa: E501 @@ -73,7 +75,7 @@ def test_callcodecallcallcode_101_oogm_before( key=0x1, value=Op.CALL( gas=0x927C0, - address=0xDBB53599A5D13E0C465E1CC4FF24D7F00D780DF4, + address=addr_2, value=0x0, args_offset=0x0, args_size=0x40, @@ -84,17 +86,15 @@ def test_callcodecallcallcode_101_oogm_before( + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, nonce=0, - address=Address(0xCECED485B74F13EAFA913073424DC443A976CF14), # noqa: E501 ) # Source: lll - # { (KECCAK256 0x00 0x2fffff) [[ 2 ]] (CALLCODE 400000 0 0 64 0 64 ) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.POP(Op.SHA3(offset=0x0, size=0x2FFFFF)) - + Op.SSTORE( - key=0x2, + # { [[ 0 ]] (CALLCODE 800000 0 0 64 0 64 ) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, value=Op.CALLCODE( - gas=0x61A80, - address=0xB126C622075B1189FB6C45E851641CFADDF65B36, + gas=0xC3500, + address=addr, value=0x0, args_offset=0x0, args_size=0x40, @@ -103,17 +103,9 @@ def test_callcodecallcallcode_101_oogm_before( ), ) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xDBB53599A5D13E0C465E1CC4FF24D7F00D780DF4), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, - nonce=0, - address=Address(0xB126C622075B1189FB6C45E851641CFADDF65B36), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallCodes/test_callcodecallcallcode_101_suicide_end.py b/tests/ported_static/stCallCodes/test_callcodecallcallcode_101_suicide_end.py index b3e2e6d7eb6..7c20c53bf1a 100644 --- a/tests/ported_static/stCallCodes/test_callcodecallcallcode_101_suicide_end.py +++ b/tests/ported_static/stCallCodes/test_callcodecallcallcode_101_suicide_end.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_callcodecallcallcode_101_suicide_end( ) -> None: """CALLCODE -> CALL -> (CALLCODE -> code) (suicide).""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,6 +43,14 @@ def test_callcodecallcallcode_101_suicide_end( gas_limit=30000000, ) + # Source: lll + # { (SSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + balance=0x2540BE400, + nonce=0, + address=Address(0x73B954EBC05BB0FF4A0F6A13A054D50AD1584099), # noqa: E501 + ) # Source: lll # { [[ 0 ]] (CALLCODE 150000 0 0 64 0 64 ) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -107,15 +112,6 @@ def test_callcodecallcallcode_101_suicide_end( nonce=0, address=Address(0x94C8F980AEECBB6575B12AE614A249FC3E836F21), # noqa: E501 ) - # Source: lll - # { (SSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, - balance=0x2540BE400, - nonce=0, - address=Address(0x73B954EBC05BB0FF4A0F6A13A054D50AD1584099), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallCodes/test_callcodecallcallcode_101_suicide_middle.py b/tests/ported_static/stCallCodes/test_callcodecallcallcode_101_suicide_middle.py index c3be0d60442..6fe65bcb0de 100644 --- a/tests/ported_static/stCallCodes/test_callcodecallcallcode_101_suicide_middle.py +++ b/tests/ported_static/stCallCodes/test_callcodecallcallcode_101_suicide_middle.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -39,9 +38,7 @@ def test_callcodecallcallcode_101_suicide_middle( contract_1 = Address(0x1000000000000000000000000000000000000001) contract_2 = Address(0x1000000000000000000000000000000000000002) contract_3 = Address(0x1000000000000000000000000000000000000003) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -52,6 +49,14 @@ def test_callcodecallcallcode_101_suicide_middle( gas_limit=30000000, ) + # Source: lll + # { (SSTORE 3 1) } + contract_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + balance=0x2540BE400, + nonce=0, + address=Address(0x1000000000000000000000000000000000000003), # noqa: E501 + ) # Source: lll # { [[ 0 ]] (CALLCODE 150000 0x1000000000000000000000000000000000000001 0 0 64 0 64 ) } # noqa: E501 contract_0 = pre.deploy_contract( # noqa: F841 @@ -115,15 +120,6 @@ def test_callcodecallcallcode_101_suicide_middle( nonce=0, address=Address(0x1000000000000000000000000000000000000002), # noqa: E501 ) - # Source: lll - # { (SSTORE 3 1) } - contract_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, - balance=0x2540BE400, - nonce=0, - address=Address(0x1000000000000000000000000000000000000003), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallCodes/test_callcodecallcode_11.py b/tests/ported_static/stCallCodes/test_callcodecallcode_11.py index 3109a855d6d..ae4f5601541 100644 --- a/tests/ported_static/stCallCodes/test_callcodecallcode_11.py +++ b/tests/ported_static/stCallCodes/test_callcodecallcode_11.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_callcodecallcode_11( ) -> None: """CALLCODE -> CALLCODE -> code, check parameters.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -47,24 +44,18 @@ def test_callcodecallcode_11( ) # Source: lll - # { [[ 0 ]] (CALLCODE 350000 1 0 64 0 64 ) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.CALLCODE( - gas=0x55730, - address=0x69142B38329C92930601FE8DA12DC5866CDE11C3, - value=0x1, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ), - ) + # { (SSTORE 2 1) (SSTORE 4 (CALLER)) (SSTORE 7 (CALLVALUE)) (SSTORE 230 (ADDRESS)) (SSTORE 232 (ORIGIN)) (SSTORE 236 (CALLDATASIZE)) (SSTORE 238 (CODESIZE)) (SSTORE 240 (GASPRICE)) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x2, value=0x1) + + Op.SSTORE(key=0x4, value=Op.CALLER) + + Op.SSTORE(key=0x7, value=Op.CALLVALUE) + + Op.SSTORE(key=0xE6, value=Op.ADDRESS) + + Op.SSTORE(key=0xE8, value=Op.ORIGIN) + + Op.SSTORE(key=0xEC, value=Op.CALLDATASIZE) + + Op.SSTORE(key=0xEE, value=Op.CODESIZE) + + Op.SSTORE(key=0xF0, value=Op.GASPRICE) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xDB43306B16C521B9CC3667FBE7D1B697BB1F9605), # noqa: E501 ) # Source: lll # { [[ 1 ]] (CALLCODE 250000 2 0 64 0 64 ) } # noqa: E501 @@ -73,7 +64,7 @@ def test_callcodecallcode_11( key=0x1, value=Op.CALLCODE( gas=0x3D090, - address=0xB096ECA04CD5C92C88BA466F92627D4F04D53C95, + address=addr_2, value=0x2, args_offset=0x0, args_size=0x40, @@ -84,24 +75,26 @@ def test_callcodecallcode_11( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x69142B38329C92930601FE8DA12DC5866CDE11C3), # noqa: E501 ) # Source: lll - # { (SSTORE 2 1) (SSTORE 4 (CALLER)) (SSTORE 7 (CALLVALUE)) (SSTORE 230 (ADDRESS)) (SSTORE 232 (ORIGIN)) (SSTORE 236 (CALLDATASIZE)) (SSTORE 238 (CODESIZE)) (SSTORE 240 (GASPRICE)) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x2, value=0x1) - + Op.SSTORE(key=0x4, value=Op.CALLER) - + Op.SSTORE(key=0x7, value=Op.CALLVALUE) - + Op.SSTORE(key=0xE6, value=Op.ADDRESS) - + Op.SSTORE(key=0xE8, value=Op.ORIGIN) - + Op.SSTORE(key=0xEC, value=Op.CALLDATASIZE) - + Op.SSTORE(key=0xEE, value=Op.CODESIZE) - + Op.SSTORE(key=0xF0, value=Op.GASPRICE) + # { [[ 0 ]] (CALLCODE 350000 1 0 64 0 64 ) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.CALLCODE( + gas=0x55730, + address=addr, + value=0x1, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ), + ) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xB096ECA04CD5C92C88BA466F92627D4F04D53C95), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, @@ -116,10 +109,10 @@ def test_callcodecallcode_11( 0: 1, 1: 1, 2: 1, - 4: 0xDB43306B16C521B9CC3667FBE7D1B697BB1F9605, + 4: target, 7: 2, - 230: 0xDB43306B16C521B9CC3667FBE7D1B697BB1F9605, - 232: 0xEBAF50DEBF10E08302FE4280C32DF010463CA297, + 230: target, + 232: sender, 236: 64, 238: 34, 240: 10, diff --git a/tests/ported_static/stCallCodes/test_callcodecallcode_11_ooge.py b/tests/ported_static/stCallCodes/test_callcodecallcode_11_ooge.py index c6f00447617..675cb20b369 100644 --- a/tests/ported_static/stCallCodes/test_callcodecallcode_11_ooge.py +++ b/tests/ported_static/stCallCodes/test_callcodecallcode_11_ooge.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_callcodecallcode_11_ooge( ) -> None: """Callcode -> callcode -> code oog.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -47,24 +44,12 @@ def test_callcodecallcode_11_ooge( ) # Source: lll - # { [[ 0 ]] (CALLCODE 800000 0 0 64 0 64 ) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.CALLCODE( - gas=0xC3500, - address=0x8E6E134402F2EECA8E910E8EC62B45B36EE31F30, - value=0x0, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ), - ) + # { (SSTORE 2 1) (KECCAK256 0x00 0x2fffff) } + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x2, value=0x1) + + Op.SHA3(offset=0x0, size=0x2FFFFF) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x9E57433AFAFF8A546FBC43CF0330AFB6561DC550), # noqa: E501 ) # Source: lll # { [[ 1 ]] (CALLCODE 600000 0 0 64 0 64 ) [[11]] 1 } # noqa: E501 @@ -73,7 +58,7 @@ def test_callcodecallcode_11_ooge( key=0x1, value=Op.CALLCODE( gas=0x927C0, - address=0x766B2CF0691F51029181FC511395B7AB71353A88, + address=addr_2, value=0x0, args_offset=0x0, args_size=0x40, @@ -84,18 +69,26 @@ def test_callcodecallcode_11_ooge( + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, nonce=0, - address=Address(0x8E6E134402F2EECA8E910E8EC62B45B36EE31F30), # noqa: E501 ) # Source: lll - # { (SSTORE 2 1) (KECCAK256 0x00 0x2fffff) } - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x2, value=0x1) - + Op.SHA3(offset=0x0, size=0x2FFFFF) + # { [[ 0 ]] (CALLCODE 800000 0 0 64 0 64 ) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.CALLCODE( + gas=0xC3500, + address=addr, + value=0x0, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ), + ) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x766B2CF0691F51029181FC511395B7AB71353A88), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallCodes/test_callcodecallcode_11_suicide_end.py b/tests/ported_static/stCallCodes/test_callcodecallcode_11_suicide_end.py index c51aa95a6fd..eed97ff5128 100644 --- a/tests/ported_static/stCallCodes/test_callcodecallcode_11_suicide_end.py +++ b/tests/ported_static/stCallCodes/test_callcodecallcode_11_suicide_end.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_callcodecallcode_11_suicide_end( ) -> None: """CALLCODE -> (CALLCODE -> code) selfdestruct.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,6 +43,14 @@ def test_callcodecallcode_11_suicide_end( gas_limit=30000000, ) + # Source: lll + # { (SSTORE 2 1) } + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x2, value=0x1) + Op.STOP, + balance=0x2540BE400, + nonce=0, + address=Address(0x703B936FD4D674F0FF5D6957F61097152F8781B8), # noqa: E501 + ) # Source: lll # { [[ 0 ]] (CALLCODE 150000 0 0 64 0 64 ) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -87,15 +92,6 @@ def test_callcodecallcode_11_suicide_end( nonce=0, address=Address(0x799DA5A3C983A22F9C430DE1BF99134EE561E856), # noqa: E501 ) - # Source: lll - # { (SSTORE 2 1) } - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x2, value=0x1) + Op.STOP, - balance=0x2540BE400, - nonce=0, - address=Address(0x703B936FD4D674F0FF5D6957F61097152F8781B8), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallCodes/test_callcodecallcodecall_110.py b/tests/ported_static/stCallCodes/test_callcodecallcodecall_110.py index d6c5a55057e..554208349a6 100644 --- a/tests/ported_static/stCallCodes/test_callcodecallcodecall_110.py +++ b/tests/ported_static/stCallCodes/test_callcodecallcodecall_110.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_callcodecallcodecall_110( ) -> None: """CALLCODE -> CALLCODE -> CALL -> code, check parameters.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -47,14 +44,28 @@ def test_callcodecallcodecall_110( ) # Source: lll - # { [[ 0 ]] (CALLCODE 350000 1 0 64 0 64 ) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 + # { (SSTORE 3 1) (SSTORE 4 (CALLER)) (SSTORE 7 (CALLVALUE)) (SSTORE 330 (ADDRESS)) (SSTORE 332 (ORIGIN)) (SSTORE 336 (CALLDATASIZE)) (SSTORE 338 (CODESIZE)) (SSTORE 340 (GASPRICE))} # noqa: E501 + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + + Op.SSTORE(key=0x4, value=Op.CALLER) + + Op.SSTORE(key=0x7, value=Op.CALLVALUE) + + Op.SSTORE(key=0x14A, value=Op.ADDRESS) + + Op.SSTORE(key=0x14C, value=Op.ORIGIN) + + Op.SSTORE(key=0x150, value=Op.CALLDATASIZE) + + Op.SSTORE(key=0x152, value=Op.CODESIZE) + + Op.SSTORE(key=0x154, value=Op.GASPRICE) + + Op.STOP, + nonce=0, + ) + # Source: lll + # { [[ 2 ]] (CALL 250000 3 0 64 0 64 ) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x0, - value=Op.CALLCODE( - gas=0x55730, - address=0x4C0DE71B93DE6B7055A3686E4BF93ADD02B39ED8, - value=0x1, + key=0x2, + value=Op.CALL( + gas=0x3D090, + address=addr_3, + value=0x3, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -64,7 +75,6 @@ def test_callcodecallcodecall_110( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xDB43306B16C521B9CC3667FBE7D1B697BB1F9605), # noqa: E501 ) # Source: lll # { [[ 1 ]] (CALLCODE 300000 2 0 64 0 64 ) } # noqa: E501 @@ -73,7 +83,7 @@ def test_callcodecallcodecall_110( key=0x1, value=Op.CALLCODE( gas=0x493E0, - address=0x62441CBE78AA4A4244E084D4F86098E31DCED749, + address=addr_2, value=0x2, args_offset=0x0, args_size=0x40, @@ -84,17 +94,16 @@ def test_callcodecallcodecall_110( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x4C0DE71B93DE6B7055A3686E4BF93ADD02B39ED8), # noqa: E501 ) # Source: lll - # { [[ 2 ]] (CALL 250000 3 0 64 0 64 ) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 + # { [[ 0 ]] (CALLCODE 350000 1 0 64 0 64 ) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x2, - value=Op.CALL( - gas=0x3D090, - address=0x181B4ED322E192361633CC3C0A418F259AB0CF4B, - value=0x3, + key=0x0, + value=Op.CALLCODE( + gas=0x55730, + address=addr, + value=0x1, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -104,24 +113,7 @@ def test_callcodecallcodecall_110( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x62441CBE78AA4A4244E084D4F86098E31DCED749), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) (SSTORE 4 (CALLER)) (SSTORE 7 (CALLVALUE)) (SSTORE 330 (ADDRESS)) (SSTORE 332 (ORIGIN)) (SSTORE 336 (CALLDATASIZE)) (SSTORE 338 (CODESIZE)) (SSTORE 340 (GASPRICE))} # noqa: E501 - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) - + Op.SSTORE(key=0x4, value=Op.CALLER) - + Op.SSTORE(key=0x7, value=Op.CALLVALUE) - + Op.SSTORE(key=0x14A, value=Op.ADDRESS) - + Op.SSTORE(key=0x14C, value=Op.ORIGIN) - + Op.SSTORE(key=0x150, value=Op.CALLDATASIZE) - + Op.SSTORE(key=0x152, value=Op.CODESIZE) - + Op.SSTORE(key=0x154, value=Op.GASPRICE) - + Op.STOP, - nonce=0, - address=Address(0x181B4ED322E192361633CC3C0A418F259AB0CF4B), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, @@ -135,10 +127,10 @@ def test_callcodecallcodecall_110( addr_3: Account( storage={ 3: 1, - 4: 0xDB43306B16C521B9CC3667FBE7D1B697BB1F9605, + 4: target, 7: 3, - 330: 0x181B4ED322E192361633CC3C0A418F259AB0CF4B, - 332: 0xEBAF50DEBF10E08302FE4280C32DF010463CA297, + 330: addr_3, + 332: sender, 336: 64, 338: 39, 340: 10, diff --git a/tests/ported_static/stCallCodes/test_callcodecallcodecall_110_ooge.py b/tests/ported_static/stCallCodes/test_callcodecallcodecall_110_ooge.py index c7eecb6d462..12893a6eea3 100644 --- a/tests/ported_static/stCallCodes/test_callcodecallcodecall_110_ooge.py +++ b/tests/ported_static/stCallCodes/test_callcodecallcodecall_110_ooge.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_callcodecallcodecall_110_ooge( ) -> None: """Callcode -> callcode -> call -> code oog.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -47,13 +44,21 @@ def test_callcodecallcodecall_110_ooge( ) # Source: lll - # { [[ 0 ]] (CALLCODE 800000 0 0 64 0 64 ) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 + # { (SSTORE 3 1) (KECCAK256 0x00 0x2fffff) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + + Op.SHA3(offset=0x0, size=0x2FFFFF) + + Op.STOP, + nonce=0, + ) + # Source: lll + # { [[ 2 ]] (CALL 400000 0 0 64 0 64 ) [[11]] 1 } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x0, - value=Op.CALLCODE( - gas=0xC3500, - address=0x913CF7A18F61BAB7BCCF5607DFA9B730C5976000, + key=0x2, + value=Op.CALL( + gas=0x61A80, + address=addr_3, value=0x0, args_offset=0x0, args_size=0x40, @@ -61,10 +66,9 @@ def test_callcodecallcodecall_110_ooge( ret_size=0x40, ), ) + + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x9E57433AFAFF8A546FBC43CF0330AFB6561DC550), # noqa: E501 ) # Source: lll # { [[ 1 ]] (CALLCODE 600000 0 0 64 0 64 ) } # noqa: E501 @@ -73,7 +77,7 @@ def test_callcodecallcodecall_110_ooge( key=0x1, value=Op.CALLCODE( gas=0x927C0, - address=0xDB067DDF10E702A0CDCAA489117330E5395155CB, + address=addr_2, value=0x0, args_offset=0x0, args_size=0x40, @@ -83,16 +87,15 @@ def test_callcodecallcodecall_110_ooge( ) + Op.STOP, nonce=0, - address=Address(0x913CF7A18F61BAB7BCCF5607DFA9B730C5976000), # noqa: E501 ) # Source: lll - # { [[ 2 ]] (CALL 400000 0 0 64 0 64 ) [[11]] 1 } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 + # { [[ 0 ]] (CALLCODE 800000 0 0 64 0 64 ) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x2, - value=Op.CALL( - gas=0x61A80, - address=0x1DD747F92062BB53BB8E867EC2902792435F1748, + key=0x0, + value=Op.CALLCODE( + gas=0xC3500, + address=addr, value=0x0, args_offset=0x0, args_size=0x40, @@ -100,21 +103,10 @@ def test_callcodecallcodecall_110_ooge( ret_size=0x40, ), ) - + Op.SSTORE(key=0xB, value=0x1) - + Op.STOP, - nonce=0, - address=Address(0xDB067DDF10E702A0CDCAA489117330E5395155CB), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) (KECCAK256 0x00 0x2fffff) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) - + Op.SHA3(offset=0x0, size=0x2FFFFF) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x1DD747F92062BB53BB8E867EC2902792435F1748), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallCodes/test_callcodecallcodecall_110_oogm_after.py b/tests/ported_static/stCallCodes/test_callcodecallcodecall_110_oogm_after.py index 2404fb708f9..3dcb2cbd581 100644 --- a/tests/ported_static/stCallCodes/test_callcodecallcodecall_110_oogm_after.py +++ b/tests/ported_static/stCallCodes/test_callcodecallcodecall_110_oogm_after.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_callcodecallcodecall_110_oogm_after( ) -> None: """Callcode -> callcode (oog) -> call -> code.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -47,13 +44,19 @@ def test_callcodecallcodecall_110_oogm_after( ) # Source: lll - # { [[ 0 ]] (CALLCODE 800000 0 0 64 0 64 ) [[11]] 1 } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 + # { (SSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + nonce=0, + ) + # Source: lll + # { [[ 2 ]] (CALL 400000 0 0 64 0 64 ) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x0, - value=Op.CALLCODE( - gas=0xC3500, - address=0x37E72DD6FF3C2AC8C1DDAB092A26164A2AD5988C, + key=0x2, + value=Op.CALL( + gas=0x61A80, + address=addr_3, value=0x0, args_offset=0x0, args_size=0x40, @@ -61,11 +64,8 @@ def test_callcodecallcodecall_110_oogm_after( ret_size=0x40, ), ) - + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x400347DADA8C51A2AAC4B4C31AE726BA8551E2B9), # noqa: E501 ) # Source: lll # { [[ 1 ]] (CALLCODE 600000 0 0 64 0 64 ) (KECCAK256 0x00 0x2fffff) } # noqa: E501 @@ -74,7 +74,7 @@ def test_callcodecallcodecall_110_oogm_after( key=0x1, value=Op.CALLCODE( gas=0x927C0, - address=0x83B7D129B58AB5315B795F9A8D34294EC60C9D63, + address=addr_2, value=0x0, args_offset=0x0, args_size=0x40, @@ -85,16 +85,15 @@ def test_callcodecallcodecall_110_oogm_after( + Op.SHA3(offset=0x0, size=0x2FFFFF) + Op.STOP, nonce=0, - address=Address(0x37E72DD6FF3C2AC8C1DDAB092A26164A2AD5988C), # noqa: E501 ) # Source: lll - # { [[ 2 ]] (CALL 400000 0 0 64 0 64 ) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 + # { [[ 0 ]] (CALLCODE 800000 0 0 64 0 64 ) [[11]] 1 } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x2, - value=Op.CALL( - gas=0x61A80, - address=0xB126C622075B1189FB6C45E851641CFADDF65B36, + key=0x0, + value=Op.CALLCODE( + gas=0xC3500, + address=addr, value=0x0, args_offset=0x0, args_size=0x40, @@ -102,18 +101,11 @@ def test_callcodecallcodecall_110_oogm_after( ret_size=0x40, ), ) + + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x83B7D129B58AB5315B795F9A8D34294EC60C9D63), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, - nonce=0, - address=Address(0xB126C622075B1189FB6C45E851641CFADDF65B36), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallCodes/test_callcodecallcodecall_110_oogm_before.py b/tests/ported_static/stCallCodes/test_callcodecallcodecall_110_oogm_before.py index 4594be6a819..728e22c7664 100644 --- a/tests/ported_static/stCallCodes/test_callcodecallcodecall_110_oogm_before.py +++ b/tests/ported_static/stCallCodes/test_callcodecallcodecall_110_oogm_before.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_callcodecallcodecall_110_oogm_before( ) -> None: """Callcode -> callcode -> (oog) call -> code.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -47,13 +44,20 @@ def test_callcodecallcodecall_110_oogm_before( ) # Source: lll - # { [[ 0 ]] (CALLCODE 800000 0 0 64 0 64 ) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.CALLCODE( - gas=0xC3500, - address=0x8E6E134402F2EECA8E910E8EC62B45B36EE31F30, + # { (SSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + nonce=0, + ) + # Source: lll + # { (KECCAK256 0x00 0x2fffff) [[ 2 ]] (CALL 400000 0 0 64 0 64 ) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.POP(Op.SHA3(offset=0x0, size=0x2FFFFF)) + + Op.SSTORE( + key=0x2, + value=Op.CALL( + gas=0x61A80, + address=addr_3, value=0x0, args_offset=0x0, args_size=0x40, @@ -62,9 +66,7 @@ def test_callcodecallcodecall_110_oogm_before( ), ) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x9E57433AFAFF8A546FBC43CF0330AFB6561DC550), # noqa: E501 ) # Source: lll # { [[ 1 ]] (CALLCODE 600000 0 0 64 0 64 ) [[11]] 1 } # noqa: E501 @@ -73,7 +75,7 @@ def test_callcodecallcodecall_110_oogm_before( key=0x1, value=Op.CALLCODE( gas=0x927C0, - address=0x51A61D678EC27711369C527E5D42A9DE66A5727F, + address=addr_2, value=0x0, args_offset=0x0, args_size=0x40, @@ -84,17 +86,15 @@ def test_callcodecallcodecall_110_oogm_before( + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, nonce=0, - address=Address(0x8E6E134402F2EECA8E910E8EC62B45B36EE31F30), # noqa: E501 ) # Source: lll - # { (KECCAK256 0x00 0x2fffff) [[ 2 ]] (CALL 400000 0 0 64 0 64 ) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.POP(Op.SHA3(offset=0x0, size=0x2FFFFF)) - + Op.SSTORE( - key=0x2, - value=Op.CALL( - gas=0x61A80, - address=0xB126C622075B1189FB6C45E851641CFADDF65B36, + # { [[ 0 ]] (CALLCODE 800000 0 0 64 0 64 ) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.CALLCODE( + gas=0xC3500, + address=addr, value=0x0, args_offset=0x0, args_size=0x40, @@ -103,17 +103,9 @@ def test_callcodecallcodecall_110_oogm_before( ), ) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x51A61D678EC27711369C527E5D42A9DE66A5727F), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, - nonce=0, - address=Address(0xB126C622075B1189FB6C45E851641CFADDF65B36), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallCodes/test_callcodecallcodecall_110_suicide_end.py b/tests/ported_static/stCallCodes/test_callcodecallcodecall_110_suicide_end.py index 50518f7770f..b988b59cc26 100644 --- a/tests/ported_static/stCallCodes/test_callcodecallcodecall_110_suicide_end.py +++ b/tests/ported_static/stCallCodes/test_callcodecallcodecall_110_suicide_end.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_callcodecallcodecall_110_suicide_end( ) -> None: """CALLCODE -> CALLCODE -> (CALL -> code) (suicide) .""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,6 +43,14 @@ def test_callcodecallcodecall_110_suicide_end( gas_limit=30000000, ) + # Source: lll + # { (SSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + balance=0x2540BE400, + nonce=0, + address=Address(0x73B954EBC05BB0FF4A0F6A13A054D50AD1584099), # noqa: E501 + ) # Source: lll # { [[ 0 ]] (CALLCODE 150000 0 0 64 0 64 ) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -107,15 +112,6 @@ def test_callcodecallcodecall_110_suicide_end( nonce=0, address=Address(0xD957E143AD2C011BC6A2B142795F1A9BA70D0680), # noqa: E501 ) - # Source: lll - # { (SSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, - balance=0x2540BE400, - nonce=0, - address=Address(0x73B954EBC05BB0FF4A0F6A13A054D50AD1584099), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallCodes/test_callcodecallcodecall_110_suicide_middle.py b/tests/ported_static/stCallCodes/test_callcodecallcodecall_110_suicide_middle.py index 7ee840b9663..23e3bf3b6fb 100644 --- a/tests/ported_static/stCallCodes/test_callcodecallcodecall_110_suicide_middle.py +++ b/tests/ported_static/stCallCodes/test_callcodecallcodecall_110_suicide_middle.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcodecallcodecall_110_suicide_middle( ) -> None: """CALLCODE -> CALLCODE -> (suicide) CALL -> code.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -48,6 +45,14 @@ def test_callcodecallcodecall_110_suicide_middle( gas_limit=30000000, ) + # Source: lll + # { (SSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + balance=0x2540BE400, + nonce=0, + address=Address(0x73B954EBC05BB0FF4A0F6A13A054D50AD1584099), # noqa: E501 + ) # Source: lll # { [[ 0 ]] (CALLCODE 150000 0 0 64 0 64 ) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -111,15 +116,6 @@ def test_callcodecallcodecall_110_suicide_middle( nonce=0, address=Address(0xAC90BB4611B91D4C6292BD64E8656110822E01ED), # noqa: E501 ) - # Source: lll - # { (SSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, - balance=0x2540BE400, - nonce=0, - address=Address(0x73B954EBC05BB0FF4A0F6A13A054D50AD1584099), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallCodes/test_callcodecallcodecallcode_111.py b/tests/ported_static/stCallCodes/test_callcodecallcodecallcode_111.py index 80d01c74f5e..3eecfb14554 100644 --- a/tests/ported_static/stCallCodes/test_callcodecallcodecallcode_111.py +++ b/tests/ported_static/stCallCodes/test_callcodecallcodecallcode_111.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_callcodecallcodecallcode_111( ) -> None: """CALLCODE -> CALLCODE -> CALLCODE -> code check parameter opcodes.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -47,14 +44,28 @@ def test_callcodecallcodecallcode_111( ) # Source: lll - # { [[ 0 ]] (CALLCODE 350000 1 0 64 0 64 ) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 + # { (SSTORE 3 1) (SSTORE 4 (CALLER)) (SSTORE 7 (CALLVALUE)) (SSTORE 330 (ADDRESS)) (SSTORE 332 (ORIGIN)) (SSTORE 336 (CALLDATASIZE)) (SSTORE 338 (CODESIZE)) (SSTORE 340 (GASPRICE)) } # noqa: E501 + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + + Op.SSTORE(key=0x4, value=Op.CALLER) + + Op.SSTORE(key=0x7, value=Op.CALLVALUE) + + Op.SSTORE(key=0x14A, value=Op.ADDRESS) + + Op.SSTORE(key=0x14C, value=Op.ORIGIN) + + Op.SSTORE(key=0x150, value=Op.CALLDATASIZE) + + Op.SSTORE(key=0x152, value=Op.CODESIZE) + + Op.SSTORE(key=0x154, value=Op.GASPRICE) + + Op.STOP, + nonce=0, + ) + # Source: lll + # { [[ 2 ]] (CALLCODE 250000 3 0 64 0 64 ) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x0, + key=0x2, value=Op.CALLCODE( - gas=0x55730, - address=0x4C0DE71B93DE6B7055A3686E4BF93ADD02B39ED8, - value=0x1, + gas=0x3D090, + address=addr_3, + value=0x3, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -64,7 +75,6 @@ def test_callcodecallcodecallcode_111( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xDB43306B16C521B9CC3667FBE7D1B697BB1F9605), # noqa: E501 ) # Source: lll # { [[ 1 ]] (CALLCODE 300000 2 0 64 0 64 ) } # noqa: E501 @@ -73,7 +83,7 @@ def test_callcodecallcodecallcode_111( key=0x1, value=Op.CALLCODE( gas=0x493E0, - address=0xFFFFAEB931552E5F094CA96A70BE612DA56B887, + address=addr_2, value=0x2, args_offset=0x0, args_size=0x40, @@ -84,17 +94,16 @@ def test_callcodecallcodecallcode_111( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x4C0DE71B93DE6B7055A3686E4BF93ADD02B39ED8), # noqa: E501 ) # Source: lll - # { [[ 2 ]] (CALLCODE 250000 3 0 64 0 64 ) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 + # { [[ 0 ]] (CALLCODE 350000 1 0 64 0 64 ) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x2, + key=0x0, value=Op.CALLCODE( - gas=0x3D090, - address=0x7E63847AAD8CA50FB7C04777DCE6871A6BF8DE0C, - value=0x3, + gas=0x55730, + address=addr, + value=0x1, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -104,24 +113,7 @@ def test_callcodecallcodecallcode_111( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x0FFFFAEB931552E5F094CA96A70BE612DA56B887), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) (SSTORE 4 (CALLER)) (SSTORE 7 (CALLVALUE)) (SSTORE 330 (ADDRESS)) (SSTORE 332 (ORIGIN)) (SSTORE 336 (CALLDATASIZE)) (SSTORE 338 (CODESIZE)) (SSTORE 340 (GASPRICE)) } # noqa: E501 - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) - + Op.SSTORE(key=0x4, value=Op.CALLER) - + Op.SSTORE(key=0x7, value=Op.CALLVALUE) - + Op.SSTORE(key=0x14A, value=Op.ADDRESS) - + Op.SSTORE(key=0x14C, value=Op.ORIGIN) - + Op.SSTORE(key=0x150, value=Op.CALLDATASIZE) - + Op.SSTORE(key=0x152, value=Op.CODESIZE) - + Op.SSTORE(key=0x154, value=Op.GASPRICE) - + Op.STOP, - nonce=0, - address=Address(0x7E63847AAD8CA50FB7C04777DCE6871A6BF8DE0C), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, @@ -137,10 +129,10 @@ def test_callcodecallcodecallcode_111( 1: 1, 2: 1, 3: 1, - 4: 0xDB43306B16C521B9CC3667FBE7D1B697BB1F9605, + 4: target, 7: 3, - 330: 0xDB43306B16C521B9CC3667FBE7D1B697BB1F9605, - 332: 0xEBAF50DEBF10E08302FE4280C32DF010463CA297, + 330: target, + 332: sender, 336: 64, 338: 39, 340: 10, diff --git a/tests/ported_static/stCallCodes/test_callcodecallcodecallcode_111_ooge.py b/tests/ported_static/stCallCodes/test_callcodecallcodecallcode_111_ooge.py index 09bbf7ae59f..3f6392ba446 100644 --- a/tests/ported_static/stCallCodes/test_callcodecallcodecallcode_111_ooge.py +++ b/tests/ported_static/stCallCodes/test_callcodecallcodecallcode_111_ooge.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_callcodecallcodecallcode_111_ooge( ) -> None: """Callcode -> callcode -> callcode -> code oog.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -47,13 +44,21 @@ def test_callcodecallcodecallcode_111_ooge( ) # Source: lll - # { [[ 0 ]] (CALLCODE 800000 0 0 64 0 64 ) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 + # { (SSTORE 3 1) (KECCAK256 0x00 0x2fffff) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + + Op.SHA3(offset=0x0, size=0x2FFFFF) + + Op.STOP, + nonce=0, + ) + # Source: lll + # { [[ 2 ]] (CALLCODE 400000 0 0 64 0 64 ) [[11]] 1 } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x0, + key=0x2, value=Op.CALLCODE( - gas=0xC3500, - address=0x913CF7A18F61BAB7BCCF5607DFA9B730C5976000, + gas=0x61A80, + address=addr_3, value=0x0, args_offset=0x0, args_size=0x40, @@ -61,10 +66,9 @@ def test_callcodecallcodecallcode_111_ooge( ret_size=0x40, ), ) + + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x9E57433AFAFF8A546FBC43CF0330AFB6561DC550), # noqa: E501 ) # Source: lll # { [[ 1 ]] (CALLCODE 600000 0 0 64 0 64 ) } # noqa: E501 @@ -73,7 +77,7 @@ def test_callcodecallcodecallcode_111_ooge( key=0x1, value=Op.CALLCODE( gas=0x927C0, - address=0x6322DC554ACDCADA01CBF7AC6A163D207C34DED2, + address=addr_2, value=0x0, args_offset=0x0, args_size=0x40, @@ -83,16 +87,15 @@ def test_callcodecallcodecallcode_111_ooge( ) + Op.STOP, nonce=0, - address=Address(0x913CF7A18F61BAB7BCCF5607DFA9B730C5976000), # noqa: E501 ) # Source: lll - # { [[ 2 ]] (CALLCODE 400000 0 0 64 0 64 ) [[11]] 1 } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 + # { [[ 0 ]] (CALLCODE 800000 0 0 64 0 64 ) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x2, + key=0x0, value=Op.CALLCODE( - gas=0x61A80, - address=0x1DD747F92062BB53BB8E867EC2902792435F1748, + gas=0xC3500, + address=addr, value=0x0, args_offset=0x0, args_size=0x40, @@ -100,21 +103,10 @@ def test_callcodecallcodecallcode_111_ooge( ret_size=0x40, ), ) - + Op.SSTORE(key=0xB, value=0x1) - + Op.STOP, - nonce=0, - address=Address(0x6322DC554ACDCADA01CBF7AC6A163D207C34DED2), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) (KECCAK256 0x00 0x2fffff) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) - + Op.SHA3(offset=0x0, size=0x2FFFFF) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x1DD747F92062BB53BB8E867EC2902792435F1748), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallCodes/test_callcodecallcodecallcode_111_oogm_after.py b/tests/ported_static/stCallCodes/test_callcodecallcodecallcode_111_oogm_after.py index 6179c11c429..68d26a9b033 100644 --- a/tests/ported_static/stCallCodes/test_callcodecallcodecallcode_111_oogm_after.py +++ b/tests/ported_static/stCallCodes/test_callcodecallcodecallcode_111_oogm_after.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcodecallcodecallcode_111_oogm_after( ) -> None: """Callcode -> (callcode -> callcode -> code) oog.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,13 +46,19 @@ def test_callcodecallcodecallcode_111_oogm_after( ) # Source: lll - # { [[ 0 ]] (CALLCODE 800000 0 0 64 0 64 ) [[11]] 1 } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 + # { (SSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + nonce=0, + ) + # Source: lll + # { [[ 2 ]] (CALLCODE 400000 0 0 64 0 64 ) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x0, + key=0x2, value=Op.CALLCODE( - gas=0xC3500, - address=0x37E72DD6FF3C2AC8C1DDAB092A26164A2AD5988C, + gas=0x61A80, + address=addr_3, value=0x0, args_offset=0x0, args_size=0x40, @@ -63,11 +66,8 @@ def test_callcodecallcodecallcode_111_oogm_after( ret_size=0x40, ), ) - + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x400347DADA8C51A2AAC4B4C31AE726BA8551E2B9), # noqa: E501 ) # Source: lll # { [[ 1 ]] (CALLCODE 600000 0 0 64 0 64 ) (KECCAK256 0x00 0x2fffff) } # noqa: E501 @@ -76,7 +76,7 @@ def test_callcodecallcodecallcode_111_oogm_after( key=0x1, value=Op.CALLCODE( gas=0x927C0, - address=0x926DFBCC20B2AB686FC85331883541D174CCC738, + address=addr_2, value=0x0, args_offset=0x0, args_size=0x40, @@ -87,16 +87,15 @@ def test_callcodecallcodecallcode_111_oogm_after( + Op.SHA3(offset=0x0, size=0x2FFFFF) + Op.STOP, nonce=0, - address=Address(0x37E72DD6FF3C2AC8C1DDAB092A26164A2AD5988C), # noqa: E501 ) # Source: lll - # { [[ 2 ]] (CALLCODE 400000 0 0 64 0 64 ) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 + # { [[ 0 ]] (CALLCODE 800000 0 0 64 0 64 ) [[11]] 1 } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x2, + key=0x0, value=Op.CALLCODE( - gas=0x61A80, - address=0xB126C622075B1189FB6C45E851641CFADDF65B36, + gas=0xC3500, + address=addr, value=0x0, args_offset=0x0, args_size=0x40, @@ -104,18 +103,11 @@ def test_callcodecallcodecallcode_111_oogm_after( ret_size=0x40, ), ) + + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x926DFBCC20B2AB686FC85331883541D174CCC738), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, - nonce=0, - address=Address(0xB126C622075B1189FB6C45E851641CFADDF65B36), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallCodes/test_callcodecallcodecallcode_111_oogm_before.py b/tests/ported_static/stCallCodes/test_callcodecallcodecallcode_111_oogm_before.py index 9fa8ba21d2d..d42b32ac321 100644 --- a/tests/ported_static/stCallCodes/test_callcodecallcodecallcode_111_oogm_before.py +++ b/tests/ported_static/stCallCodes/test_callcodecallcodecallcode_111_oogm_before.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcodecallcodecallcode_111_oogm_before( ) -> None: """Callcode -> callcode -> (OOG) callcode -> code.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,13 +46,20 @@ def test_callcodecallcodecallcode_111_oogm_before( ) # Source: lll - # { [[ 0 ]] (CALLCODE 800000 0 0 64 0 64 ) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, + # { (SSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + nonce=0, + ) + # Source: lll + # { (KECCAK256 0x00 0x2fffff) [[ 2 ]] (CALLCODE 400000 0 0 64 0 64 ) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.POP(Op.SHA3(offset=0x0, size=0x2FFFFF)) + + Op.SSTORE( + key=0x2, value=Op.CALLCODE( - gas=0xC3500, - address=0xA4173498C0DA91570D8AF9A128C337A67A6B4E69, + gas=0x61A80, + address=addr_3, value=0x0, args_offset=0x0, args_size=0x40, @@ -64,9 +68,7 @@ def test_callcodecallcodecallcode_111_oogm_before( ), ) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x9E57433AFAFF8A546FBC43CF0330AFB6561DC550), # noqa: E501 ) # Source: lll # { [[ 1 ]] (CALLCODE 600000 0 0 64 0 64 ) [[ 11 ]] 1 } # noqa: E501 @@ -75,7 +77,7 @@ def test_callcodecallcodecallcode_111_oogm_before( key=0x1, value=Op.CALLCODE( gas=0x927C0, - address=0xDBB53599A5D13E0C465E1CC4FF24D7F00D780DF4, + address=addr_2, value=0x0, args_offset=0x0, args_size=0x40, @@ -86,17 +88,15 @@ def test_callcodecallcodecallcode_111_oogm_before( + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, nonce=0, - address=Address(0xA4173498C0DA91570D8AF9A128C337A67A6B4E69), # noqa: E501 ) # Source: lll - # { (KECCAK256 0x00 0x2fffff) [[ 2 ]] (CALLCODE 400000 0 0 64 0 64 ) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.POP(Op.SHA3(offset=0x0, size=0x2FFFFF)) - + Op.SSTORE( - key=0x2, + # { [[ 0 ]] (CALLCODE 800000 0 0 64 0 64 ) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, value=Op.CALLCODE( - gas=0x61A80, - address=0xB126C622075B1189FB6C45E851641CFADDF65B36, + gas=0xC3500, + address=addr, value=0x0, args_offset=0x0, args_size=0x40, @@ -105,17 +105,9 @@ def test_callcodecallcodecallcode_111_oogm_before( ), ) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xDBB53599A5D13E0C465E1CC4FF24D7F00D780DF4), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, - nonce=0, - address=Address(0xB126C622075B1189FB6C45E851641CFADDF65B36), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallCodes/test_callcodecallcodecallcode_111_suicide_end.py b/tests/ported_static/stCallCodes/test_callcodecallcodecallcode_111_suicide_end.py index 2a1e9fa896d..d3b29c3988d 100644 --- a/tests/ported_static/stCallCodes/test_callcodecallcodecallcode_111_suicide_end.py +++ b/tests/ported_static/stCallCodes/test_callcodecallcodecallcode_111_suicide_end.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcodecallcodecallcode_111_suicide_end( ) -> None: """CALLCODE -> CALLCODE -> (CALLCODE -> code) suicide.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -48,6 +45,14 @@ def test_callcodecallcodecallcode_111_suicide_end( gas_limit=30000000, ) + # Source: lll + # { (SSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + balance=0x2540BE400, + nonce=0, + address=Address(0x73B954EBC05BB0FF4A0F6A13A054D50AD1584099), # noqa: E501 + ) # Source: lll # { [[ 0 ]] (CALLCODE 150000 0 0 64 0 64 ) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -109,15 +114,6 @@ def test_callcodecallcodecallcode_111_suicide_end( nonce=0, address=Address(0x94C8F980AEECBB6575B12AE614A249FC3E836F21), # noqa: E501 ) - # Source: lll - # { (SSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, - balance=0x2540BE400, - nonce=0, - address=Address(0x73B954EBC05BB0FF4A0F6A13A054D50AD1584099), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallCodes/test_callcodecallcodecallcode_111_suicide_middle.py b/tests/ported_static/stCallCodes/test_callcodecallcodecallcode_111_suicide_middle.py index 6b45f27f269..16b7662f27c 100644 --- a/tests/ported_static/stCallCodes/test_callcodecallcodecallcode_111_suicide_middle.py +++ b/tests/ported_static/stCallCodes/test_callcodecallcodecallcode_111_suicide_middle.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcodecallcodecallcode_111_suicide_middle( ) -> None: """CALLCODE -> CALLCODE -> (suicide) CALLCODE -> code.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -48,6 +45,14 @@ def test_callcodecallcodecallcode_111_suicide_middle( gas_limit=30000000, ) + # Source: lll + # { (SSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + balance=0x2540BE400, + nonce=0, + address=Address(0x73B954EBC05BB0FF4A0F6A13A054D50AD1584099), # noqa: E501 + ) # Source: lll # { [[ 0 ]] (CALLCODE 150000 0 0 64 0 64 ) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -111,15 +116,6 @@ def test_callcodecallcodecallcode_111_suicide_middle( nonce=0, address=Address(0x23A077E1E6B0740D6BFBC41DE582F2930ABD1762), # noqa: E501 ) - # Source: lll - # { (SSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, - balance=0x2540BE400, - nonce=0, - address=Address(0x73B954EBC05BB0FF4A0F6A13A054D50AD1584099), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallCreateCallCodeTest/test_call1024_balance_too_low.py b/tests/ported_static/stCallCreateCallCodeTest/test_call1024_balance_too_low.py index c040b61a267..8eeee9b6815 100644 --- a/tests/ported_static/stCallCreateCallCodeTest/test_call1024_balance_too_low.py +++ b/tests/ported_static/stCallCreateCallCodeTest/test_call1024_balance_too_low.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,10 +33,7 @@ def test_call1024_balance_too_low( ) -> None: """Calldepth with balance too low.""" coinbase = Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) - addr = Address(0xD9B97C712EBCE43F3C19179BBEF44B550F9E8BC0) - sender = EOA( - key=0xE7C72B378297589ACEE4E0BA3272841BCFC5E220F86DE253F890274CFEE9E474 - ) + sender = pre.fund_eoa(amount=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) env = Environment( fee_recipient=coinbase, @@ -48,8 +44,7 @@ def test_call1024_balance_too_low( gas_limit=9223372036854775807, ) - pre[sender] = Account(balance=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) - pre[addr] = Account(balance=7000) + addr = pre.fund_eoa(amount=7000) # noqa: F841 # Source: lll # { [[ 0 ]] (ADD @@0 1) [[ 1 ]] (CALL 0xfffffffffff @@0 0 0 0 0) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 diff --git a/tests/ported_static/stCallCreateCallCodeTest/test_call1024_oog.py b/tests/ported_static/stCallCreateCallCodeTest/test_call1024_oog.py index 4026f673053..127b02327fd 100644 --- a/tests/ported_static/stCallCreateCallCodeTest/test_call1024_oog.py +++ b/tests/ported_static/stCallCreateCallCodeTest/test_call1024_oog.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -70,10 +69,7 @@ def test_call1024_oog( ) -> None: """Calldepth with oog.""" coinbase = Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) - addr = Address(0xD9B97C712EBCE43F3C19179BBEF44B550F9E8BC0) - sender = EOA( - key=0xE7C72B378297589ACEE4E0BA3272841BCFC5E220F86DE253F890274CFEE9E474 - ) + sender = pre.fund_eoa(amount=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) env = Environment( fee_recipient=coinbase, @@ -84,8 +80,7 @@ def test_call1024_oog( gas_limit=9223372036854775807, ) - pre[sender] = Account(balance=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) - pre[addr] = Account(balance=7000) + addr = pre.fund_eoa(amount=7000) # noqa: F841 # Source: lll # { [[ 0 ]] (ADD @@0 1) [[ 1 ]] (CALL (MUL (SUB (GAS) 10000) (SUB 1 (DIV @@0 1025))) 0 0 0 0 0) [[ 2 ]] (ADD 1(MUL @@0 1000)) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 diff --git a/tests/ported_static/stCallCreateCallCodeTest/test_call_output1.py b/tests/ported_static/stCallCreateCallCodeTest/test_call_output1.py index 823868777ca..36f89a60db9 100644 --- a/tests/ported_static/stCallCreateCallCodeTest/test_call_output1.py +++ b/tests/ported_static/stCallCreateCallCodeTest/test_call_output1.py @@ -46,6 +46,15 @@ def test_call_output1( gas_limit=1000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: raw + # 0x6001600101600055 + addr = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x0, value=Op.ADD(0x1, 0x1)), + balance=0xDE0B6B3A7640000, + nonce=0, + address=Address(0xBCC1197CCD23A97607F2F96D031F3432E0D16A02), # noqa: E501 + ) # Source: lll # { (MSTORE 0 0x5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6) (CALL 150000 0 0 0 0 0) [[ 0 ]] (MLOAD 0) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -56,7 +65,7 @@ def test_call_output1( + Op.POP( Op.CALL( gas=0x249F0, - address=0xBCC1197CCD23A97607F2F96D031F3432E0D16A02, + address=addr, value=0x0, args_offset=0x0, args_size=0x0, @@ -70,15 +79,6 @@ def test_call_output1( nonce=0, address=Address(0x62C381FD04B6E4F31BA6D6F58C6A0D34EEE4FC52), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) - # Source: raw - # 0x6001600101600055 - addr = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x0, value=Op.ADD(0x1, 0x1)), - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0xBCC1197CCD23A97607F2F96D031F3432E0D16A02), # noqa: E501 - ) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallCreateCallCodeTest/test_call_output2.py b/tests/ported_static/stCallCreateCallCodeTest/test_call_output2.py index c0d5b521751..ca7edcd92d1 100644 --- a/tests/ported_static/stCallCreateCallCodeTest/test_call_output2.py +++ b/tests/ported_static/stCallCreateCallCodeTest/test_call_output2.py @@ -46,6 +46,15 @@ def test_call_output2( gas_limit=1000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: raw + # 0x6001600101600055 + addr = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x0, value=Op.ADD(0x1, 0x1)), + balance=0xDE0B6B3A7640000, + nonce=0, + address=Address(0xBCC1197CCD23A97607F2F96D031F3432E0D16A02), # noqa: E501 + ) # Source: lll # { (MSTORE 0 0x5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6) (CALL 150000 0 0 32 0 0) [[ 0 ]] (MLOAD 0)} # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -56,7 +65,7 @@ def test_call_output2( + Op.POP( Op.CALL( gas=0x249F0, - address=0xBCC1197CCD23A97607F2F96D031F3432E0D16A02, + address=addr, value=0x0, args_offset=0x0, args_size=0x20, @@ -70,15 +79,6 @@ def test_call_output2( nonce=0, address=Address(0x7ECEED6F6DD8B5ED0637DC20761945256E2BAFC7), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) - # Source: raw - # 0x6001600101600055 - addr = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x0, value=Op.ADD(0x1, 0x1)), - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0xBCC1197CCD23A97607F2F96D031F3432E0D16A02), # noqa: E501 - ) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallCreateCallCodeTest/test_call_output3.py b/tests/ported_static/stCallCreateCallCodeTest/test_call_output3.py index 383c1c366fc..ba359981dcd 100644 --- a/tests/ported_static/stCallCreateCallCodeTest/test_call_output3.py +++ b/tests/ported_static/stCallCreateCallCodeTest/test_call_output3.py @@ -46,6 +46,15 @@ def test_call_output3( gas_limit=1000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: raw + # 0x6001600101600055 + addr = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x0, value=Op.ADD(0x1, 0x1)), + balance=0xDE0B6B3A7640000, + nonce=0, + address=Address(0xBCC1197CCD23A97607F2F96D031F3432E0D16A02), # noqa: E501 + ) # Source: lll # { (MSTORE 0 0x5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6) (CALL 150000 0 0 0 0 32) [[ 0 ]] (MLOAD 0)} # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -56,7 +65,7 @@ def test_call_output3( + Op.POP( Op.CALL( gas=0x249F0, - address=0xBCC1197CCD23A97607F2F96D031F3432E0D16A02, + address=addr, value=0x0, args_offset=0x0, args_size=0x0, @@ -70,15 +79,6 @@ def test_call_output3( nonce=0, address=Address(0xD4E4BFA87DC8F20706BF63F45861945315BE24F0), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) - # Source: raw - # 0x6001600101600055 - addr = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x0, value=Op.ADD(0x1, 0x1)), - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0xBCC1197CCD23A97607F2F96D031F3432E0D16A02), # noqa: E501 - ) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallCreateCallCodeTest/test_call_output3_fail.py b/tests/ported_static/stCallCreateCallCodeTest/test_call_output3_fail.py index 6d59e7c7668..68e27013ea7 100644 --- a/tests/ported_static/stCallCreateCallCodeTest/test_call_output3_fail.py +++ b/tests/ported_static/stCallCreateCallCodeTest/test_call_output3_fail.py @@ -46,6 +46,15 @@ def test_call_output3_fail( gas_limit=1000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: raw + # 0x016001600101600055 + addr = pre.deploy_contract( # noqa: F841 + code=Op.ADD + Op.SSTORE(key=0x0, value=Op.ADD(0x1, 0x1)), + balance=0xDE0B6B3A7640000, + nonce=0, + address=Address(0x834ABC2C68C5F44EA9AE82B67AAF92044901CDC6), # noqa: E501 + ) # Source: lll # { (MSTORE 0 0x5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6) (CALL 50000 0 0 0 0 32) [[ 0 ]] (MLOAD 0)} # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -56,7 +65,7 @@ def test_call_output3_fail( + Op.POP( Op.CALL( gas=0xC350, - address=0x834ABC2C68C5F44EA9AE82B67AAF92044901CDC6, + address=addr, value=0x0, args_offset=0x0, args_size=0x0, @@ -70,15 +79,6 @@ def test_call_output3_fail( nonce=0, address=Address(0x3D63522C16B6DCC36F08DB61FCDCF5ECEA92F4D4), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) - # Source: raw - # 0x016001600101600055 - addr = pre.deploy_contract( # noqa: F841 - code=Op.ADD + Op.SSTORE(key=0x0, value=Op.ADD(0x1, 0x1)), - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0x834ABC2C68C5F44EA9AE82B67AAF92044901CDC6), # noqa: E501 - ) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallCreateCallCodeTest/test_call_output3partial.py b/tests/ported_static/stCallCreateCallCodeTest/test_call_output3partial.py index 1e612c2e7d2..43d7672e0c9 100644 --- a/tests/ported_static/stCallCreateCallCodeTest/test_call_output3partial.py +++ b/tests/ported_static/stCallCreateCallCodeTest/test_call_output3partial.py @@ -46,6 +46,15 @@ def test_call_output3partial( gas_limit=1000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: raw + # 0x6001600101600055 + addr = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x0, value=Op.ADD(0x1, 0x1)), + balance=0xDE0B6B3A7640000, + nonce=0, + address=Address(0xBCC1197CCD23A97607F2F96D031F3432E0D16A02), # noqa: E501 + ) # Source: lll # { (MSTORE 0 0x5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6) (CALL 150000 0 0 0 0 10) [[ 0 ]] (MLOAD 0)} # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -56,7 +65,7 @@ def test_call_output3partial( + Op.POP( Op.CALL( gas=0x249F0, - address=0xBCC1197CCD23A97607F2F96D031F3432E0D16A02, + address=addr, value=0x0, args_offset=0x0, args_size=0x0, @@ -70,15 +79,6 @@ def test_call_output3partial( nonce=0, address=Address(0x24BC72D274AB8E9445BB449BBEA2CCD492F6A2BF), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) - # Source: raw - # 0x6001600101600055 - addr = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x0, value=Op.ADD(0x1, 0x1)), - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0xBCC1197CCD23A97607F2F96D031F3432E0D16A02), # noqa: E501 - ) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallCreateCallCodeTest/test_call_output3partial_fail.py b/tests/ported_static/stCallCreateCallCodeTest/test_call_output3partial_fail.py index b99e075fdd0..b18c1007da4 100644 --- a/tests/ported_static/stCallCreateCallCodeTest/test_call_output3partial_fail.py +++ b/tests/ported_static/stCallCreateCallCodeTest/test_call_output3partial_fail.py @@ -46,6 +46,15 @@ def test_call_output3partial_fail( gas_limit=1000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: raw + # 0x016001600101600055 + addr = pre.deploy_contract( # noqa: F841 + code=Op.ADD + Op.SSTORE(key=0x0, value=Op.ADD(0x1, 0x1)), + balance=0xDE0B6B3A7640000, + nonce=0, + address=Address(0x834ABC2C68C5F44EA9AE82B67AAF92044901CDC6), # noqa: E501 + ) # Source: lll # { (MSTORE 0 0x5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6) (CALL 50000 0 0 0 0 10) [[ 0 ]] (MLOAD 0)} # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -56,7 +65,7 @@ def test_call_output3partial_fail( + Op.POP( Op.CALL( gas=0xC350, - address=0x834ABC2C68C5F44EA9AE82B67AAF92044901CDC6, + address=addr, value=0x0, args_offset=0x0, args_size=0x0, @@ -70,15 +79,6 @@ def test_call_output3partial_fail( nonce=0, address=Address(0x974E2490EAC79CA8AA70E20696E15F538EE8F02F), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) - # Source: raw - # 0x016001600101600055 - addr = pre.deploy_contract( # noqa: F841 - code=Op.ADD + Op.SSTORE(key=0x0, value=Op.ADD(0x1, 0x1)), - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0x834ABC2C68C5F44EA9AE82B67AAF92044901CDC6), # noqa: E501 - ) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallCreateCallCodeTest/test_call_recursive_bomb_pre_call.py b/tests/ported_static/stCallCreateCallCodeTest/test_call_recursive_bomb_pre_call.py index bd56e0ee1f5..2261b2901e2 100644 --- a/tests/ported_static/stCallCreateCallCodeTest/test_call_recursive_bomb_pre_call.py +++ b/tests/ported_static/stCallCreateCallCodeTest/test_call_recursive_bomb_pre_call.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -36,9 +35,7 @@ def test_call_recursive_bomb_pre_call( ) -> None: """Recursive call.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x77F65B71F1F16A75476F469F7106D1B60BFEC266AE25B8DA16A9091D223AA24A - ) + sender = pre.fund_eoa(amount=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) env = Environment( fee_recipient=coinbase, @@ -49,6 +46,26 @@ def test_call_recursive_bomb_pre_call( gas_limit=9223372036854775807, ) + # Source: lll + # { [[ 0 ]] (+ (SLOAD 0) 1) [[ 1 ]] (CALL (- (GAS) 224000) (ADDRESS) 0 0 0 0 0) } # noqa: E501 + addr = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x0, value=Op.ADD(Op.SLOAD(key=0x0), 0x1)) + + Op.SSTORE( + key=0x1, + value=Op.CALL( + gas=Op.SUB(Op.GAS, 0x36B00), + address=Op.ADDRESS, + value=0x0, + args_offset=0x0, + args_size=0x0, + ret_offset=0x0, + ret_size=0x0, + ), + ) + + Op.STOP, + balance=0xDE0B6B3A7640000, + nonce=0, + ) # Source: lll # { (CALL 100000 0xbad304eb96065b2a98b57a48a06ae28d285a71b5 23 0 0 0 0) (CALL 0x7ffffffffffffff 23 0 0 0 0) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -65,7 +82,7 @@ def test_call_recursive_bomb_pre_call( ) + Op.CALL( gas=0x7FFFFFFFFFFFFFF, - address=0x1B3F200856856EDC2E98EFCD637775C6E341E3C0, + address=addr, value=0x17, args_offset=0x0, args_size=0x0, @@ -75,30 +92,7 @@ def test_call_recursive_bomb_pre_call( + Op.STOP, balance=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, nonce=0, - address=Address(0x55BD941930D381E552D261D75ED997BE59E36350), # noqa: E501 - ) - # Source: lll - # { [[ 0 ]] (+ (SLOAD 0) 1) [[ 1 ]] (CALL (- (GAS) 224000) (ADDRESS) 0 0 0 0 0) } # noqa: E501 - addr = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x0, value=Op.ADD(Op.SLOAD(key=0x0), 0x1)) - + Op.SSTORE( - key=0x1, - value=Op.CALL( - gas=Op.SUB(Op.GAS, 0x36B00), - address=Op.ADDRESS, - value=0x0, - args_offset=0x0, - args_size=0x0, - ret_offset=0x0, - ret_size=0x0, - ), - ) - + Op.STOP, - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0x1B3F200856856EDC2E98EFCD637775C6E341E3C0), # noqa: E501 ) - pre[sender] = Account(balance=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallCreateCallCodeTest/test_call_with_high_value.py b/tests/ported_static/stCallCreateCallCodeTest/test_call_with_high_value.py index 4fb18cca231..8f1c61f19fb 100644 --- a/tests/ported_static/stCallCreateCallCodeTest/test_call_with_high_value.py +++ b/tests/ported_static/stCallCreateCallCodeTest/test_call_with_high_value.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_call_with_high_value( ) -> None: """Call with value and not enough value to send.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,6 +43,13 @@ def test_call_with_high_value( gas_limit=30000000, ) + # Source: lll + # { [[2]] 1 } + addr = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x2, value=0x1) + Op.STOP, + balance=23, + nonce=0, + ) # Source: lll # { [[ 0 ]] (CALL 150000 1000000000000000001 0 64 0 2 ) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -53,7 +57,7 @@ def test_call_with_high_value( key=0x0, value=Op.CALL( gas=0x249F0, - address=0x9D8C3FED067968360493F6DEB5B169A720DAC8A2, + address=addr, value=0xDE0B6B3A7640001, args_offset=0x0, args_size=0x40, @@ -64,17 +68,7 @@ def test_call_with_high_value( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xCCC6849CD07C3E5B61AB6D7E798D3C4007615284), # noqa: E501 - ) - # Source: lll - # { [[2]] 1 } - addr = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x2, value=0x1) + Op.STOP, - balance=23, - nonce=0, - address=Address(0x9D8C3FED067968360493F6DEB5B169A720DAC8A2), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallCreateCallCodeTest/test_call_with_high_value_and_gas_oog.py b/tests/ported_static/stCallCreateCallCodeTest/test_call_with_high_value_and_gas_oog.py index 626523845cd..5240cae80cd 100644 --- a/tests/ported_static/stCallCreateCallCodeTest/test_call_with_high_value_and_gas_oog.py +++ b/tests/ported_static/stCallCreateCallCodeTest/test_call_with_high_value_and_gas_oog.py @@ -73,6 +73,17 @@ def test_call_with_high_value_and_gas_oog( gas_limit=30000000, ) + pre[sender] = Account(balance=0x3635C9ADC5DEA00000) + # Source: raw + # 0x6001600155603760005360026000f3 + addr = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x1, value=0x1) + + Op.MSTORE8(offset=0x0, value=0x37) + + Op.RETURN(offset=0x0, size=0x2), + balance=23, + nonce=0, + address=Address(0x0896F13E800125C0CCEC44F3C434335F0A97BC1B), # noqa: E501 + ) # Source: lll # { (MSTORE 0 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) (MSTORE 32 0xaaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa ) [[ 0 ]] (CALL 0xffffffffffffffffffffffff 100000000000000000000 0 64 0 2 ) [[1]] (MLOAD 0)} # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -88,7 +99,7 @@ def test_call_with_high_value_and_gas_oog( key=0x0, value=Op.CALL( gas=0xFFFFFFFFFFFFFFFFFFFFFFFF, - address=0x896F13E800125C0CCEC44F3C434335F0A97BC1B, + address=addr, value=0x56BC75E2D63100000, args_offset=0x0, args_size=0x40, @@ -103,17 +114,6 @@ def test_call_with_high_value_and_gas_oog( nonce=0, address=Address(0xDFAD372452688759EDD82C422BF3976EAFC89C2B), # noqa: E501 ) - # Source: raw - # 0x6001600155603760005360026000f3 - addr = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x1, value=0x1) - + Op.MSTORE8(offset=0x0, value=0x37) - + Op.RETURN(offset=0x0, size=0x2), - balance=23, - nonce=0, - address=Address(0x0896F13E800125C0CCEC44F3C434335F0A97BC1B), # noqa: E501 - ) - pre[sender] = Account(balance=0x3635C9ADC5DEA00000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stCallCreateCallCodeTest/test_call_with_high_value_and_oo_gat_tx_level.py b/tests/ported_static/stCallCreateCallCodeTest/test_call_with_high_value_and_oo_gat_tx_level.py index 4710f7fc257..d105d652d73 100644 --- a/tests/ported_static/stCallCreateCallCodeTest/test_call_with_high_value_and_oo_gat_tx_level.py +++ b/tests/ported_static/stCallCreateCallCodeTest/test_call_with_high_value_and_oo_gat_tx_level.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -60,9 +59,7 @@ def test_call_with_high_value_and_oo_gat_tx_level( ) -> None: """Call with value.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -73,6 +70,15 @@ def test_call_with_high_value_and_oo_gat_tx_level( gas_limit=30000000, ) + # Source: raw + # 0x6001600155603760005360026000f3 + addr = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x1, value=0x1) + + Op.MSTORE8(offset=0x0, value=0x37) + + Op.RETURN(offset=0x0, size=0x2), + balance=23, + nonce=0, + ) # Source: lll # { [[ 0 ]] (CALL 3000001 100001 0 0 0 0 ) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -80,7 +86,7 @@ def test_call_with_high_value_and_oo_gat_tx_level( key=0x0, value=Op.CALL( gas=0x2DC6C1, - address=0x896F13E800125C0CCEC44F3C434335F0A97BC1B, + address=addr, value=0x186A1, args_offset=0x0, args_size=0x0, @@ -92,19 +98,7 @@ def test_call_with_high_value_and_oo_gat_tx_level( storage={0: 5}, balance=0x186A0, nonce=0, - address=Address(0x9001FA64DBBA07E3EB711A42CF25B34CCEE2BD2B), # noqa: E501 - ) - # Source: raw - # 0x6001600155603760005360026000f3 - addr = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x1, value=0x1) - + Op.MSTORE8(offset=0x0, value=0x37) - + Op.RETURN(offset=0x0, size=0x2), - balance=23, - nonce=0, - address=Address(0x0896F13E800125C0CCEC44F3C434335F0A97BC1B), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stCallCreateCallCodeTest/test_callcode1024_balance_too_low.py b/tests/ported_static/stCallCreateCallCodeTest/test_callcode1024_balance_too_low.py index 8174d8d6f5f..ba34a69fc14 100644 --- a/tests/ported_static/stCallCreateCallCodeTest/test_callcode1024_balance_too_low.py +++ b/tests/ported_static/stCallCreateCallCodeTest/test_callcode1024_balance_too_low.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -36,10 +35,7 @@ def test_callcode1024_balance_too_low( ) -> None: """Calldepth and balance.""" coinbase = Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) - addr = Address(0xD9B97C712EBCE43F3C19179BBEF44B550F9E8BC0) - sender = EOA( - key=0xE7C72B378297589ACEE4E0BA3272841BCFC5E220F86DE253F890274CFEE9E474 - ) + sender = pre.fund_eoa(amount=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) env = Environment( fee_recipient=coinbase, @@ -50,8 +46,7 @@ def test_callcode1024_balance_too_low( gas_limit=9223372036854775807, ) - pre[sender] = Account(balance=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) - pre[addr] = Account(balance=7000) + addr = pre.fund_eoa(amount=7000) # noqa: F841 # Source: lll # { [[ 0 ]] (ADD @@0 1) [[ 1 ]] (CALLCODE 0xfffffffffff @@0 0 0 0 0) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 diff --git a/tests/ported_static/stCallCreateCallCodeTest/test_callcode1024_oog.py b/tests/ported_static/stCallCreateCallCodeTest/test_callcode1024_oog.py index 73ca11492f4..2b2f42bd104 100644 --- a/tests/ported_static/stCallCreateCallCodeTest/test_callcode1024_oog.py +++ b/tests/ported_static/stCallCreateCallCodeTest/test_callcode1024_oog.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -58,10 +57,7 @@ def test_callcode1024_oog( ) -> None: """Calldepth and oog.""" coinbase = Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) - addr = Address(0xD9B97C712EBCE43F3C19179BBEF44B550F9E8BC0) - sender = EOA( - key=0xE7C72B378297589ACEE4E0BA3272841BCFC5E220F86DE253F890274CFEE9E474 - ) + sender = pre.fund_eoa(amount=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) env = Environment( fee_recipient=coinbase, @@ -72,8 +68,7 @@ def test_callcode1024_oog( gas_limit=9223372036854775807, ) - pre[sender] = Account(balance=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) - pre[addr] = Account(balance=7000) + addr = pre.fund_eoa(amount=7000) # noqa: F841 # Source: lll # { [[ 0 ]] (ADD @@0 1) [[ 1 ]] (CALLCODE (MUL (SUB (GAS) 10000) (SUB 1 (DIV @@0 1025))) 0 0 0 0 0) [[ 2 ]] (ADD 1(MUL @@0 1000)) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 diff --git a/tests/ported_static/stCallCreateCallCodeTest/test_callcode_lose_gas_oog.py b/tests/ported_static/stCallCreateCallCodeTest/test_callcode_lose_gas_oog.py index a7d23d52a50..8ed143eb578 100644 --- a/tests/ported_static/stCallCreateCallCodeTest/test_callcode_lose_gas_oog.py +++ b/tests/ported_static/stCallCreateCallCodeTest/test_callcode_lose_gas_oog.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -64,10 +63,7 @@ def test_callcode_lose_gas_oog( ) -> None: """Recursive call.""" coinbase = Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) - addr = Address(0xD9B97C712EBCE43F3C19179BBEF44B550F9E8BC0) - sender = EOA( - key=0xE7C72B378297589ACEE4E0BA3272841BCFC5E220F86DE253F890274CFEE9E474 - ) + sender = pre.fund_eoa(amount=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) env = Environment( fee_recipient=coinbase, @@ -78,8 +74,7 @@ def test_callcode_lose_gas_oog( gas_limit=9223372036854775807, ) - pre[sender] = Account(balance=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) - pre[addr] = Account(balance=7000) + addr = pre.fund_eoa(amount=7000) # noqa: F841 # Source: lll # { [[ 0 ]] (ADD @@0 1) [[ 1 ]] (CALLCODE (ADD 1(MUL @@0 100000)) 0 0 0 0 0) [[ 2 ]] (ADD 1(MUL @@0 1000)) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 diff --git a/tests/ported_static/stCallCreateCallCodeTest/test_callcode_output1.py b/tests/ported_static/stCallCreateCallCodeTest/test_callcode_output1.py index ea3758057ae..20ab325d5ce 100644 --- a/tests/ported_static/stCallCreateCallCodeTest/test_callcode_output1.py +++ b/tests/ported_static/stCallCreateCallCodeTest/test_callcode_output1.py @@ -46,6 +46,15 @@ def test_callcode_output1( gas_limit=1000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: raw + # 0x6001600101600055 + addr = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x0, value=Op.ADD(0x1, 0x1)), + balance=0xDE0B6B3A7640000, + nonce=0, + address=Address(0xBCC1197CCD23A97607F2F96D031F3432E0D16A02), # noqa: E501 + ) # Source: lll # { (MSTORE 0 0x5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6) (CALLCODE 150000 0 0 0 0 0) [[ 0 ]] (MLOAD 0) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -56,7 +65,7 @@ def test_callcode_output1( + Op.POP( Op.CALLCODE( gas=0x249F0, - address=0xBCC1197CCD23A97607F2F96D031F3432E0D16A02, + address=addr, value=0x0, args_offset=0x0, args_size=0x0, @@ -70,15 +79,6 @@ def test_callcode_output1( nonce=0, address=Address(0x64636CC2405B11C8D19AB153EAC44CCCE0FB70F9), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) - # Source: raw - # 0x6001600101600055 - addr = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x0, value=Op.ADD(0x1, 0x1)), - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0xBCC1197CCD23A97607F2F96D031F3432E0D16A02), # noqa: E501 - ) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallCreateCallCodeTest/test_callcode_output2.py b/tests/ported_static/stCallCreateCallCodeTest/test_callcode_output2.py index a7d547f6781..ca92837a551 100644 --- a/tests/ported_static/stCallCreateCallCodeTest/test_callcode_output2.py +++ b/tests/ported_static/stCallCreateCallCodeTest/test_callcode_output2.py @@ -46,6 +46,15 @@ def test_callcode_output2( gas_limit=1000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: raw + # 0x6001600101600055 + addr = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x0, value=Op.ADD(0x1, 0x1)), + balance=0xDE0B6B3A7640000, + nonce=0, + address=Address(0xBCC1197CCD23A97607F2F96D031F3432E0D16A02), # noqa: E501 + ) # Source: lll # { (MSTORE 0 0x5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6) (CALLCODE 50000 0 0 32 0 0) [[ 0 ]] (MLOAD 0)} # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -56,7 +65,7 @@ def test_callcode_output2( + Op.POP( Op.CALLCODE( gas=0xC350, - address=0xBCC1197CCD23A97607F2F96D031F3432E0D16A02, + address=addr, value=0x0, args_offset=0x0, args_size=0x20, @@ -70,15 +79,6 @@ def test_callcode_output2( nonce=0, address=Address(0xE6470A86A9862D2CE7DB006EE9C99092CD5E71BB), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) - # Source: raw - # 0x6001600101600055 - addr = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x0, value=Op.ADD(0x1, 0x1)), - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0xBCC1197CCD23A97607F2F96D031F3432E0D16A02), # noqa: E501 - ) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallCreateCallCodeTest/test_callcode_output3.py b/tests/ported_static/stCallCreateCallCodeTest/test_callcode_output3.py index 4a7adaf4b6c..3cc762fbdae 100644 --- a/tests/ported_static/stCallCreateCallCodeTest/test_callcode_output3.py +++ b/tests/ported_static/stCallCreateCallCodeTest/test_callcode_output3.py @@ -46,6 +46,15 @@ def test_callcode_output3( gas_limit=1000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: raw + # 0x6001600101600055 + addr = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x0, value=Op.ADD(0x1, 0x1)), + balance=0xDE0B6B3A7640000, + nonce=0, + address=Address(0xBCC1197CCD23A97607F2F96D031F3432E0D16A02), # noqa: E501 + ) # Source: lll # { (MSTORE 0 0x5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6) (CALLCODE 150000 0 0 0 0 32) [[ 0 ]] (MLOAD 0)} # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -56,7 +65,7 @@ def test_callcode_output3( + Op.POP( Op.CALLCODE( gas=0x249F0, - address=0xBCC1197CCD23A97607F2F96D031F3432E0D16A02, + address=addr, value=0x0, args_offset=0x0, args_size=0x0, @@ -70,15 +79,6 @@ def test_callcode_output3( nonce=0, address=Address(0xADFA10B17CF59BBEC369DCAAA1413070463820C0), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) - # Source: raw - # 0x6001600101600055 - addr = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x0, value=Op.ADD(0x1, 0x1)), - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0xBCC1197CCD23A97607F2F96D031F3432E0D16A02), # noqa: E501 - ) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallCreateCallCodeTest/test_callcode_output3_fail.py b/tests/ported_static/stCallCreateCallCodeTest/test_callcode_output3_fail.py index 991eb190c1e..d13ae6c8bfe 100644 --- a/tests/ported_static/stCallCreateCallCodeTest/test_callcode_output3_fail.py +++ b/tests/ported_static/stCallCreateCallCodeTest/test_callcode_output3_fail.py @@ -46,6 +46,15 @@ def test_callcode_output3_fail( gas_limit=1000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: raw + # 0x016001600101600055 + addr = pre.deploy_contract( # noqa: F841 + code=Op.ADD + Op.SSTORE(key=0x0, value=Op.ADD(0x1, 0x1)), + balance=0xDE0B6B3A7640000, + nonce=0, + address=Address(0x834ABC2C68C5F44EA9AE82B67AAF92044901CDC6), # noqa: E501 + ) # Source: lll # { (MSTORE 0 0x5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6) (CALLCODE 50000 0 0 0 0 32) [[ 0 ]] (MLOAD 0)} # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -56,7 +65,7 @@ def test_callcode_output3_fail( + Op.POP( Op.CALLCODE( gas=0xC350, - address=0x834ABC2C68C5F44EA9AE82B67AAF92044901CDC6, + address=addr, value=0x0, args_offset=0x0, args_size=0x0, @@ -70,15 +79,6 @@ def test_callcode_output3_fail( nonce=0, address=Address(0xFBF2D514AAD518CDF2E9D81E541C85FCDDEF6509), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) - # Source: raw - # 0x016001600101600055 - addr = pre.deploy_contract( # noqa: F841 - code=Op.ADD + Op.SSTORE(key=0x0, value=Op.ADD(0x1, 0x1)), - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0x834ABC2C68C5F44EA9AE82B67AAF92044901CDC6), # noqa: E501 - ) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallCreateCallCodeTest/test_callcode_output3partial.py b/tests/ported_static/stCallCreateCallCodeTest/test_callcode_output3partial.py index 542d62b1236..27445c6e3ca 100644 --- a/tests/ported_static/stCallCreateCallCodeTest/test_callcode_output3partial.py +++ b/tests/ported_static/stCallCreateCallCodeTest/test_callcode_output3partial.py @@ -46,6 +46,15 @@ def test_callcode_output3partial( gas_limit=1000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: raw + # 0x6001600101600055 + addr = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x0, value=Op.ADD(0x1, 0x1)), + balance=0xDE0B6B3A7640000, + nonce=0, + address=Address(0xBCC1197CCD23A97607F2F96D031F3432E0D16A02), # noqa: E501 + ) # Source: lll # { (MSTORE 0 0x5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6) (CALLCODE 150000 0 0 0 0 10) [[ 0 ]] (MLOAD 0)} # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -56,7 +65,7 @@ def test_callcode_output3partial( + Op.POP( Op.CALLCODE( gas=0x249F0, - address=0xBCC1197CCD23A97607F2F96D031F3432E0D16A02, + address=addr, value=0x0, args_offset=0x0, args_size=0x0, @@ -70,15 +79,6 @@ def test_callcode_output3partial( nonce=0, address=Address(0x8E33B4F8EB53A43A1E8EF9B4B46A65FB94FEF790), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) - # Source: raw - # 0x6001600101600055 - addr = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x0, value=Op.ADD(0x1, 0x1)), - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0xBCC1197CCD23A97607F2F96D031F3432E0D16A02), # noqa: E501 - ) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallCreateCallCodeTest/test_callcode_output3partial_fail.py b/tests/ported_static/stCallCreateCallCodeTest/test_callcode_output3partial_fail.py index 443ee494efd..a63d7360ced 100644 --- a/tests/ported_static/stCallCreateCallCodeTest/test_callcode_output3partial_fail.py +++ b/tests/ported_static/stCallCreateCallCodeTest/test_callcode_output3partial_fail.py @@ -48,6 +48,15 @@ def test_callcode_output3partial_fail( gas_limit=1000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: raw + # 0x016001600101600055 + addr = pre.deploy_contract( # noqa: F841 + code=Op.ADD + Op.SSTORE(key=0x0, value=Op.ADD(0x1, 0x1)), + balance=0xDE0B6B3A7640000, + nonce=0, + address=Address(0x834ABC2C68C5F44EA9AE82B67AAF92044901CDC6), # noqa: E501 + ) # Source: lll # { (MSTORE 0 0x5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6) (CALLCODE 50000 0 0 0 0 10) [[ 0 ]] (MLOAD 0)} # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -58,7 +67,7 @@ def test_callcode_output3partial_fail( + Op.POP( Op.CALLCODE( gas=0xC350, - address=0x834ABC2C68C5F44EA9AE82B67AAF92044901CDC6, + address=addr, value=0x0, args_offset=0x0, args_size=0x0, @@ -72,15 +81,6 @@ def test_callcode_output3partial_fail( nonce=0, address=Address(0xEE172F045CFA9101EE8C62FAF6975D8F4C1E2099), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) - # Source: raw - # 0x016001600101600055 - addr = pre.deploy_contract( # noqa: F841 - code=Op.ADD + Op.SSTORE(key=0x0, value=Op.ADD(0x1, 0x1)), - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0x834ABC2C68C5F44EA9AE82B67AAF92044901CDC6), # noqa: E501 - ) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallCreateCallCodeTest/test_callcode_with_high_value.py b/tests/ported_static/stCallCreateCallCodeTest/test_callcode_with_high_value.py index 7aa916b48e2..7289130c10b 100644 --- a/tests/ported_static/stCallCreateCallCodeTest/test_callcode_with_high_value.py +++ b/tests/ported_static/stCallCreateCallCodeTest/test_callcode_with_high_value.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_callcode_with_high_value( ) -> None: """Callcode with high value fails.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,6 +43,15 @@ def test_callcode_with_high_value( gas_limit=30000000, ) + # Source: raw + # 0x6001600155603760005360026000f3 + addr = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x1, value=0x1) + + Op.MSTORE8(offset=0x0, value=0x37) + + Op.RETURN(offset=0x0, size=0x2), + balance=23, + nonce=0, + ) # Source: lll # { [[ 0 ]] (CALLCODE 50000 1000000000000000001 0 64 0 2 ) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -53,7 +59,7 @@ def test_callcode_with_high_value( key=0x0, value=Op.CALLCODE( gas=0xC350, - address=0x896F13E800125C0CCEC44F3C434335F0A97BC1B, + address=addr, value=0xDE0B6B3A7640001, args_offset=0x0, args_size=0x40, @@ -64,19 +70,7 @@ def test_callcode_with_high_value( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x177BD06BAD8F3FE1B5D335D0ABA2F2A6B18B2FC6), # noqa: E501 - ) - # Source: raw - # 0x6001600155603760005360026000f3 - addr = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x1, value=0x1) - + Op.MSTORE8(offset=0x0, value=0x37) - + Op.RETURN(offset=0x0, size=0x2), - balance=23, - nonce=0, - address=Address(0x0896F13E800125C0CCEC44F3C434335F0A97BC1B), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallCreateCallCodeTest/test_callcode_with_high_value_and_gas_oog.py b/tests/ported_static/stCallCreateCallCodeTest/test_callcode_with_high_value_and_gas_oog.py index 2a20e198ee8..920a5c06d3e 100644 --- a/tests/ported_static/stCallCreateCallCodeTest/test_callcode_with_high_value_and_gas_oog.py +++ b/tests/ported_static/stCallCreateCallCodeTest/test_callcode_with_high_value_and_gas_oog.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcode_with_high_value_and_gas_oog( ) -> None: """Callcode with high value fails.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -48,6 +45,15 @@ def test_callcode_with_high_value_and_gas_oog( gas_limit=30000000, ) + # Source: raw + # 0x6001600155603760005360026000f3 + addr = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x1, value=0x1) + + Op.MSTORE8(offset=0x0, value=0x37) + + Op.RETURN(offset=0x0, size=0x2), + balance=23, + nonce=0, + ) # Source: lll # { (MSTORE 0 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) (MSTORE 32 0xaaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa ) [[ 0 ]] (CALLCODE 0xffffffffffffffffffffffff 100000000000000000000 0 64 0 2 ) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -63,7 +69,7 @@ def test_callcode_with_high_value_and_gas_oog( key=0x0, value=Op.CALLCODE( gas=0xFFFFFFFFFFFFFFFFFFFFFFFF, - address=0x896F13E800125C0CCEC44F3C434335F0A97BC1B, + address=addr, value=0x56BC75E2D63100000, args_offset=0x0, args_size=0x40, @@ -74,19 +80,7 @@ def test_callcode_with_high_value_and_gas_oog( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x0B4E1C683C41F86DC747FBF0DD02CD4398B41373), # noqa: E501 - ) - # Source: raw - # 0x6001600155603760005360026000f3 - addr = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x1, value=0x1) - + Op.MSTORE8(offset=0x0, value=0x37) - + Op.RETURN(offset=0x0, size=0x2), - balance=23, - nonce=0, - address=Address(0x0896F13E800125C0CCEC44F3C434335F0A97BC1B), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallCreateCallCodeTest/test_contract_creation_make_call_that_ask_more_gas_then_transaction_provided.py b/tests/ported_static/stCallCreateCallCodeTest/test_contract_creation_make_call_that_ask_more_gas_then_transaction_provided.py index 766264636b4..8571a26ae45 100644 --- a/tests/ported_static/stCallCreateCallCodeTest/test_contract_creation_make_call_that_ask_more_gas_then_transaction_provided.py +++ b/tests/ported_static/stCallCreateCallCodeTest/test_contract_creation_make_call_that_ask_more_gas_then_transaction_provided.py @@ -77,6 +77,14 @@ def test_contract_creation_make_call_that_ask_more_gas_then_transaction_provided pre[sender] = Account(balance=0x10C8E0) # Source: lll + # {(SSTORE 1 1)} + contract_1 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x1, value=0x1) + Op.STOP, + balance=0x186A0, + nonce=0, + address=Address(0x1000000000000000000000000000000000000001), # noqa: E501 + ) + # Source: lll # {(CALL 50000 0x1000000000000000000000000000000000000001 0 0 64 0 64)} contract_0 = pre.deploy_contract( # noqa: F841 code=Op.CALL( @@ -93,14 +101,6 @@ def test_contract_creation_make_call_that_ask_more_gas_then_transaction_provided nonce=0, address=Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B), # noqa: E501 ) - # Source: lll - # {(SSTORE 1 1)} - contract_1 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x1, value=0x1) + Op.STOP, - balance=0x186A0, - nonce=0, - address=Address(0x1000000000000000000000000000000000000001), # noqa: E501 - ) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stCallCreateCallCodeTest/test_create_fail_balance_too_low.py b/tests/ported_static/stCallCreateCallCodeTest/test_create_fail_balance_too_low.py index b4d763f0196..a9036d4c58c 100644 --- a/tests/ported_static/stCallCreateCallCodeTest/test_create_fail_balance_too_low.py +++ b/tests/ported_static/stCallCreateCallCodeTest/test_create_fail_balance_too_low.py @@ -75,6 +75,7 @@ def test_create_fail_balance_too_low( gas_limit=100000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # {(MSTORE 0 0x6001600255 ) (SELFDESTRUCT (CREATE 1000000000000000024 27 5)) } # noqa: E501 contract_0 = pre.deploy_contract( # noqa: F841 @@ -87,7 +88,6 @@ def test_create_fail_balance_too_low( nonce=0, address=Address(0x095E7BAEA6A6C7C4C2DFEB977EFAC326AF552D87), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stCallCreateCallCodeTest/test_create_init_fail_bad_jump_destination.py b/tests/ported_static/stCallCreateCallCodeTest/test_create_init_fail_bad_jump_destination.py index 165464c4568..4ad74976023 100644 --- a/tests/ported_static/stCallCreateCallCodeTest/test_create_init_fail_bad_jump_destination.py +++ b/tests/ported_static/stCallCreateCallCodeTest/test_create_init_fail_bad_jump_destination.py @@ -48,6 +48,7 @@ def test_create_init_fail_bad_jump_destination( gas_limit=1000000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # {(MSTORE8 0 0x56 ) (SELFDESTRUCT (CREATE 1 0 1)) } target = pre.deploy_contract( # noqa: F841 @@ -58,7 +59,6 @@ def test_create_init_fail_bad_jump_destination( nonce=0, address=Address(0x866B704865D7D80842E1D7C2C1C8BF682A3A437C), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallCreateCallCodeTest/test_create_init_fail_bad_jump_destination2.py b/tests/ported_static/stCallCreateCallCodeTest/test_create_init_fail_bad_jump_destination2.py index 87700b137f3..d5ec37b9225 100644 --- a/tests/ported_static/stCallCreateCallCodeTest/test_create_init_fail_bad_jump_destination2.py +++ b/tests/ported_static/stCallCreateCallCodeTest/test_create_init_fail_bad_jump_destination2.py @@ -48,6 +48,7 @@ def test_create_init_fail_bad_jump_destination2( gas_limit=1000000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # {(MSTORE 0 0x61ffff56 ) (SELFDESTRUCT (CREATE 1 28 4)) } target = pre.deploy_contract( # noqa: F841 @@ -58,7 +59,6 @@ def test_create_init_fail_bad_jump_destination2( nonce=0, address=Address(0x9CC12364004E761C5C594F6DCE3787CFF273029C), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallCreateCallCodeTest/test_create_init_fail_oo_gduring_init.py b/tests/ported_static/stCallCreateCallCodeTest/test_create_init_fail_oo_gduring_init.py index 7d41287d39b..464d32eb2c5 100644 --- a/tests/ported_static/stCallCreateCallCodeTest/test_create_init_fail_oo_gduring_init.py +++ b/tests/ported_static/stCallCreateCallCodeTest/test_create_init_fail_oo_gduring_init.py @@ -49,6 +49,7 @@ def test_create_init_fail_oo_gduring_init( gas_limit=100000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # {(MSTORE8 0 0x5a ) (SELFDESTRUCT (CREATE 1 0 1)) } contract_0 = pre.deploy_contract( # noqa: F841 @@ -59,7 +60,6 @@ def test_create_init_fail_oo_gduring_init( nonce=0, address=Address(0x095E7BAEA6A6C7C4C2DFEB977EFAC326AF552D87), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallCreateCallCodeTest/test_create_init_fail_oo_gduring_init2.py b/tests/ported_static/stCallCreateCallCodeTest/test_create_init_fail_oo_gduring_init2.py index 7237548682c..565c4fd1974 100644 --- a/tests/ported_static/stCallCreateCallCodeTest/test_create_init_fail_oo_gduring_init2.py +++ b/tests/ported_static/stCallCreateCallCodeTest/test_create_init_fail_oo_gduring_init2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -37,9 +36,7 @@ def test_create_init_fail_oo_gduring_init2( """Test_create_init_fail_oo_gduring_init2.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) contract_0 = Address(0x095E7BAEA6A6C7C4C2DFEB977EFAC326AF552D87) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -65,9 +62,7 @@ def test_create_init_fail_oo_gduring_init2( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x095E7BAEA6A6C7C4C2DFEB977EFAC326AF552D87), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallCreateCallCodeTest/test_create_init_fail_stack_size_larger_than1024.py b/tests/ported_static/stCallCreateCallCodeTest/test_create_init_fail_stack_size_larger_than1024.py index 46899013d65..4b568b6fd9e 100644 --- a/tests/ported_static/stCallCreateCallCodeTest/test_create_init_fail_stack_size_larger_than1024.py +++ b/tests/ported_static/stCallCreateCallCodeTest/test_create_init_fail_stack_size_larger_than1024.py @@ -48,6 +48,7 @@ def test_create_init_fail_stack_size_larger_than1024( gas_limit=1000000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # {(MSTORE 0 0x6103ff6000525b7f0102030405060708090a0102030405060708090a01020304) (MSTORE 32 0x05060708090a0102600160005103600052600051600657000000000000000000 ) (SELFDESTRUCT (CREATE 1 0 64)) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -65,7 +66,6 @@ def test_create_init_fail_stack_size_larger_than1024( nonce=0, address=Address(0x0EE6DB8C4A76CAB3BB0584E06916CEA75D307DB0), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallCreateCallCodeTest/test_create_init_fail_stack_underflow.py b/tests/ported_static/stCallCreateCallCodeTest/test_create_init_fail_stack_underflow.py index 5935349d306..b00eaa43c05 100644 --- a/tests/ported_static/stCallCreateCallCodeTest/test_create_init_fail_stack_underflow.py +++ b/tests/ported_static/stCallCreateCallCodeTest/test_create_init_fail_stack_underflow.py @@ -48,6 +48,7 @@ def test_create_init_fail_stack_underflow( gas_limit=1000000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # {(MSTORE8 0 0x01 ) (SELFDESTRUCT (CREATE 1 0 1)) } target = pre.deploy_contract( # noqa: F841 @@ -58,7 +59,6 @@ def test_create_init_fail_stack_underflow( nonce=0, address=Address(0x1EC952083E988EEB19FCAB317760FFC6671246FD), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallCreateCallCodeTest/test_create_init_fail_undefined_instruction2.py b/tests/ported_static/stCallCreateCallCodeTest/test_create_init_fail_undefined_instruction2.py index bbfe14a1a0a..d1c8ed82d72 100644 --- a/tests/ported_static/stCallCreateCallCodeTest/test_create_init_fail_undefined_instruction2.py +++ b/tests/ported_static/stCallCreateCallCodeTest/test_create_init_fail_undefined_instruction2.py @@ -48,6 +48,7 @@ def test_create_init_fail_undefined_instruction2( gas_limit=1000000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # {(MSTORE8 0 0xf4 ) (SELFDESTRUCT (CREATE 1 0 1)) } target = pre.deploy_contract( # noqa: F841 @@ -58,7 +59,6 @@ def test_create_init_fail_undefined_instruction2( nonce=0, address=Address(0xCB1256D163AB8CC6FEFA7F8EEE45BA8DB7EA9946), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallCreateCallCodeTest/test_create_init_oo_gfor_create.py b/tests/ported_static/stCallCreateCallCodeTest/test_create_init_oo_gfor_create.py index d31c685489d..7207b0ccaa1 100644 --- a/tests/ported_static/stCallCreateCallCodeTest/test_create_init_oo_gfor_create.py +++ b/tests/ported_static/stCallCreateCallCodeTest/test_create_init_oo_gfor_create.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -60,9 +59,7 @@ def test_create_init_oo_gfor_create( """Suicide to a dynamic created contract, oog on create.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) contract_0 = Address(0x095E7BAEA6A6C7C4C2DFEB977EFAC326AF552D87) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -81,9 +78,7 @@ def test_create_init_oo_gfor_create( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x095E7BAEA6A6C7C4C2DFEB977EFAC326AF552D87), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stCallCreateCallCodeTest/test_create_js_example_contract.py b/tests/ported_static/stCallCreateCallCodeTest/test_create_js_example_contract.py index 0c158d8a8b1..98e50dcbe48 100644 --- a/tests/ported_static/stCallCreateCallCodeTest/test_create_js_example_contract.py +++ b/tests/ported_static/stCallCreateCallCodeTest/test_create_js_example_contract.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_create_js_example_contract( ) -> None: """Deploy legacy contract normally.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x6600370D1F9991E2D92FFE661C84E7C8C6ECAFC094774F0F3DB0F8DD663590E9 - ) + sender = pre.fund_eoa(amount=0x9184E72A000) env = Environment( fee_recipient=coinbase, @@ -385,17 +382,15 @@ def test_create_js_example_contract( + Op.POP + Op.JUMP, storage={ - 0: 0xBCC416D85E26124EA4EC199A92CF495584A99831, + 0: sender, 1: 66, 2: 35, - 3: 0xBCC416D85E26124EA4EC199A92CF495584A99831, + 3: sender, 5: 0x54C98C81, }, balance=0x186A0, nonce=0, - address=Address(0x1119D4CCF86B65812D85F2FF3E9B2D851E40BA5A), # noqa: E501 ) - pre[sender] = Account(balance=0x9184E72A000) tx = Transaction( sender=sender, @@ -410,10 +405,10 @@ def test_create_js_example_contract( post = { addr: Account( storage={ - 0: 0xBCC416D85E26124EA4EC199A92CF495584A99831, + 0: sender, 1: 66, 2: 35, - 3: 0xBCC416D85E26124EA4EC199A92CF495584A99831, + 3: sender, 5: 0x54C98C81, }, code=bytes.fromhex( diff --git a/tests/ported_static/stCallCreateCallCodeTest/test_create_name_registrator_per_txs_not_enough_gas.py b/tests/ported_static/stCallCreateCallCodeTest/test_create_name_registrator_per_txs_not_enough_gas.py index f8e2d3275e8..a6159ad7409 100644 --- a/tests/ported_static/stCallCreateCallCodeTest/test_create_name_registrator_per_txs_not_enough_gas.py +++ b/tests/ported_static/stCallCreateCallCodeTest/test_create_name_registrator_per_txs_not_enough_gas.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -49,7 +48,6 @@ ), ], ) -@pytest.mark.pre_alloc_mutable def test_create_name_registrator_per_txs_not_enough_gas( state_test: StateTestFiller, pre: Alloc, @@ -60,9 +58,7 @@ def test_create_name_registrator_per_txs_not_enough_gas( ) -> None: """Legacy Test from Christoph.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -73,8 +69,6 @@ def test_create_name_registrator_per_txs_not_enough_gas( gas_limit=10000000000, ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) - expect_entries_: list[dict] = [ { "indexes": {"data": -1, "gas": 0, "value": -1}, diff --git a/tests/ported_static/stCallCreateCallCodeTest/test_create_name_registrator_pre_store1_not_enough_gas.py b/tests/ported_static/stCallCreateCallCodeTest/test_create_name_registrator_pre_store1_not_enough_gas.py index f8ada3d1acb..cc76b3587f5 100644 --- a/tests/ported_static/stCallCreateCallCodeTest/test_create_name_registrator_pre_store1_not_enough_gas.py +++ b/tests/ported_static/stCallCreateCallCodeTest/test_create_name_registrator_pre_store1_not_enough_gas.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -37,9 +36,7 @@ def test_create_name_registrator_pre_store1_not_enough_gas( """Legacy Test from Christoph.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) contract_0 = Address(0x095E7BAEA6A6C7C4C2DFEB977EFAC326AF552D87) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -63,9 +60,7 @@ def test_create_name_registrator_pre_store1_not_enough_gas( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x095E7BAEA6A6C7C4C2DFEB977EFAC326AF552D87), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallCreateCallCodeTest/test_create_name_registratorendowment_too_high.py b/tests/ported_static/stCallCreateCallCodeTest/test_create_name_registratorendowment_too_high.py index 22cff80aa69..208b26f09cb 100644 --- a/tests/ported_static/stCallCreateCallCodeTest/test_create_name_registratorendowment_too_high.py +++ b/tests/ported_static/stCallCreateCallCodeTest/test_create_name_registratorendowment_too_high.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_create_name_registratorendowment_too_high( ) -> None: """Legacy Test from Christoph.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -62,9 +59,7 @@ def test_create_name_registratorendowment_too_high( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x84D56FC4FEFC05A5BCE6C569883A47EE499EE0DA), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcallcallcode_001.py b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcallcallcode_001.py index 77196705072..34843e7be67 100644 --- a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcallcallcode_001.py +++ b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcallcallcode_001.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcallcallcode_001( ) -> None: """Test_callcallcallcode_001.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,14 +46,27 @@ def test_callcallcallcode_001( ) # Source: lll - # { [[ 0 ]] (CALLCODE 350000 1 0 64 0 64 ) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 + # { (SSTORE 3 1) (SSTORE 4 (CALLER)) (SSTORE 5 (CALLVALUE)) (SSTORE 330 (ADDRESS)) (SSTORE 332 (ORIGIN)) (SSTORE 336 (CALLDATASIZE)) (SSTORE 338 (CODESIZE)) (SSTORE 340 (GASPRICE)) } # noqa: E501 + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + + Op.SSTORE(key=0x4, value=Op.CALLER) + + Op.SSTORE(key=0x5, value=Op.CALLVALUE) + + Op.SSTORE(key=0x14A, value=Op.ADDRESS) + + Op.SSTORE(key=0x14C, value=Op.ORIGIN) + + Op.SSTORE(key=0x150, value=Op.CALLDATASIZE) + + Op.SSTORE(key=0x152, value=Op.CODESIZE) + + Op.SSTORE(key=0x154, value=Op.GASPRICE) + + Op.STOP, + nonce=0, + ) + # Source: lll + # { [[ 2 ]] (DELEGATECALL 250000 0 64 0 64 ) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x0, - value=Op.CALLCODE( - gas=0x55730, - address=0x4C0DE71B93DE6B7055A3686E4BF93ADD02B39ED8, - value=0x1, + key=0x2, + value=Op.DELEGATECALL( + gas=0x3D090, + address=addr_3, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -66,7 +76,6 @@ def test_callcallcallcode_001( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xDB43306B16C521B9CC3667FBE7D1B697BB1F9605), # noqa: E501 ) # Source: lll # { [[ 1 ]] (CALLCODE 300000 2 0 64 0 64 ) } # noqa: E501 @@ -75,7 +84,7 @@ def test_callcallcallcode_001( key=0x1, value=Op.CALLCODE( gas=0x493E0, - address=0x6F50426AA1BBB3CBD865847823F377D918757C07, + address=addr_2, value=0x2, args_offset=0x0, args_size=0x40, @@ -86,16 +95,16 @@ def test_callcallcallcode_001( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x4C0DE71B93DE6B7055A3686E4BF93ADD02B39ED8), # noqa: E501 ) # Source: lll - # { [[ 2 ]] (DELEGATECALL 250000 0 64 0 64 ) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 + # { [[ 0 ]] (CALLCODE 350000 1 0 64 0 64 ) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x2, - value=Op.DELEGATECALL( - gas=0x3D090, - address=0xC534813374D4D5C43DD9A367926A3DBEECD02964, + key=0x0, + value=Op.CALLCODE( + gas=0x55730, + address=addr, + value=0x1, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -105,24 +114,7 @@ def test_callcallcallcode_001( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x6F50426AA1BBB3CBD865847823F377D918757C07), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) (SSTORE 4 (CALLER)) (SSTORE 5 (CALLVALUE)) (SSTORE 330 (ADDRESS)) (SSTORE 332 (ORIGIN)) (SSTORE 336 (CALLDATASIZE)) (SSTORE 338 (CODESIZE)) (SSTORE 340 (GASPRICE)) } # noqa: E501 - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) - + Op.SSTORE(key=0x4, value=Op.CALLER) - + Op.SSTORE(key=0x5, value=Op.CALLVALUE) - + Op.SSTORE(key=0x14A, value=Op.ADDRESS) - + Op.SSTORE(key=0x14C, value=Op.ORIGIN) - + Op.SSTORE(key=0x150, value=Op.CALLDATASIZE) - + Op.SSTORE(key=0x152, value=Op.CODESIZE) - + Op.SSTORE(key=0x154, value=Op.GASPRICE) - + Op.STOP, - nonce=0, - address=Address(0xC534813374D4D5C43DD9A367926A3DBEECD02964), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, @@ -138,10 +130,10 @@ def test_callcallcallcode_001( 1: 1, 2: 1, 3: 1, - 4: 0xDB43306B16C521B9CC3667FBE7D1B697BB1F9605, + 4: target, 5: 2, - 330: 0xDB43306B16C521B9CC3667FBE7D1B697BB1F9605, - 332: 0xEBAF50DEBF10E08302FE4280C32DF010463CA297, + 330: target, + 332: sender, 336: 64, 338: 39, 340: 10, diff --git a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcallcallcode_001_ooge.py b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcallcallcode_001_ooge.py index 1a9883e8374..9c823864d91 100644 --- a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcallcallcode_001_ooge.py +++ b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcallcallcode_001_ooge.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcallcallcode_001_ooge( ) -> None: """CALLCODE -> CALLCODE -> DELEGATE -> CODE OOG.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,24 +46,30 @@ def test_callcallcallcode_001_ooge( ) # Source: lll - # { [[ 0 ]] (CALLCODE 800000 0 0 64 0 64 ) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 + # { (SSTORE 3 1) (KECCAK256 0x00 0x2fffff) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + + Op.SHA3(offset=0x0, size=0x2FFFFF) + + Op.STOP, + nonce=0, + ) + # Source: lll + # { [[ 2 ]] (DELEGATECALL 400000 0 64 0 64 ) [[11]] 1 } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x0, - value=Op.CALLCODE( - gas=0xC3500, - address=0x913CF7A18F61BAB7BCCF5607DFA9B730C5976000, - value=0x0, + key=0x2, + value=Op.DELEGATECALL( + gas=0x61A80, + address=addr_3, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, ), ) + + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x9E57433AFAFF8A546FBC43CF0330AFB6561DC550), # noqa: E501 ) # Source: lll # { [[ 1 ]] (CALLCODE 600000 0 0 64 0 64 ) } # noqa: E501 @@ -75,7 +78,7 @@ def test_callcallcallcode_001_ooge( key=0x1, value=Op.CALLCODE( gas=0x927C0, - address=0x3E423A7B1FBA04D0C3F9423A3AE2A180D2878D5B, + address=addr_2, value=0x0, args_offset=0x0, args_size=0x40, @@ -85,37 +88,26 @@ def test_callcallcallcode_001_ooge( ) + Op.STOP, nonce=0, - address=Address(0x913CF7A18F61BAB7BCCF5607DFA9B730C5976000), # noqa: E501 ) # Source: lll - # { [[ 2 ]] (DELEGATECALL 400000 0 64 0 64 ) [[11]] 1 } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 + # { [[ 0 ]] (CALLCODE 800000 0 0 64 0 64 ) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x2, - value=Op.DELEGATECALL( - gas=0x61A80, - address=0x1DD747F92062BB53BB8E867EC2902792435F1748, + key=0x0, + value=Op.CALLCODE( + gas=0xC3500, + address=addr, + value=0x0, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, ), ) - + Op.SSTORE(key=0xB, value=0x1) - + Op.STOP, - nonce=0, - address=Address(0x3E423A7B1FBA04D0C3F9423A3AE2A180D2878D5B), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) (KECCAK256 0x00 0x2fffff) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) - + Op.SHA3(offset=0x0, size=0x2FFFFF) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x1DD747F92062BB53BB8E867EC2902792435F1748), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcallcallcode_001_oogm_after.py b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcallcallcode_001_oogm_after.py index b2cc6f68b29..1d4bbe04a14 100644 --- a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcallcallcode_001_oogm_after.py +++ b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcallcallcode_001_oogm_after.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcallcallcode_001_oogm_after( ) -> None: """CALLCODE -> (CALLCODE -> DELEGATE -> CODE) OOG.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,25 +46,27 @@ def test_callcallcallcode_001_oogm_after( ) # Source: lll - # { [[ 0 ]] (CALLCODE 800000 0 0 64 0 64 ) [[11]] 1 } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 + # { (SSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + nonce=0, + ) + # Source: lll + # { [[ 2 ]] (DELEGATECALL 400000 0 64 0 64 ) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x0, - value=Op.CALLCODE( - gas=0xC3500, - address=0x37E72DD6FF3C2AC8C1DDAB092A26164A2AD5988C, - value=0x0, + key=0x2, + value=Op.DELEGATECALL( + gas=0x61A80, + address=addr_3, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, ), ) - + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x7DABF2BB39AAF74720CFA113AE52F673BF477E2B), # noqa: E501 ) # Source: lll # { [[ 1 ]] (CALLCODE 600000 0 0 64 0 64 ) (KECCAK256 0x00 0x2fffff) } # noqa: E501 @@ -76,7 +75,7 @@ def test_callcallcallcode_001_oogm_after( key=0x1, value=Op.CALLCODE( gas=0x927C0, - address=0x7B1ED5FA290739659102E7C47B650EFD2EBA625B, + address=addr_2, value=0x0, args_offset=0x0, args_size=0x40, @@ -87,34 +86,27 @@ def test_callcallcallcode_001_oogm_after( + Op.SHA3(offset=0x0, size=0x2FFFFF) + Op.STOP, nonce=0, - address=Address(0x37E72DD6FF3C2AC8C1DDAB092A26164A2AD5988C), # noqa: E501 ) # Source: lll - # { [[ 2 ]] (DELEGATECALL 400000 0 64 0 64 ) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 + # { [[ 0 ]] (CALLCODE 800000 0 0 64 0 64 ) [[11]] 1 } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x2, - value=Op.DELEGATECALL( - gas=0x61A80, - address=0xB126C622075B1189FB6C45E851641CFADDF65B36, + key=0x0, + value=Op.CALLCODE( + gas=0xC3500, + address=addr, + value=0x0, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, ), ) + + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x7B1ED5FA290739659102E7C47B650EFD2EBA625B), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, - nonce=0, - address=Address(0xB126C622075B1189FB6C45E851641CFADDF65B36), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcallcallcode_001_oogm_before.py b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcallcallcode_001_oogm_before.py index 91a2eccbcb8..3ddc82e6af5 100644 --- a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcallcallcode_001_oogm_before.py +++ b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcallcallcode_001_oogm_before.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcallcallcode_001_oogm_before( ) -> None: """CALLCODE -> CALLCODE -> OOG DELEGATE -> CODE.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,14 +46,20 @@ def test_callcallcallcode_001_oogm_before( ) # Source: lll - # { [[ 0 ]] (CALLCODE 800000 0 0 64 0 64 ) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.CALLCODE( - gas=0xC3500, - address=0x8E6E134402F2EECA8E910E8EC62B45B36EE31F30, - value=0x0, + # { (SSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + nonce=0, + ) + # Source: lll + # { (KECCAK256 0x00 0x2fffff) [[ 2 ]] (DELEGATECALL 400000 0 64 0 64 ) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.POP(Op.SHA3(offset=0x0, size=0x2FFFFF)) + + Op.SSTORE( + key=0x2, + value=Op.DELEGATECALL( + gas=0x61A80, + address=addr_3, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -64,9 +67,7 @@ def test_callcallcallcode_001_oogm_before( ), ) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x9E57433AFAFF8A546FBC43CF0330AFB6561DC550), # noqa: E501 ) # Source: lll # { [[ 1 ]] (CALLCODE 600000 0 0 64 0 64 ) [[11]] 1 } # noqa: E501 @@ -75,7 +76,7 @@ def test_callcallcallcode_001_oogm_before( key=0x1, value=Op.CALLCODE( gas=0x927C0, - address=0xEFE4727369C5F495AEBF4EA778CC48D1155BF978, + address=addr_2, value=0x0, args_offset=0x0, args_size=0x40, @@ -86,17 +87,16 @@ def test_callcallcallcode_001_oogm_before( + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, nonce=0, - address=Address(0x8E6E134402F2EECA8E910E8EC62B45B36EE31F30), # noqa: E501 ) # Source: lll - # { (KECCAK256 0x00 0x2fffff) [[ 2 ]] (DELEGATECALL 400000 0 64 0 64 ) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.POP(Op.SHA3(offset=0x0, size=0x2FFFFF)) - + Op.SSTORE( - key=0x2, - value=Op.DELEGATECALL( - gas=0x61A80, - address=0xB126C622075B1189FB6C45E851641CFADDF65B36, + # { [[ 0 ]] (CALLCODE 800000 0 0 64 0 64 ) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.CALLCODE( + gas=0xC3500, + address=addr, + value=0x0, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -104,17 +104,9 @@ def test_callcallcallcode_001_oogm_before( ), ) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xEFE4727369C5F495AEBF4EA778CC48D1155BF978), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, - nonce=0, - address=Address(0xB126C622075B1189FB6C45E851641CFADDF65B36), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcallcallcode_001_suicide_end.py b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcallcallcode_001_suicide_end.py index 5a469406500..98081b8eff6 100644 --- a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcallcallcode_001_suicide_end.py +++ b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcallcallcode_001_suicide_end.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcallcallcode_001_suicide_end( ) -> None: """Test_callcallcallcode_001_suicide_end.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -48,6 +45,14 @@ def test_callcallcallcode_001_suicide_end( gas_limit=30000000, ) + # Source: lll + # { (SSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + balance=0x2540BE400, + nonce=0, + address=Address(0x73B954EBC05BB0FF4A0F6A13A054D50AD1584099), # noqa: E501 + ) # Source: lll # { [[ 0 ]] (CALLCODE 150000 0 0 64 0 64 ) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -108,15 +113,6 @@ def test_callcallcallcode_001_suicide_end( nonce=0, address=Address(0xAC521409E2FA9526BFE6B827805783D2E307C4CE), # noqa: E501 ) - # Source: lll - # { (SSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, - balance=0x2540BE400, - nonce=0, - address=Address(0x73B954EBC05BB0FF4A0F6A13A054D50AD1584099), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcallcallcode_001_suicide_middle.py b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcallcallcode_001_suicide_middle.py index 688285aefc7..21882d10003 100644 --- a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcallcallcode_001_suicide_middle.py +++ b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcallcallcode_001_suicide_middle.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcallcallcode_001_suicide_middle( ) -> None: """Test_callcallcallcode_001_suicide_middle.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -48,6 +45,14 @@ def test_callcallcallcode_001_suicide_middle( gas_limit=30000000, ) + # Source: lll + # { (SSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + balance=0x2540BE400, + nonce=0, + address=Address(0x73B954EBC05BB0FF4A0F6A13A054D50AD1584099), # noqa: E501 + ) # Source: lll # { [[ 0 ]] (CALLCODE 150000 0 0 64 0 64 ) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -110,15 +115,6 @@ def test_callcallcallcode_001_suicide_middle( nonce=0, address=Address(0x124B38FA011C9D36B7FE193DC636813A2F8BDAA7), # noqa: E501 ) - # Source: lll - # { (SSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, - balance=0x2540BE400, - nonce=0, - address=Address(0x73B954EBC05BB0FF4A0F6A13A054D50AD1584099), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcallcode_01.py b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcallcode_01.py index 98ac67d238e..62281359646 100644 --- a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcallcode_01.py +++ b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcallcode_01.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcallcode_01( ) -> None: """Test_callcallcode_01.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,24 +46,18 @@ def test_callcallcode_01( ) # Source: lll - # { [[ 0 ]] (CALLCODE 350000 1 0 64 0 64 ) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.CALLCODE( - gas=0x55730, - address=0x1CCCCF19D84280C8A0E94209761296DABD87B3C9, - value=0x1, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ), - ) + # { (SSTORE 2 1) (SSTORE 4 (CALLER)) (SSTORE 5 (CALLVALUE)) (SSTORE 230 (ADDRESS)) (SSTORE 232 (ORIGIN)) (SSTORE 236 (CALLDATASIZE)) (SSTORE 238 (CODESIZE)) (SSTORE 240 (GASPRICE)) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x2, value=0x1) + + Op.SSTORE(key=0x4, value=Op.CALLER) + + Op.SSTORE(key=0x5, value=Op.CALLVALUE) + + Op.SSTORE(key=0xE6, value=Op.ADDRESS) + + Op.SSTORE(key=0xE8, value=Op.ORIGIN) + + Op.SSTORE(key=0xEC, value=Op.CALLDATASIZE) + + Op.SSTORE(key=0xEE, value=Op.CODESIZE) + + Op.SSTORE(key=0xF0, value=Op.GASPRICE) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xDB43306B16C521B9CC3667FBE7D1B697BB1F9605), # noqa: E501 ) # Source: lll # { [[ 1 ]] (DELEGATECALL 250000 0 64 0 64 ) } # noqa: E501 @@ -75,7 +66,7 @@ def test_callcallcode_01( key=0x1, value=Op.DELEGATECALL( gas=0x3D090, - address=0xD42CD48F1D9A88F4B75BFB5E46E754C1128BD7FB, + address=addr_2, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -85,24 +76,26 @@ def test_callcallcode_01( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x1CCCCF19D84280C8A0E94209761296DABD87B3C9), # noqa: E501 ) # Source: lll - # { (SSTORE 2 1) (SSTORE 4 (CALLER)) (SSTORE 5 (CALLVALUE)) (SSTORE 230 (ADDRESS)) (SSTORE 232 (ORIGIN)) (SSTORE 236 (CALLDATASIZE)) (SSTORE 238 (CODESIZE)) (SSTORE 240 (GASPRICE)) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x2, value=0x1) - + Op.SSTORE(key=0x4, value=Op.CALLER) - + Op.SSTORE(key=0x5, value=Op.CALLVALUE) - + Op.SSTORE(key=0xE6, value=Op.ADDRESS) - + Op.SSTORE(key=0xE8, value=Op.ORIGIN) - + Op.SSTORE(key=0xEC, value=Op.CALLDATASIZE) - + Op.SSTORE(key=0xEE, value=Op.CODESIZE) - + Op.SSTORE(key=0xF0, value=Op.GASPRICE) + # { [[ 0 ]] (CALLCODE 350000 1 0 64 0 64 ) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.CALLCODE( + gas=0x55730, + address=addr, + value=0x1, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ), + ) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xD42CD48F1D9A88F4B75BFB5E46E754C1128BD7FB), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, @@ -117,10 +110,10 @@ def test_callcallcode_01( 0: 1, 1: 1, 2: 1, - 4: 0xDB43306B16C521B9CC3667FBE7D1B697BB1F9605, + 4: target, 5: 1, - 230: 0xDB43306B16C521B9CC3667FBE7D1B697BB1F9605, - 232: 0xEBAF50DEBF10E08302FE4280C32DF010463CA297, + 230: target, + 232: sender, 236: 64, 238: 34, 240: 10, diff --git a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcallcode_01_ooge.py b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcallcode_01_ooge.py index 1ea8c1b1226..cd659ce1b7c 100644 --- a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcallcode_01_ooge.py +++ b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcallcode_01_ooge.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcallcode_01_ooge( ) -> None: """CALLCODE -> DELEGATE -> CODE OOG.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,24 +46,12 @@ def test_callcallcode_01_ooge( ) # Source: lll - # { [[ 0 ]] (CALLCODE 800000 0 0 64 0 64 ) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.CALLCODE( - gas=0xC3500, - address=0x29F893B720E998CCD5971409FA9A8802822FDCBC, - value=0x0, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ), - ) + # { (SSTORE 2 1) (KECCAK256 0x00 0x2fffff) } + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x2, value=0x1) + + Op.SHA3(offset=0x0, size=0x2FFFFF) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x9E57433AFAFF8A546FBC43CF0330AFB6561DC550), # noqa: E501 ) # Source: lll # { [[ 1 ]] (DELEGATECALL 600000 0 64 0 64 ) [[11]] 1 } # noqa: E501 @@ -75,7 +60,7 @@ def test_callcallcode_01_ooge( key=0x1, value=Op.DELEGATECALL( gas=0x927C0, - address=0x766B2CF0691F51029181FC511395B7AB71353A88, + address=addr_2, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -85,18 +70,26 @@ def test_callcallcode_01_ooge( + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, nonce=0, - address=Address(0x29F893B720E998CCD5971409FA9A8802822FDCBC), # noqa: E501 ) # Source: lll - # { (SSTORE 2 1) (KECCAK256 0x00 0x2fffff) } - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x2, value=0x1) - + Op.SHA3(offset=0x0, size=0x2FFFFF) + # { [[ 0 ]] (CALLCODE 800000 0 0 64 0 64 ) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.CALLCODE( + gas=0xC3500, + address=addr, + value=0x0, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ), + ) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x766B2CF0691F51029181FC511395B7AB71353A88), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcallcode_01_suicide_end.py b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcallcode_01_suicide_end.py index d75b4d1d777..8e30857302f 100644 --- a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcallcode_01_suicide_end.py +++ b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcallcode_01_suicide_end.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcallcode_01_suicide_end( ) -> None: """Test_callcallcode_01_suicide_end.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -48,6 +45,14 @@ def test_callcallcode_01_suicide_end( gas_limit=30000000, ) + # Source: lll + # { (SSTORE 2 1) } + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x2, value=0x1) + Op.STOP, + balance=0x2540BE400, + nonce=0, + address=Address(0x703B936FD4D674F0FF5D6957F61097152F8781B8), # noqa: E501 + ) # Source: lll # { [[ 0 ]] (CALLCODE 150000 0 0 64 0 64 ) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -88,15 +93,6 @@ def test_callcallcode_01_suicide_end( nonce=0, address=Address(0x1CCA6E93108EC94304AE5EB121D323E6C317FE7A), # noqa: E501 ) - # Source: lll - # { (SSTORE 2 1) } - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x2, value=0x1) + Op.STOP, - balance=0x2540BE400, - nonce=0, - address=Address(0x703B936FD4D674F0FF5D6957F61097152F8781B8), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcallcodecall_010.py b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcallcodecall_010.py index b9df8c5b644..1b71c97c2cc 100644 --- a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcallcodecall_010.py +++ b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcallcodecall_010.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcallcodecall_010( ) -> None: """Test_callcallcodecall_010.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,24 +46,38 @@ def test_callcallcodecall_010( ) # Source: lll - # { [[ 0 ]] (CALLCODE 350000 1 0 64 0 64 ) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 + # { (SSTORE 3 1) (SSTORE 4 (CALLER)) (SSTORE 6 (CALLVALUE)) (SSTORE 330 (ADDRESS)) (SSTORE 332 (ORIGIN)) (SSTORE 336 (CALLDATASIZE)) (SSTORE 338 (CODESIZE)) (SSTORE 340 (GASPRICE))} # noqa: E501 + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + + Op.SSTORE(key=0x4, value=Op.CALLER) + + Op.SSTORE(key=0x6, value=Op.CALLVALUE) + + Op.SSTORE(key=0x14A, value=Op.ADDRESS) + + Op.SSTORE(key=0x14C, value=Op.ORIGIN) + + Op.SSTORE(key=0x150, value=Op.CALLDATASIZE) + + Op.SSTORE(key=0x152, value=Op.CODESIZE) + + Op.SSTORE(key=0x154, value=Op.GASPRICE) + + Op.STOP, + nonce=0, + ) + # Source: lll + # { [[ 2 ]] (CALLCODE 250000 2 0 64 0 64 ) (SSTORE 5 (CALLER))} # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x0, + key=0x2, value=Op.CALLCODE( - gas=0x55730, - address=0xFED08E44AE95ECE264BC94A1FC45AF8BC4EF4F1D, - value=0x1, + gas=0x3D090, + address=addr_3, + value=0x2, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, ), ) + + Op.SSTORE(key=0x5, value=Op.CALLER) + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xDB43306B16C521B9CC3667FBE7D1B697BB1F9605), # noqa: E501 ) # Source: lll # { [[ 1 ]] (DELEGATECALL 300000 0 64 0 64 ) } # noqa: E501 @@ -75,7 +86,7 @@ def test_callcallcodecall_010( key=0x1, value=Op.DELEGATECALL( gas=0x493E0, - address=0x8738AB5302009E8BAD163C8A9E91E72926B09D34, + address=addr_2, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -85,45 +96,26 @@ def test_callcallcodecall_010( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xFED08E44AE95ECE264BC94A1FC45AF8BC4EF4F1D), # noqa: E501 ) # Source: lll - # { [[ 2 ]] (CALLCODE 250000 2 0 64 0 64 ) (SSTORE 5 (CALLER))} # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 + # { [[ 0 ]] (CALLCODE 350000 1 0 64 0 64 ) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x2, + key=0x0, value=Op.CALLCODE( - gas=0x3D090, - address=0xB8601B04BFD9EB63BC6FF0263567113D4CB874E4, - value=0x2, + gas=0x55730, + address=addr, + value=0x1, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, ), ) - + Op.SSTORE(key=0x5, value=Op.CALLER) + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x8738AB5302009E8BAD163C8A9E91E72926B09D34), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) (SSTORE 4 (CALLER)) (SSTORE 6 (CALLVALUE)) (SSTORE 330 (ADDRESS)) (SSTORE 332 (ORIGIN)) (SSTORE 336 (CALLDATASIZE)) (SSTORE 338 (CODESIZE)) (SSTORE 340 (GASPRICE))} # noqa: E501 - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) - + Op.SSTORE(key=0x4, value=Op.CALLER) - + Op.SSTORE(key=0x6, value=Op.CALLVALUE) - + Op.SSTORE(key=0x14A, value=Op.ADDRESS) - + Op.SSTORE(key=0x14C, value=Op.ORIGIN) - + Op.SSTORE(key=0x150, value=Op.CALLDATASIZE) - + Op.SSTORE(key=0x152, value=Op.CODESIZE) - + Op.SSTORE(key=0x154, value=Op.GASPRICE) - + Op.STOP, - nonce=0, - address=Address(0xB8601B04BFD9EB63BC6FF0263567113D4CB874E4), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, @@ -139,11 +131,11 @@ def test_callcallcodecall_010( 1: 1, 2: 1, 3: 1, - 4: 0xDB43306B16C521B9CC3667FBE7D1B697BB1F9605, - 5: 0xDB43306B16C521B9CC3667FBE7D1B697BB1F9605, + 4: target, + 5: target, 6: 2, - 330: 0xDB43306B16C521B9CC3667FBE7D1B697BB1F9605, - 332: 0xEBAF50DEBF10E08302FE4280C32DF010463CA297, + 330: target, + 332: sender, 336: 64, 338: 39, 340: 10, diff --git a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcallcodecall_010_ooge.py b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcallcodecall_010_ooge.py index cec776e5836..e0ad0d14f1b 100644 --- a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcallcodecall_010_ooge.py +++ b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcallcodecall_010_ooge.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcallcodecall_010_ooge( ) -> None: """CALLCODE -> DELEGATE -> CALLCODE -> CODE OOG.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,13 +46,21 @@ def test_callcallcodecall_010_ooge( ) # Source: lll - # { [[ 0 ]] (CALLCODE 800000 0 0 64 0 64 ) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 + # { (SSTORE 3 1) (KECCAK256 0x00 0x2fffff) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + + Op.SHA3(offset=0x0, size=0x2FFFFF) + + Op.STOP, + nonce=0, + ) + # Source: lll + # { [[ 2 ]] (CALLCODE 400000 0 0 64 0 64 ) [[11]] 1 } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x0, + key=0x2, value=Op.CALLCODE( - gas=0xC3500, - address=0x69A0017A51AD556682F48B32235D0B61ABDF4DA4, + gas=0x61A80, + address=addr_3, value=0x0, args_offset=0x0, args_size=0x40, @@ -63,10 +68,9 @@ def test_callcallcodecall_010_ooge( ret_size=0x40, ), ) + + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x9E57433AFAFF8A546FBC43CF0330AFB6561DC550), # noqa: E501 ) # Source: lll # { [[ 1 ]] (DELEGATECALL 600000 0 64 0 64 ) } # noqa: E501 @@ -75,7 +79,7 @@ def test_callcallcodecall_010_ooge( key=0x1, value=Op.DELEGATECALL( gas=0x927C0, - address=0x6322DC554ACDCADA01CBF7AC6A163D207C34DED2, + address=addr_2, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -84,16 +88,15 @@ def test_callcallcodecall_010_ooge( ) + Op.STOP, nonce=0, - address=Address(0x69A0017A51AD556682F48B32235D0B61ABDF4DA4), # noqa: E501 ) # Source: lll - # { [[ 2 ]] (CALLCODE 400000 0 0 64 0 64 ) [[11]] 1 } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 + # { [[ 0 ]] (CALLCODE 800000 0 0 64 0 64 ) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x2, + key=0x0, value=Op.CALLCODE( - gas=0x61A80, - address=0x1DD747F92062BB53BB8E867EC2902792435F1748, + gas=0xC3500, + address=addr, value=0x0, args_offset=0x0, args_size=0x40, @@ -101,21 +104,10 @@ def test_callcallcodecall_010_ooge( ret_size=0x40, ), ) - + Op.SSTORE(key=0xB, value=0x1) - + Op.STOP, - nonce=0, - address=Address(0x6322DC554ACDCADA01CBF7AC6A163D207C34DED2), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) (KECCAK256 0x00 0x2fffff) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) - + Op.SHA3(offset=0x0, size=0x2FFFFF) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x1DD747F92062BB53BB8E867EC2902792435F1748), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcallcodecall_010_oogm_after.py b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcallcodecall_010_oogm_after.py index ab71dd0b2e4..a3e4b5fa7d8 100644 --- a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcallcodecall_010_oogm_after.py +++ b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcallcodecall_010_oogm_after.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcallcodecall_010_oogm_after( ) -> None: """CALLCODE -> (DELEGATE -> CALLCODE -> CODE) OOG.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,13 +46,19 @@ def test_callcallcodecall_010_oogm_after( ) # Source: lll - # { [[ 0 ]] (CALLCODE 800000 0 0 64 0 64 ) [[11]] 1 } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 + # { (SSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + nonce=0, + ) + # Source: lll + # { [[ 2 ]] (CALLCODE 400000 0 0 64 0 64 ) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x0, + key=0x2, value=Op.CALLCODE( - gas=0xC3500, - address=0x1ADAE71AD3AEEC97978E38BE04DA2A1773DFC506, + gas=0x61A80, + address=addr_3, value=0x0, args_offset=0x0, args_size=0x40, @@ -63,11 +66,8 @@ def test_callcallcodecall_010_oogm_after( ret_size=0x40, ), ) - + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x400347DADA8C51A2AAC4B4C31AE726BA8551E2B9), # noqa: E501 ) # Source: lll # { [[ 1 ]] (DELEGATECALL 600000 0 64 0 64 ) (KECCAK256 0x00 0x2fffff) } # noqa: E501 @@ -76,7 +76,7 @@ def test_callcallcodecall_010_oogm_after( key=0x1, value=Op.DELEGATECALL( gas=0x927C0, - address=0x926DFBCC20B2AB686FC85331883541D174CCC738, + address=addr_2, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -86,16 +86,15 @@ def test_callcallcodecall_010_oogm_after( + Op.SHA3(offset=0x0, size=0x2FFFFF) + Op.STOP, nonce=0, - address=Address(0x1ADAE71AD3AEEC97978E38BE04DA2A1773DFC506), # noqa: E501 ) # Source: lll - # { [[ 2 ]] (CALLCODE 400000 0 0 64 0 64 ) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 + # { [[ 0 ]] (CALLCODE 800000 0 0 64 0 64 ) [[11]] 1 } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x2, + key=0x0, value=Op.CALLCODE( - gas=0x61A80, - address=0xB126C622075B1189FB6C45E851641CFADDF65B36, + gas=0xC3500, + address=addr, value=0x0, args_offset=0x0, args_size=0x40, @@ -103,18 +102,11 @@ def test_callcallcodecall_010_oogm_after( ret_size=0x40, ), ) + + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x926DFBCC20B2AB686FC85331883541D174CCC738), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, - nonce=0, - address=Address(0xB126C622075B1189FB6C45E851641CFADDF65B36), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcallcodecall_010_oogm_before.py b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcallcodecall_010_oogm_before.py index aea320f79c3..518da115c97 100644 --- a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcallcodecall_010_oogm_before.py +++ b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcallcodecall_010_oogm_before.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcallcodecall_010_oogm_before( ) -> None: """CALLCODE -> DELEGATE -> OOG CALLCODE -> CODE.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,13 +46,20 @@ def test_callcallcodecall_010_oogm_before( ) # Source: lll - # { [[ 0 ]] (CALLCODE 800000 0 0 64 0 64 ) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, + # { (SSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + nonce=0, + ) + # Source: lll + # { (KECCAK256 0x00 0x2fffff) [[ 2 ]] (CALLCODE 400000 0 0 64 0 64 ) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.POP(Op.SHA3(offset=0x0, size=0x2FFFFF)) + + Op.SSTORE( + key=0x2, value=Op.CALLCODE( - gas=0xC3500, - address=0x29F893B720E998CCD5971409FA9A8802822FDCBC, + gas=0x61A80, + address=addr_3, value=0x0, args_offset=0x0, args_size=0x40, @@ -64,9 +68,7 @@ def test_callcallcodecall_010_oogm_before( ), ) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x9E57433AFAFF8A546FBC43CF0330AFB6561DC550), # noqa: E501 ) # Source: lll # { [[ 1 ]] (DELEGATECALL 600000 0 64 0 64 ) [[11]] 1 } # noqa: E501 @@ -75,7 +77,7 @@ def test_callcallcodecall_010_oogm_before( key=0x1, value=Op.DELEGATECALL( gas=0x927C0, - address=0xD33AB78AC3965E7D6F9548DFF5839138A9F69C5, + address=addr_2, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -85,17 +87,15 @@ def test_callcallcodecall_010_oogm_before( + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, nonce=0, - address=Address(0x29F893B720E998CCD5971409FA9A8802822FDCBC), # noqa: E501 ) # Source: lll - # { (KECCAK256 0x00 0x2fffff) [[ 2 ]] (CALLCODE 400000 0 0 64 0 64 ) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.POP(Op.SHA3(offset=0x0, size=0x2FFFFF)) - + Op.SSTORE( - key=0x2, + # { [[ 0 ]] (CALLCODE 800000 0 0 64 0 64 ) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, value=Op.CALLCODE( - gas=0x61A80, - address=0xB126C622075B1189FB6C45E851641CFADDF65B36, + gas=0xC3500, + address=addr, value=0x0, args_offset=0x0, args_size=0x40, @@ -104,17 +104,9 @@ def test_callcallcodecall_010_oogm_before( ), ) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x0D33AB78AC3965E7D6F9548DFF5839138A9F69C5), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, - nonce=0, - address=Address(0xB126C622075B1189FB6C45E851641CFADDF65B36), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcallcodecall_010_suicide_end.py b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcallcodecall_010_suicide_end.py index 9280e3f4a68..02e73911b14 100644 --- a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcallcodecall_010_suicide_end.py +++ b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcallcodecall_010_suicide_end.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcallcodecall_010_suicide_end( ) -> None: """Test_callcallcodecall_010_suicide_end.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -48,6 +45,14 @@ def test_callcallcodecall_010_suicide_end( gas_limit=30000000, ) + # Source: lll + # { (SSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + balance=0x2540BE400, + nonce=0, + address=Address(0x73B954EBC05BB0FF4A0F6A13A054D50AD1584099), # noqa: E501 + ) # Source: lll # { [[ 0 ]] (CALLCODE 150000 0 0 64 0 64 ) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -108,15 +113,6 @@ def test_callcallcodecall_010_suicide_end( nonce=0, address=Address(0x94C8F980AEECBB6575B12AE614A249FC3E836F21), # noqa: E501 ) - # Source: lll - # { (SSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, - balance=0x2540BE400, - nonce=0, - address=Address(0x73B954EBC05BB0FF4A0F6A13A054D50AD1584099), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcallcodecall_010_suicide_middle.py b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcallcodecall_010_suicide_middle.py index aad98acb1bf..c381640d752 100644 --- a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcallcodecall_010_suicide_middle.py +++ b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcallcodecall_010_suicide_middle.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcallcodecall_010_suicide_middle( ) -> None: """Test_callcallcodecall_010_suicide_middle.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -48,6 +45,14 @@ def test_callcallcodecall_010_suicide_middle( gas_limit=30000000, ) + # Source: lll + # { (SSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + balance=0x2540BE400, + nonce=0, + address=Address(0x73B954EBC05BB0FF4A0F6A13A054D50AD1584099), # noqa: E501 + ) # Source: lll # { [[ 0 ]] (CALLCODE 150000 0 0 64 0 64 ) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -110,15 +115,6 @@ def test_callcallcodecall_010_suicide_middle( nonce=0, address=Address(0x23A077E1E6B0740D6BFBC41DE582F2930ABD1762), # noqa: E501 ) - # Source: lll - # { (SSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, - balance=0x2540BE400, - nonce=0, - address=Address(0x73B954EBC05BB0FF4A0F6A13A054D50AD1584099), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcallcodecallcode_011.py b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcallcodecallcode_011.py index cdbf453e523..48ad74e3fd5 100644 --- a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcallcodecallcode_011.py +++ b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcallcodecallcode_011.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcallcodecallcode_011( ) -> None: """Test_callcallcodecallcode_011.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,14 +46,27 @@ def test_callcallcodecallcode_011( ) # Source: lll - # { [[ 0 ]] (CALLCODE 350000 1 0 64 0 64 ) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 + # { (SSTORE 3 1) (SSTORE 4 (CALLER)) (SSTORE 6 (CALLVALUE)) (SSTORE 330 (ADDRESS)) (SSTORE 332 (ORIGIN)) (SSTORE 336 (CALLDATASIZE)) (SSTORE 338 (CODESIZE)) (SSTORE 340 (GASPRICE))} # noqa: E501 + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + + Op.SSTORE(key=0x4, value=Op.CALLER) + + Op.SSTORE(key=0x6, value=Op.CALLVALUE) + + Op.SSTORE(key=0x14A, value=Op.ADDRESS) + + Op.SSTORE(key=0x14C, value=Op.ORIGIN) + + Op.SSTORE(key=0x150, value=Op.CALLDATASIZE) + + Op.SSTORE(key=0x152, value=Op.CODESIZE) + + Op.SSTORE(key=0x154, value=Op.GASPRICE) + + Op.STOP, + nonce=0, + ) + # Source: lll + # { [[ 2 ]] (DELEGATECALL 200000 0 64 0 64 ) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x0, - value=Op.CALLCODE( - gas=0x55730, - address=0x66F7A765DC70598F71B119F636A53AAA43C4CCA1, - value=0x1, + key=0x2, + value=Op.DELEGATECALL( + gas=0x30D40, + address=addr_3, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -64,9 +74,7 @@ def test_callcallcodecallcode_011( ), ) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xDB43306B16C521B9CC3667FBE7D1B697BB1F9605), # noqa: E501 ) # Source: lll # { [[ 1 ]] (DELEGATECALL 300000 0 64 0 64 ) } # noqa: E501 @@ -75,7 +83,7 @@ def test_callcallcodecallcode_011( key=0x1, value=Op.DELEGATECALL( gas=0x493E0, - address=0x563B277206F3BAB1099C59ABB457C3D14E2DEF7B, + address=addr_2, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -84,16 +92,16 @@ def test_callcallcodecallcode_011( ) + Op.STOP, nonce=0, - address=Address(0x66F7A765DC70598F71B119F636A53AAA43C4CCA1), # noqa: E501 ) # Source: lll - # { [[ 2 ]] (DELEGATECALL 200000 0 64 0 64 ) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 + # { [[ 0 ]] (CALLCODE 350000 1 0 64 0 64 ) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x2, - value=Op.DELEGATECALL( - gas=0x30D40, - address=0xB8601B04BFD9EB63BC6FF0263567113D4CB874E4, + key=0x0, + value=Op.CALLCODE( + gas=0x55730, + address=addr, + value=0x1, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -101,25 +109,9 @@ def test_callcallcodecallcode_011( ), ) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x563B277206F3BAB1099C59ABB457C3D14E2DEF7B), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) (SSTORE 4 (CALLER)) (SSTORE 6 (CALLVALUE)) (SSTORE 330 (ADDRESS)) (SSTORE 332 (ORIGIN)) (SSTORE 336 (CALLDATASIZE)) (SSTORE 338 (CODESIZE)) (SSTORE 340 (GASPRICE))} # noqa: E501 - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) - + Op.SSTORE(key=0x4, value=Op.CALLER) - + Op.SSTORE(key=0x6, value=Op.CALLVALUE) - + Op.SSTORE(key=0x14A, value=Op.ADDRESS) - + Op.SSTORE(key=0x14C, value=Op.ORIGIN) - + Op.SSTORE(key=0x150, value=Op.CALLDATASIZE) - + Op.SSTORE(key=0x152, value=Op.CODESIZE) - + Op.SSTORE(key=0x154, value=Op.GASPRICE) - + Op.STOP, - nonce=0, - address=Address(0xB8601B04BFD9EB63BC6FF0263567113D4CB874E4), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, @@ -135,10 +127,10 @@ def test_callcallcodecallcode_011( 1: 1, 2: 1, 3: 1, - 4: 0xDB43306B16C521B9CC3667FBE7D1B697BB1F9605, + 4: target, 6: 1, - 330: 0xDB43306B16C521B9CC3667FBE7D1B697BB1F9605, - 332: 0xEBAF50DEBF10E08302FE4280C32DF010463CA297, + 330: target, + 332: sender, 336: 64, 338: 39, 340: 10, diff --git a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcallcodecallcode_011_ooge.py b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcallcodecallcode_011_ooge.py index 719acdb81c8..b682d1c1536 100644 --- a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcallcodecallcode_011_ooge.py +++ b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcallcodecallcode_011_ooge.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcallcodecallcode_011_ooge( ) -> None: """CALLCODE -> DELEGATE -> DELEGATE -> CODE OOG.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,24 +46,30 @@ def test_callcallcodecallcode_011_ooge( ) # Source: lll - # { [[ 0 ]] (CALLCODE 800000 0 0 64 0 64 ) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 + # { (SSTORE 3 1) (KECCAK256 0x00 0x2fffff) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + + Op.SHA3(offset=0x0, size=0x2FFFFF) + + Op.STOP, + nonce=0, + ) + # Source: lll + # { [[ 2 ]] (DELEGATECALL 400000 0 64 0 64 ) [[11]] 1 } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x0, - value=Op.CALLCODE( - gas=0xC3500, - address=0x69A0017A51AD556682F48B32235D0B61ABDF4DA4, - value=0x0, + key=0x2, + value=Op.DELEGATECALL( + gas=0x61A80, + address=addr_3, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, ), ) + + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x9E57433AFAFF8A546FBC43CF0330AFB6561DC550), # noqa: E501 ) # Source: lll # { [[ 1 ]] (DELEGATECALL 600000 0 64 0 64 ) } # noqa: E501 @@ -75,7 +78,7 @@ def test_callcallcodecallcode_011_ooge( key=0x1, value=Op.DELEGATECALL( gas=0x927C0, - address=0x3E423A7B1FBA04D0C3F9423A3AE2A180D2878D5B, + address=addr_2, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -84,37 +87,26 @@ def test_callcallcodecallcode_011_ooge( ) + Op.STOP, nonce=0, - address=Address(0x69A0017A51AD556682F48B32235D0B61ABDF4DA4), # noqa: E501 ) # Source: lll - # { [[ 2 ]] (DELEGATECALL 400000 0 64 0 64 ) [[11]] 1 } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 + # { [[ 0 ]] (CALLCODE 800000 0 0 64 0 64 ) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x2, - value=Op.DELEGATECALL( - gas=0x61A80, - address=0x1DD747F92062BB53BB8E867EC2902792435F1748, + key=0x0, + value=Op.CALLCODE( + gas=0xC3500, + address=addr, + value=0x0, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, ), ) - + Op.SSTORE(key=0xB, value=0x1) - + Op.STOP, - nonce=0, - address=Address(0x3E423A7B1FBA04D0C3F9423A3AE2A180D2878D5B), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) (KECCAK256 0x00 0x2fffff) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) - + Op.SHA3(offset=0x0, size=0x2FFFFF) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x1DD747F92062BB53BB8E867EC2902792435F1748), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcallcodecallcode_011_oogm_after.py b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcallcodecallcode_011_oogm_after.py index aaf83252bea..65bd6cdcd38 100644 --- a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcallcodecallcode_011_oogm_after.py +++ b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcallcodecallcode_011_oogm_after.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcallcodecallcode_011_oogm_after( ) -> None: """CALLCODE -> (DELEGATE -> DELEGATE -> CODE) OOG.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,25 +46,27 @@ def test_callcallcodecallcode_011_oogm_after( ) # Source: lll - # { [[ 0 ]] (CALLCODE 800000 0 0 64 0 64 ) [[11]] 1 } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 + # { (SSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + nonce=0, + ) + # Source: lll + # { [[ 2 ]] (DELEGATECALL 400000 0 64 0 64 ) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x0, - value=Op.CALLCODE( - gas=0xC3500, - address=0x1ADAE71AD3AEEC97978E38BE04DA2A1773DFC506, - value=0x0, + key=0x2, + value=Op.DELEGATECALL( + gas=0x61A80, + address=addr_3, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, ), ) - + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x400347DADA8C51A2AAC4B4C31AE726BA8551E2B9), # noqa: E501 ) # Source: lll # { [[ 1 ]] (DELEGATECALL 600000 0 64 0 64 ) (KECCAK256 0x00 0x2fffff) } # noqa: E501 @@ -76,7 +75,7 @@ def test_callcallcodecallcode_011_oogm_after( key=0x1, value=Op.DELEGATECALL( gas=0x927C0, - address=0xDA11FDF0CE02240C6B4711F56AFCD9763B44D3DC, + address=addr_2, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -86,34 +85,27 @@ def test_callcallcodecallcode_011_oogm_after( + Op.SHA3(offset=0x0, size=0x2FFFFF) + Op.STOP, nonce=0, - address=Address(0x1ADAE71AD3AEEC97978E38BE04DA2A1773DFC506), # noqa: E501 ) # Source: lll - # { [[ 2 ]] (DELEGATECALL 400000 0 64 0 64 ) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 + # { [[ 0 ]] (CALLCODE 800000 0 0 64 0 64 ) [[11]] 1 } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x2, - value=Op.DELEGATECALL( - gas=0x61A80, - address=0xB126C622075B1189FB6C45E851641CFADDF65B36, + key=0x0, + value=Op.CALLCODE( + gas=0xC3500, + address=addr, + value=0x0, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, ), ) + + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xDA11FDF0CE02240C6B4711F56AFCD9763B44D3DC), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, - nonce=0, - address=Address(0xB126C622075B1189FB6C45E851641CFADDF65B36), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcallcodecallcode_011_oogm_before.py b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcallcodecallcode_011_oogm_before.py index ee68769dfe6..f720fd6f4c2 100644 --- a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcallcodecallcode_011_oogm_before.py +++ b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcallcodecallcode_011_oogm_before.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcallcodecallcode_011_oogm_before( ) -> None: """CALLCODE -> DELEGATE -> OOG DELEGATE -> CODE.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,14 +46,20 @@ def test_callcallcodecallcode_011_oogm_before( ) # Source: lll - # { [[ 0 ]] (CALLCODE 150000 0 0 64 0 64 ) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.CALLCODE( - gas=0x249F0, - address=0xB5104F0F7758CE0CAAC73F593C6D63EB9A5EF905, - value=0x0, + # { (SSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + nonce=0, + ) + # Source: lll + # { (KECCAK256 0x00 0x2fffff) [[ 2 ]] (DELEGATECALL 20020 0 64 0 64 ) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.POP(Op.SHA3(offset=0x0, size=0x2FFFFF)) + + Op.SSTORE( + key=0x2, + value=Op.DELEGATECALL( + gas=0x4E34, + address=addr_3, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -64,9 +67,7 @@ def test_callcallcodecallcode_011_oogm_before( ), ) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xA74CA10B765DCDA3B60687F73F2881E2A56EDA64), # noqa: E501 ) # Source: lll # { [[ 1 ]] (DELEGATECALL 40080 0 64 0 64 ) [[11]] 1 } # noqa: E501 @@ -75,7 +76,7 @@ def test_callcallcodecallcode_011_oogm_before( key=0x1, value=Op.DELEGATECALL( gas=0x9C90, - address=0xC176D297FF74C0F684B73D6CC8617E7F5FFE34FE, + address=addr_2, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -85,17 +86,16 @@ def test_callcallcodecallcode_011_oogm_before( + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, nonce=0, - address=Address(0xB5104F0F7758CE0CAAC73F593C6D63EB9A5EF905), # noqa: E501 ) # Source: lll - # { (KECCAK256 0x00 0x2fffff) [[ 2 ]] (DELEGATECALL 20020 0 64 0 64 ) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.POP(Op.SHA3(offset=0x0, size=0x2FFFFF)) - + Op.SSTORE( - key=0x2, - value=Op.DELEGATECALL( - gas=0x4E34, - address=0xB126C622075B1189FB6C45E851641CFADDF65B36, + # { [[ 0 ]] (CALLCODE 150000 0 0 64 0 64 ) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.CALLCODE( + gas=0x249F0, + address=addr, + value=0x0, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -103,17 +103,9 @@ def test_callcallcodecallcode_011_oogm_before( ), ) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xC176D297FF74C0F684B73D6CC8617E7F5FFE34FE), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, - nonce=0, - address=Address(0xB126C622075B1189FB6C45E851641CFADDF65B36), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcallcodecallcode_011_suicide_end.py b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcallcodecallcode_011_suicide_end.py index 14d94305a76..8ff0ce634da 100644 --- a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcallcodecallcode_011_suicide_end.py +++ b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcallcodecallcode_011_suicide_end.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcallcodecallcode_011_suicide_end( ) -> None: """Test_callcallcodecallcode_011_suicide_end.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -48,6 +45,14 @@ def test_callcallcodecallcode_011_suicide_end( gas_limit=30000000, ) + # Source: lll + # { (SSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + balance=0x2540BE400, + nonce=0, + address=Address(0x73B954EBC05BB0FF4A0F6A13A054D50AD1584099), # noqa: E501 + ) # Source: lll # { [[ 0 ]] (CALLCODE 150000 0 0 64 0 64 ) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -107,15 +112,6 @@ def test_callcallcodecallcode_011_suicide_end( nonce=0, address=Address(0xAC521409E2FA9526BFE6B827805783D2E307C4CE), # noqa: E501 ) - # Source: lll - # { (SSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, - balance=0x2540BE400, - nonce=0, - address=Address(0x73B954EBC05BB0FF4A0F6A13A054D50AD1584099), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcallcodecallcode_011_suicide_middle.py b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcallcodecallcode_011_suicide_middle.py index cf4da259665..749ef20c287 100644 --- a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcallcodecallcode_011_suicide_middle.py +++ b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcallcodecallcode_011_suicide_middle.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcallcodecallcode_011_suicide_middle( ) -> None: """Test_callcallcodecallcode_011_suicide_middle.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -48,6 +45,14 @@ def test_callcallcodecallcode_011_suicide_middle( gas_limit=30000000, ) + # Source: lll + # { (SSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + balance=0x2540BE400, + nonce=0, + address=Address(0x73B954EBC05BB0FF4A0F6A13A054D50AD1584099), # noqa: E501 + ) # Source: lll # { [[ 0 ]] (CALLCODE 150000 0 0 64 0 64 ) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -109,15 +114,6 @@ def test_callcallcodecallcode_011_suicide_middle( nonce=0, address=Address(0x6A45EC7F08C71B222CFC454A9608BC278E87F0AB), # noqa: E501 ) - # Source: lll - # { (SSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, - balance=0x2540BE400, - nonce=0, - address=Address(0x73B954EBC05BB0FF4A0F6A13A054D50AD1584099), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecall_10.py b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecall_10.py index da20457d81f..89451d38412 100644 --- a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecall_10.py +++ b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecall_10.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcodecall_10( ) -> None: """Test_callcodecall_10.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,23 +46,18 @@ def test_callcodecall_10( ) # Source: lll - # { [[ 0 ]] (DELEGATECALL 350000 0 64 0 64 ) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.DELEGATECALL( - gas=0x55730, - address=0x69142B38329C92930601FE8DA12DC5866CDE11C3, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ), - ) + # { (SSTORE 2 1) (SSTORE 4 (CALLER)) (SSTORE 5 (CALLVALUE)) (SSTORE 230 (ADDRESS)) (SSTORE 232 (ORIGIN)) (SSTORE 236 (CALLDATASIZE)) (SSTORE 238 (CODESIZE)) (SSTORE 240 (GASPRICE)) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x2, value=0x1) + + Op.SSTORE(key=0x4, value=Op.CALLER) + + Op.SSTORE(key=0x5, value=Op.CALLVALUE) + + Op.SSTORE(key=0xE6, value=Op.ADDRESS) + + Op.SSTORE(key=0xE8, value=Op.ORIGIN) + + Op.SSTORE(key=0xEC, value=Op.CALLDATASIZE) + + Op.SSTORE(key=0xEE, value=Op.CODESIZE) + + Op.SSTORE(key=0xF0, value=Op.GASPRICE) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xD26E26D5A4796D450BFA296D70C05F02DBC1A4B9), # noqa: E501 ) # Source: lll # { [[ 1 ]] (CALLCODE 250000 2 0 64 0 64 ) } # noqa: E501 @@ -74,7 +66,7 @@ def test_callcodecall_10( key=0x1, value=Op.CALLCODE( gas=0x3D090, - address=0xD42CD48F1D9A88F4B75BFB5E46E754C1128BD7FB, + address=addr_2, value=0x2, args_offset=0x0, args_size=0x40, @@ -85,24 +77,25 @@ def test_callcodecall_10( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x69142B38329C92930601FE8DA12DC5866CDE11C3), # noqa: E501 ) # Source: lll - # { (SSTORE 2 1) (SSTORE 4 (CALLER)) (SSTORE 5 (CALLVALUE)) (SSTORE 230 (ADDRESS)) (SSTORE 232 (ORIGIN)) (SSTORE 236 (CALLDATASIZE)) (SSTORE 238 (CODESIZE)) (SSTORE 240 (GASPRICE)) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x2, value=0x1) - + Op.SSTORE(key=0x4, value=Op.CALLER) - + Op.SSTORE(key=0x5, value=Op.CALLVALUE) - + Op.SSTORE(key=0xE6, value=Op.ADDRESS) - + Op.SSTORE(key=0xE8, value=Op.ORIGIN) - + Op.SSTORE(key=0xEC, value=Op.CALLDATASIZE) - + Op.SSTORE(key=0xEE, value=Op.CODESIZE) - + Op.SSTORE(key=0xF0, value=Op.GASPRICE) + # { [[ 0 ]] (DELEGATECALL 350000 0 64 0 64 ) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.DELEGATECALL( + gas=0x55730, + address=addr, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ), + ) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xD42CD48F1D9A88F4B75BFB5E46E754C1128BD7FB), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, @@ -117,10 +110,10 @@ def test_callcodecall_10( 0: 1, 1: 1, 2: 1, - 4: 0xD26E26D5A4796D450BFA296D70C05F02DBC1A4B9, + 4: target, 5: 2, - 230: 0xD26E26D5A4796D450BFA296D70C05F02DBC1A4B9, - 232: 0xEBAF50DEBF10E08302FE4280C32DF010463CA297, + 230: target, + 232: sender, 236: 64, 238: 34, 240: 10, diff --git a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecall_10_ooge.py b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecall_10_ooge.py index 86919a9f3f1..1094066e048 100644 --- a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecall_10_ooge.py +++ b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecall_10_ooge.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcodecall_10_ooge( ) -> None: """DELEGATE -> CALLCODE -> CODE OOG.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,23 +46,12 @@ def test_callcodecall_10_ooge( ) # Source: lll - # { [[ 0 ]] (DELEGATECALL 800000 0 64 0 64 ) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.DELEGATECALL( - gas=0xC3500, - address=0x8E6E134402F2EECA8E910E8EC62B45B36EE31F30, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ), - ) + # { (SSTORE 2 1) (KECCAK256 0x00 0x2fffff) } + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x2, value=0x1) + + Op.SHA3(offset=0x0, size=0x2FFFFF) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x0E7163A4A90126C4A13E52F48E84C74600E844DA), # noqa: E501 ) # Source: lll # { [[ 1 ]] (CALLCODE 600000 0 0 64 0 64 ) [[11]] 1 } # noqa: E501 @@ -74,7 +60,7 @@ def test_callcodecall_10_ooge( key=0x1, value=Op.CALLCODE( gas=0x927C0, - address=0x766B2CF0691F51029181FC511395B7AB71353A88, + address=addr_2, value=0x0, args_offset=0x0, args_size=0x40, @@ -85,18 +71,25 @@ def test_callcodecall_10_ooge( + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, nonce=0, - address=Address(0x8E6E134402F2EECA8E910E8EC62B45B36EE31F30), # noqa: E501 ) # Source: lll - # { (SSTORE 2 1) (KECCAK256 0x00 0x2fffff) } - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x2, value=0x1) - + Op.SHA3(offset=0x0, size=0x2FFFFF) + # { [[ 0 ]] (DELEGATECALL 800000 0 64 0 64 ) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.DELEGATECALL( + gas=0xC3500, + address=addr, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ), + ) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x766B2CF0691F51029181FC511395B7AB71353A88), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecall_10_suicide_end.py b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecall_10_suicide_end.py index 982c40cde74..ed560a050f0 100644 --- a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecall_10_suicide_end.py +++ b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecall_10_suicide_end.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcodecall_10_suicide_end( ) -> None: """Test_callcodecall_10_suicide_end.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -48,6 +45,14 @@ def test_callcodecall_10_suicide_end( gas_limit=30000000, ) + # Source: lll + # { (SSTORE 2 1) } + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x2, value=0x1) + Op.STOP, + balance=0x2540BE400, + nonce=0, + address=Address(0x703B936FD4D674F0FF5D6957F61097152F8781B8), # noqa: E501 + ) # Source: lll # { [[ 0 ]] (DELEGATECALL 150000 0 64 0 64 ) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -88,15 +93,6 @@ def test_callcodecall_10_suicide_end( nonce=0, address=Address(0x799DA5A3C983A22F9C430DE1BF99134EE561E856), # noqa: E501 ) - # Source: lll - # { (SSTORE 2 1) } - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x2, value=0x1) + Op.STOP, - balance=0x2540BE400, - nonce=0, - address=Address(0x703B936FD4D674F0FF5D6957F61097152F8781B8), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcall_100.py b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcall_100.py index ec29432b357..571626d265a 100644 --- a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcall_100.py +++ b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcall_100.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcodecallcall_100( ) -> None: """Test_callcodecallcall_100.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,13 +46,28 @@ def test_callcodecallcall_100( ) # Source: lll - # { [[ 0 ]] (DELEGATECALL 350000 0 64 0 64 ) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 + # { (SSTORE 3 1) (SSTORE 4 (CALLER)) (SSTORE 6 (CALLVALUE)) (SSTORE 330 (ADDRESS)) (SSTORE 332 (ORIGIN)) (SSTORE 336 (CALLDATASIZE)) (SSTORE 338 (CODESIZE)) (SSTORE 340 (GASPRICE)) } # noqa: E501 + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + + Op.SSTORE(key=0x4, value=Op.CALLER) + + Op.SSTORE(key=0x6, value=Op.CALLVALUE) + + Op.SSTORE(key=0x14A, value=Op.ADDRESS) + + Op.SSTORE(key=0x14C, value=Op.ORIGIN) + + Op.SSTORE(key=0x150, value=Op.CALLDATASIZE) + + Op.SSTORE(key=0x152, value=Op.CODESIZE) + + Op.SSTORE(key=0x154, value=Op.GASPRICE) + + Op.STOP, + nonce=0, + ) + # Source: lll + # { [[ 2 ]] (CALLCODE 250000 2 0 64 0 64 ) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x0, - value=Op.DELEGATECALL( - gas=0x55730, - address=0xBCC37470FBB132DE68B5746FF4463735A31B5F0C, + key=0x2, + value=Op.CALLCODE( + gas=0x3D090, + address=addr_3, + value=0x2, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -65,7 +77,6 @@ def test_callcodecallcall_100( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xD26E26D5A4796D450BFA296D70C05F02DBC1A4B9), # noqa: E501 ) # Source: lll # { [[ 1 ]] (CALLCODE 300000 1 0 64 0 64 ) (SSTORE 5 (CALLER))} # noqa: E501 @@ -74,7 +85,7 @@ def test_callcodecallcall_100( key=0x1, value=Op.CALLCODE( gas=0x493E0, - address=0x47F860829F84284269E427671425E1991A340EFA, + address=addr_2, value=0x1, args_offset=0x0, args_size=0x40, @@ -86,17 +97,15 @@ def test_callcodecallcall_100( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xBCC37470FBB132DE68B5746FF4463735A31B5F0C), # noqa: E501 ) # Source: lll - # { [[ 2 ]] (CALLCODE 250000 2 0 64 0 64 ) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 + # { [[ 0 ]] (DELEGATECALL 350000 0 64 0 64 ) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x2, - value=Op.CALLCODE( - gas=0x3D090, - address=0x9BA8D9F7285EBC9BCAAF9DD90F3C123797489566, - value=0x2, + key=0x0, + value=Op.DELEGATECALL( + gas=0x55730, + address=addr, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -106,24 +115,7 @@ def test_callcodecallcall_100( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x47F860829F84284269E427671425E1991A340EFA), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) (SSTORE 4 (CALLER)) (SSTORE 6 (CALLVALUE)) (SSTORE 330 (ADDRESS)) (SSTORE 332 (ORIGIN)) (SSTORE 336 (CALLDATASIZE)) (SSTORE 338 (CODESIZE)) (SSTORE 340 (GASPRICE)) } # noqa: E501 - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) - + Op.SSTORE(key=0x4, value=Op.CALLER) - + Op.SSTORE(key=0x6, value=Op.CALLVALUE) - + Op.SSTORE(key=0x14A, value=Op.ADDRESS) - + Op.SSTORE(key=0x14C, value=Op.ORIGIN) - + Op.SSTORE(key=0x150, value=Op.CALLDATASIZE) - + Op.SSTORE(key=0x152, value=Op.CODESIZE) - + Op.SSTORE(key=0x154, value=Op.GASPRICE) - + Op.STOP, - nonce=0, - address=Address(0x9BA8D9F7285EBC9BCAAF9DD90F3C123797489566), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, @@ -139,11 +131,11 @@ def test_callcodecallcall_100( 1: 1, 2: 1, 3: 1, - 4: 0xD26E26D5A4796D450BFA296D70C05F02DBC1A4B9, - 5: 0xEBAF50DEBF10E08302FE4280C32DF010463CA297, + 4: target, + 5: sender, 6: 2, - 330: 0xD26E26D5A4796D450BFA296D70C05F02DBC1A4B9, - 332: 0xEBAF50DEBF10E08302FE4280C32DF010463CA297, + 330: target, + 332: sender, 336: 64, 338: 39, 340: 10, diff --git a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcall_100_ooge.py b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcall_100_ooge.py index a7ff09c97c3..c1b01da23e8 100644 --- a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcall_100_ooge.py +++ b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcall_100_ooge.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcodecallcall_100_ooge( ) -> None: """DELEGATE -> CALLCODE -> CALLCODE -> CODE OOG.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,23 +46,31 @@ def test_callcodecallcall_100_ooge( ) # Source: lll - # { [[ 0 ]] (DELEGATECALL 800000 0 64 0 64 ) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 + # { (SSTORE 3 1) (KECCAK256 0x00 0x2fffff) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + + Op.SHA3(offset=0x0, size=0x2FFFFF) + + Op.STOP, + nonce=0, + ) + # Source: lll + # { [[ 2 ]] (CALLCODE 400000 0 0 64 0 64 ) [[11]] 1 } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x0, - value=Op.DELEGATECALL( - gas=0xC3500, - address=0x913CF7A18F61BAB7BCCF5607DFA9B730C5976000, + key=0x2, + value=Op.CALLCODE( + gas=0x61A80, + address=addr_3, + value=0x0, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, ), ) + + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x0E7163A4A90126C4A13E52F48E84C74600E844DA), # noqa: E501 ) # Source: lll # { [[ 1 ]] (CALLCODE 600000 0 0 64 0 64 ) } # noqa: E501 @@ -74,7 +79,7 @@ def test_callcodecallcall_100_ooge( key=0x1, value=Op.CALLCODE( gas=0x927C0, - address=0x6322DC554ACDCADA01CBF7AC6A163D207C34DED2, + address=addr_2, value=0x0, args_offset=0x0, args_size=0x40, @@ -84,38 +89,25 @@ def test_callcodecallcall_100_ooge( ) + Op.STOP, nonce=0, - address=Address(0x913CF7A18F61BAB7BCCF5607DFA9B730C5976000), # noqa: E501 ) # Source: lll - # { [[ 2 ]] (CALLCODE 400000 0 0 64 0 64 ) [[11]] 1 } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 + # { [[ 0 ]] (DELEGATECALL 800000 0 64 0 64 ) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x2, - value=Op.CALLCODE( - gas=0x61A80, - address=0x6389DE20837EC4A47465AED415C7912598FEDC96, - value=0x0, + key=0x0, + value=Op.DELEGATECALL( + gas=0xC3500, + address=addr, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, ), ) - + Op.SSTORE(key=0xB, value=0x1) - + Op.STOP, - nonce=0, - address=Address(0x6322DC554ACDCADA01CBF7AC6A163D207C34DED2), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) (KECCAK256 0x00 0x2fffff) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) - + Op.SHA3(offset=0x0, size=0x2FFFFF) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x6389DE20837EC4A47465AED415C7912598FEDC96), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcall_100_oogm_after.py b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcall_100_oogm_after.py index d064a7ece5c..df871326fe5 100644 --- a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcall_100_oogm_after.py +++ b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcall_100_oogm_after.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcodecallcall_100_oogm_after( ) -> None: """DELEGATE -> (CALLCODE -> CALLCODE -> CODE) OOG.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,24 +46,28 @@ def test_callcodecallcall_100_oogm_after( ) # Source: lll - # { [[ 0 ]] (DELEGATECALL 800000 0 64 0 64 ) [[11]] 1 } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 + # { (SSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + nonce=0, + ) + # Source: lll + # { [[ 2 ]] (CALLCODE 400000 0 0 64 0 64 ) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x0, - value=Op.DELEGATECALL( - gas=0xC3500, - address=0x37E72DD6FF3C2AC8C1DDAB092A26164A2AD5988C, + key=0x2, + value=Op.CALLCODE( + gas=0x61A80, + address=addr_3, + value=0x0, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, ), ) - + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x74ECD5F6537B2B48EBBFF8D66AEE8EB8F98430A3), # noqa: E501 ) # Source: lll # { [[ 1 ]] (CALLCODE 600000 0 0 64 0 64 ) (KECCAK256 0x00 0x2fffff) } # noqa: E501 @@ -75,7 +76,7 @@ def test_callcodecallcall_100_oogm_after( key=0x1, value=Op.CALLCODE( gas=0x927C0, - address=0x926DFBCC20B2AB686FC85331883541D174CCC738, + address=addr_2, value=0x0, args_offset=0x0, args_size=0x40, @@ -86,35 +87,26 @@ def test_callcodecallcall_100_oogm_after( + Op.SHA3(offset=0x0, size=0x2FFFFF) + Op.STOP, nonce=0, - address=Address(0x37E72DD6FF3C2AC8C1DDAB092A26164A2AD5988C), # noqa: E501 ) # Source: lll - # { [[ 2 ]] (CALLCODE 400000 0 0 64 0 64 ) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 + # { [[ 0 ]] (DELEGATECALL 800000 0 64 0 64 ) [[11]] 1 } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x2, - value=Op.CALLCODE( - gas=0x61A80, - address=0xB126C622075B1189FB6C45E851641CFADDF65B36, - value=0x0, + key=0x0, + value=Op.DELEGATECALL( + gas=0xC3500, + address=addr, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, ), ) + + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x926DFBCC20B2AB686FC85331883541D174CCC738), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, - nonce=0, - address=Address(0xB126C622075B1189FB6C45E851641CFADDF65B36), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcall_100_oogm_before.py b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcall_100_oogm_before.py index 48768eeac7f..2f8db11c656 100644 --- a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcall_100_oogm_before.py +++ b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcall_100_oogm_before.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcodecallcall_100_oogm_before( ) -> None: """DELEGATE -> CALLCODE -> OOG CALLCODE -> CODE.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,13 +46,21 @@ def test_callcodecallcall_100_oogm_before( ) # Source: lll - # { [[ 0 ]] (DELEGATECALL 800000 0 64 0 64 ) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.DELEGATECALL( - gas=0xC3500, - address=0x8E6E134402F2EECA8E910E8EC62B45B36EE31F30, + # { (SSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + nonce=0, + ) + # Source: lll + # { (KECCAK256 0x00 0x2fffff) [[ 2 ]] (CALLCODE 400000 0 0 64 0 64 ) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.POP(Op.SHA3(offset=0x0, size=0x2FFFFF)) + + Op.SSTORE( + key=0x2, + value=Op.CALLCODE( + gas=0x61A80, + address=addr_3, + value=0x0, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -63,9 +68,7 @@ def test_callcodecallcall_100_oogm_before( ), ) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x0E7163A4A90126C4A13E52F48E84C74600E844DA), # noqa: E501 ) # Source: lll # { [[ 1 ]] (CALLCODE 600000 0 0 64 0 64 ) [[11]] 1 } # noqa: E501 @@ -74,7 +77,7 @@ def test_callcodecallcall_100_oogm_before( key=0x1, value=Op.CALLCODE( gas=0x927C0, - address=0xDBB53599A5D13E0C465E1CC4FF24D7F00D780DF4, + address=addr_2, value=0x0, args_offset=0x0, args_size=0x40, @@ -85,18 +88,15 @@ def test_callcodecallcall_100_oogm_before( + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, nonce=0, - address=Address(0x8E6E134402F2EECA8E910E8EC62B45B36EE31F30), # noqa: E501 ) # Source: lll - # { (KECCAK256 0x00 0x2fffff) [[ 2 ]] (CALLCODE 400000 0 0 64 0 64 ) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.POP(Op.SHA3(offset=0x0, size=0x2FFFFF)) - + Op.SSTORE( - key=0x2, - value=Op.CALLCODE( - gas=0x61A80, - address=0xB126C622075B1189FB6C45E851641CFADDF65B36, - value=0x0, + # { [[ 0 ]] (DELEGATECALL 800000 0 64 0 64 ) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.DELEGATECALL( + gas=0xC3500, + address=addr, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -104,17 +104,9 @@ def test_callcodecallcall_100_oogm_before( ), ) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xDBB53599A5D13E0C465E1CC4FF24D7F00D780DF4), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, - nonce=0, - address=Address(0xB126C622075B1189FB6C45E851641CFADDF65B36), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcall_100_suicide_end.py b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcall_100_suicide_end.py index 31fd107b872..51991cb8e36 100644 --- a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcall_100_suicide_end.py +++ b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcall_100_suicide_end.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcodecallcall_100_suicide_end( ) -> None: """Test_callcodecallcall_100_suicide_end.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -48,6 +45,14 @@ def test_callcodecallcall_100_suicide_end( gas_limit=30000000, ) + # Source: lll + # { (SSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + balance=0x2540BE400, + nonce=0, + address=Address(0x73B954EBC05BB0FF4A0F6A13A054D50AD1584099), # noqa: E501 + ) # Source: lll # { [[ 0 ]] (DELEGATECALL 150000 0 64 0 64 ) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -108,15 +113,6 @@ def test_callcodecallcall_100_suicide_end( nonce=0, address=Address(0x94C8F980AEECBB6575B12AE614A249FC3E836F21), # noqa: E501 ) - # Source: lll - # { (SSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, - balance=0x2540BE400, - nonce=0, - address=Address(0x73B954EBC05BB0FF4A0F6A13A054D50AD1584099), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcall_100_suicide_middle.py b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcall_100_suicide_middle.py index 6ca245f1dc9..c61cace9877 100644 --- a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcall_100_suicide_middle.py +++ b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcall_100_suicide_middle.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcodecallcall_100_suicide_middle( ) -> None: """Test_callcodecallcall_100_suicide_middle.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -48,6 +45,14 @@ def test_callcodecallcall_100_suicide_middle( gas_limit=30000000, ) + # Source: lll + # { (SSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + balance=0x2540BE400, + nonce=0, + address=Address(0x73B954EBC05BB0FF4A0F6A13A054D50AD1584099), # noqa: E501 + ) # Source: lll # { [[ 0 ]] (DELEGATECALL 150000 0 64 0 64 ) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -110,15 +115,6 @@ def test_callcodecallcall_100_suicide_middle( nonce=0, address=Address(0x23A077E1E6B0740D6BFBC41DE582F2930ABD1762), # noqa: E501 ) - # Source: lll - # { (SSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, - balance=0x2540BE400, - nonce=0, - address=Address(0x73B954EBC05BB0FF4A0F6A13A054D50AD1584099), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcallcode_101.py b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcallcode_101.py index 96619969f01..9104aa608e2 100644 --- a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcallcode_101.py +++ b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcallcode_101.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcodecallcallcode_101( ) -> None: """Test_callcodecallcallcode_101.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,23 +46,37 @@ def test_callcodecallcallcode_101( ) # Source: lll - # { [[ 0 ]] (DELEGATECALL 350000 0 64 0 64 ) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 + # { (SSTORE 3 1) (SSTORE 4 (CALLER)) (SSTORE 7 (CALLVALUE)) (SSTORE 330 (ADDRESS)) (SSTORE 332 (ORIGIN)) (SSTORE 336 (CALLDATASIZE)) (SSTORE 338 (CODESIZE)) (SSTORE 340 (GASPRICE)) } # noqa: E501 + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + + Op.SSTORE(key=0x4, value=Op.CALLER) + + Op.SSTORE(key=0x7, value=Op.CALLVALUE) + + Op.SSTORE(key=0x14A, value=Op.ADDRESS) + + Op.SSTORE(key=0x14C, value=Op.ORIGIN) + + Op.SSTORE(key=0x150, value=Op.CALLDATASIZE) + + Op.SSTORE(key=0x152, value=Op.CODESIZE) + + Op.SSTORE(key=0x154, value=Op.GASPRICE) + + Op.STOP, + nonce=0, + ) + # Source: lll + # { [[ 2 ]] (DELEGATECALL 250000 0 64 0 64 ) (SSTORE 6 (CALLER)) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x0, + key=0x2, value=Op.DELEGATECALL( - gas=0x55730, - address=0xCC06DD0686D0E620FBD99F6A023BA77440119F71, + gas=0x3D090, + address=addr_3, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, ), ) + + Op.SSTORE(key=0x6, value=Op.CALLER) + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xD26E26D5A4796D450BFA296D70C05F02DBC1A4B9), # noqa: E501 ) # Source: lll # { [[ 1 ]] (CALLCODE 300000 1 0 64 0 64 ) (SSTORE 5 (CALLER)) } # noqa: E501 @@ -74,7 +85,7 @@ def test_callcodecallcallcode_101( key=0x1, value=Op.CALLCODE( gas=0x493E0, - address=0xAE5F44E50ECBF16179774393C643204383FDE833, + address=addr_2, value=0x1, args_offset=0x0, args_size=0x40, @@ -86,44 +97,25 @@ def test_callcodecallcallcode_101( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xCC06DD0686D0E620FBD99F6A023BA77440119F71), # noqa: E501 ) # Source: lll - # { [[ 2 ]] (DELEGATECALL 250000 0 64 0 64 ) (SSTORE 6 (CALLER)) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 + # { [[ 0 ]] (DELEGATECALL 350000 0 64 0 64 ) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x2, + key=0x0, value=Op.DELEGATECALL( - gas=0x3D090, - address=0x7E63847AAD8CA50FB7C04777DCE6871A6BF8DE0C, + gas=0x55730, + address=addr, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, ), ) - + Op.SSTORE(key=0x6, value=Op.CALLER) + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xAE5F44E50ECBF16179774393C643204383FDE833), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) (SSTORE 4 (CALLER)) (SSTORE 7 (CALLVALUE)) (SSTORE 330 (ADDRESS)) (SSTORE 332 (ORIGIN)) (SSTORE 336 (CALLDATASIZE)) (SSTORE 338 (CODESIZE)) (SSTORE 340 (GASPRICE)) } # noqa: E501 - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) - + Op.SSTORE(key=0x4, value=Op.CALLER) - + Op.SSTORE(key=0x7, value=Op.CALLVALUE) - + Op.SSTORE(key=0x14A, value=Op.ADDRESS) - + Op.SSTORE(key=0x14C, value=Op.ORIGIN) - + Op.SSTORE(key=0x150, value=Op.CALLDATASIZE) - + Op.SSTORE(key=0x152, value=Op.CODESIZE) - + Op.SSTORE(key=0x154, value=Op.GASPRICE) - + Op.STOP, - nonce=0, - address=Address(0x7E63847AAD8CA50FB7C04777DCE6871A6BF8DE0C), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, @@ -139,12 +131,12 @@ def test_callcodecallcallcode_101( 1: 1, 2: 1, 3: 1, - 4: 0xD26E26D5A4796D450BFA296D70C05F02DBC1A4B9, - 5: 0xEBAF50DEBF10E08302FE4280C32DF010463CA297, - 6: 0xD26E26D5A4796D450BFA296D70C05F02DBC1A4B9, + 4: target, + 5: sender, + 6: target, 7: 1, - 330: 0xD26E26D5A4796D450BFA296D70C05F02DBC1A4B9, - 332: 0xEBAF50DEBF10E08302FE4280C32DF010463CA297, + 330: target, + 332: sender, 336: 64, 338: 39, 340: 10, diff --git a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcallcode_101_ooge.py b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcallcode_101_ooge.py index 31d66ba2680..5ef5accb284 100644 --- a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcallcode_101_ooge.py +++ b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcallcode_101_ooge.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcodecallcallcode_101_ooge( ) -> None: """DELEGATE -> CALLCODE -> CALLCODE -> CODE OOG.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,23 +46,30 @@ def test_callcodecallcallcode_101_ooge( ) # Source: lll - # { [[ 0 ]] (DELEGATECALL 800000 0 64 0 64 ) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 + # { (SSTORE 3 1) (KECCAK256 0x00 0x2fffff) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + + Op.SHA3(offset=0x0, size=0x2FFFFF) + + Op.STOP, + nonce=0, + ) + # Source: lll + # { [[ 2 ]] (DELEGATECALL 400000 0 64 0 64 ) [[11]] 1 } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x0, + key=0x2, value=Op.DELEGATECALL( - gas=0xC3500, - address=0x913CF7A18F61BAB7BCCF5607DFA9B730C5976000, + gas=0x61A80, + address=addr_3, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, ), ) + + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x0E7163A4A90126C4A13E52F48E84C74600E844DA), # noqa: E501 ) # Source: lll # { [[ 1 ]] (CALLCODE 600000 0 0 64 0 64 ) } # noqa: E501 @@ -74,7 +78,7 @@ def test_callcodecallcallcode_101_ooge( key=0x1, value=Op.CALLCODE( gas=0x927C0, - address=0xFCF790146E167FB47D128896C5BA30B0265B1780, + address=addr_2, value=0x0, args_offset=0x0, args_size=0x40, @@ -84,37 +88,25 @@ def test_callcodecallcallcode_101_ooge( ) + Op.STOP, nonce=0, - address=Address(0x913CF7A18F61BAB7BCCF5607DFA9B730C5976000), # noqa: E501 ) # Source: lll - # { [[ 2 ]] (DELEGATECALL 400000 0 64 0 64 ) [[11]] 1 } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 + # { [[ 0 ]] (DELEGATECALL 800000 0 64 0 64 ) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x2, + key=0x0, value=Op.DELEGATECALL( - gas=0x61A80, - address=0x1DD747F92062BB53BB8E867EC2902792435F1748, + gas=0xC3500, + address=addr, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, ), ) - + Op.SSTORE(key=0xB, value=0x1) - + Op.STOP, - nonce=0, - address=Address(0xFCF790146E167FB47D128896C5BA30B0265B1780), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) (KECCAK256 0x00 0x2fffff) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) - + Op.SHA3(offset=0x0, size=0x2FFFFF) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x1DD747F92062BB53BB8E867EC2902792435F1748), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcallcode_101_oogm_after.py b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcallcode_101_oogm_after.py index 00c31515253..6dd1d8b9f58 100644 --- a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcallcode_101_oogm_after.py +++ b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcallcode_101_oogm_after.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcodecallcallcode_101_oogm_after( ) -> None: """DELEGATE -> (CALLCODE -> DELEGATE -> CODE) OOG.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,24 +46,27 @@ def test_callcodecallcallcode_101_oogm_after( ) # Source: lll - # { [[ 0 ]] (DELEGATECALL 800000 0 64 0 64 ) [[11]] 1} # noqa: E501 - target = pre.deploy_contract( # noqa: F841 + # { (SSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + nonce=0, + ) + # Source: lll + # { [[ 2 ]] (DELEGATECALL 400000 0 64 0 64 ) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x0, + key=0x2, value=Op.DELEGATECALL( - gas=0xC3500, - address=0x37E72DD6FF3C2AC8C1DDAB092A26164A2AD5988C, + gas=0x61A80, + address=addr_3, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, ), ) - + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x5AFCCF55D80F6C4C95515CFFD8E7D51D2C4C9F4A), # noqa: E501 ) # Source: lll # { [[ 1 ]] (CALLCODE 600000 0 0 64 0 64 ) (KECCAK256 0x00 0x2fffff) } # noqa: E501 @@ -75,7 +75,7 @@ def test_callcodecallcallcode_101_oogm_after( key=0x1, value=Op.CALLCODE( gas=0x927C0, - address=0xDA11FDF0CE02240C6B4711F56AFCD9763B44D3DC, + address=addr_2, value=0x0, args_offset=0x0, args_size=0x40, @@ -86,34 +86,26 @@ def test_callcodecallcallcode_101_oogm_after( + Op.SHA3(offset=0x0, size=0x2FFFFF) + Op.STOP, nonce=0, - address=Address(0x37E72DD6FF3C2AC8C1DDAB092A26164A2AD5988C), # noqa: E501 ) # Source: lll - # { [[ 2 ]] (DELEGATECALL 400000 0 64 0 64 ) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 + # { [[ 0 ]] (DELEGATECALL 800000 0 64 0 64 ) [[11]] 1} # noqa: E501 + target = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x2, + key=0x0, value=Op.DELEGATECALL( - gas=0x61A80, - address=0xB126C622075B1189FB6C45E851641CFADDF65B36, + gas=0xC3500, + address=addr, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, ), ) + + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xDA11FDF0CE02240C6B4711F56AFCD9763B44D3DC), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, - nonce=0, - address=Address(0xB126C622075B1189FB6C45E851641CFADDF65B36), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcallcode_101_oogm_before.py b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcallcode_101_oogm_before.py index 1977bfc9684..dcf7c6314dd 100644 --- a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcallcode_101_oogm_before.py +++ b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcallcode_101_oogm_before.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcodecallcallcode_101_oogm_before( ) -> None: """DELEGATE -> CALLCODE -> OOG DELEGATE -> CODE.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,13 +46,20 @@ def test_callcodecallcallcode_101_oogm_before( ) # Source: lll - # { [[ 0 ]] (DELEGATECALL 800000 0 64 0 64 ) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, + # { (SSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + nonce=0, + ) + # Source: lll + # { (KECCAK256 0x00 0x2fffff) [[ 2 ]] (DELEGATECALL 400000 0 64 0 64 ) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.POP(Op.SHA3(offset=0x0, size=0x2FFFFF)) + + Op.SSTORE( + key=0x2, value=Op.DELEGATECALL( - gas=0xC3500, - address=0x8E6E134402F2EECA8E910E8EC62B45B36EE31F30, + gas=0x61A80, + address=addr_3, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -63,9 +67,7 @@ def test_callcodecallcallcode_101_oogm_before( ), ) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x0E7163A4A90126C4A13E52F48E84C74600E844DA), # noqa: E501 ) # Source: lll # { [[ 1 ]] (CALLCODE 600000 0 0 64 0 64 ) [[11]] 1 } # noqa: E501 @@ -74,7 +76,7 @@ def test_callcodecallcallcode_101_oogm_before( key=0x1, value=Op.CALLCODE( gas=0x927C0, - address=0x71E7E95D2DFE9F65B4522F2D3AA71FB33F49920C, + address=addr_2, value=0x0, args_offset=0x0, args_size=0x40, @@ -85,17 +87,15 @@ def test_callcodecallcallcode_101_oogm_before( + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, nonce=0, - address=Address(0x8E6E134402F2EECA8E910E8EC62B45B36EE31F30), # noqa: E501 ) # Source: lll - # { (KECCAK256 0x00 0x2fffff) [[ 2 ]] (DELEGATECALL 400000 0 64 0 64 ) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.POP(Op.SHA3(offset=0x0, size=0x2FFFFF)) - + Op.SSTORE( - key=0x2, + # { [[ 0 ]] (DELEGATECALL 800000 0 64 0 64 ) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, value=Op.DELEGATECALL( - gas=0x61A80, - address=0xB126C622075B1189FB6C45E851641CFADDF65B36, + gas=0xC3500, + address=addr, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -103,17 +103,9 @@ def test_callcodecallcallcode_101_oogm_before( ), ) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x71E7E95D2DFE9F65B4522F2D3AA71FB33F49920C), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, - nonce=0, - address=Address(0xB126C622075B1189FB6C45E851641CFADDF65B36), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcallcode_101_suicide_end.py b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcallcode_101_suicide_end.py index abacbbe93f7..c83fec414f8 100644 --- a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcallcode_101_suicide_end.py +++ b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcallcode_101_suicide_end.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcodecallcallcode_101_suicide_end( ) -> None: """Test_callcodecallcallcode_101_suicide_end.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -48,6 +45,14 @@ def test_callcodecallcallcode_101_suicide_end( gas_limit=30000000, ) + # Source: lll + # { (SSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + balance=0x2540BE400, + nonce=0, + address=Address(0x73B954EBC05BB0FF4A0F6A13A054D50AD1584099), # noqa: E501 + ) # Source: lll # { [[ 0 ]] (DELEGATECALL 150000 0 64 0 64 ) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -107,15 +112,6 @@ def test_callcodecallcallcode_101_suicide_end( nonce=0, address=Address(0xAC521409E2FA9526BFE6B827805783D2E307C4CE), # noqa: E501 ) - # Source: lll - # { (SSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, - balance=0x2540BE400, - nonce=0, - address=Address(0x73B954EBC05BB0FF4A0F6A13A054D50AD1584099), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcallcode_101_suicide_middle.py b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcallcode_101_suicide_middle.py index ae12911a59f..631811f181d 100644 --- a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcallcode_101_suicide_middle.py +++ b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcallcode_101_suicide_middle.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -39,9 +38,7 @@ def test_callcodecallcallcode_101_suicide_middle( contract_1 = Address(0x1000000000000000000000000000000000000001) contract_2 = Address(0x1000000000000000000000000000000000000002) contract_3 = Address(0x1000000000000000000000000000000000000003) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -52,6 +49,14 @@ def test_callcodecallcallcode_101_suicide_middle( gas_limit=30000000, ) + # Source: lll + # { (SSTORE 3 1) } + contract_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + balance=0x2540BE400, + nonce=0, + address=Address(0x1000000000000000000000000000000000000003), # noqa: E501 + ) # Source: lll # { [[ 0 ]] (DELEGATECALL 150000 0x1000000000000000000000000000000000000001 0 64 0 64 ) } # noqa: E501 contract_0 = pre.deploy_contract( # noqa: F841 @@ -113,15 +118,6 @@ def test_callcodecallcallcode_101_suicide_middle( nonce=0, address=Address(0x1000000000000000000000000000000000000002), # noqa: E501 ) - # Source: lll - # { (SSTORE 3 1) } - contract_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, - balance=0x2540BE400, - nonce=0, - address=Address(0x1000000000000000000000000000000000000003), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcode_11.py b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcode_11.py index 6d4c0175869..b9187af14a7 100644 --- a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcode_11.py +++ b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcode_11.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcodecallcode_11( ) -> None: """Test_callcodecallcode_11.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,23 +46,18 @@ def test_callcodecallcode_11( ) # Source: lll - # { [[ 0 ]] (DELEGATECALL 350000 0 64 0 64 ) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.DELEGATECALL( - gas=0x55730, - address=0x2B0691CD58A1CF4628D642E9ACA9AB04946E3EC9, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ), - ) + # { (SSTORE 2 1) (SSTORE 4 (CALLER)) (SSTORE 5 (CALLVALUE)) (SSTORE 230 (ADDRESS)) (SSTORE 232 (ORIGIN)) (SSTORE 236 (CALLDATASIZE)) (SSTORE 238 (CODESIZE)) (SSTORE 240 (GASPRICE)) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x2, value=0x1) + + Op.SSTORE(key=0x4, value=Op.CALLER) + + Op.SSTORE(key=0x5, value=Op.CALLVALUE) + + Op.SSTORE(key=0xE6, value=Op.ADDRESS) + + Op.SSTORE(key=0xE8, value=Op.ORIGIN) + + Op.SSTORE(key=0xEC, value=Op.CALLDATASIZE) + + Op.SSTORE(key=0xEE, value=Op.CODESIZE) + + Op.SSTORE(key=0xF0, value=Op.GASPRICE) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xD26E26D5A4796D450BFA296D70C05F02DBC1A4B9), # noqa: E501 ) # Source: lll # { [[ 1 ]] (DELEGATECALL 250000 0 64 0 64 ) } # noqa: E501 @@ -74,7 +66,7 @@ def test_callcodecallcode_11( key=0x1, value=Op.DELEGATECALL( gas=0x3D090, - address=0xD42CD48F1D9A88F4B75BFB5E46E754C1128BD7FB, + address=addr_2, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -83,24 +75,25 @@ def test_callcodecallcode_11( ) + Op.STOP, nonce=0, - address=Address(0x2B0691CD58A1CF4628D642E9ACA9AB04946E3EC9), # noqa: E501 ) # Source: lll - # { (SSTORE 2 1) (SSTORE 4 (CALLER)) (SSTORE 5 (CALLVALUE)) (SSTORE 230 (ADDRESS)) (SSTORE 232 (ORIGIN)) (SSTORE 236 (CALLDATASIZE)) (SSTORE 238 (CODESIZE)) (SSTORE 240 (GASPRICE)) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x2, value=0x1) - + Op.SSTORE(key=0x4, value=Op.CALLER) - + Op.SSTORE(key=0x5, value=Op.CALLVALUE) - + Op.SSTORE(key=0xE6, value=Op.ADDRESS) - + Op.SSTORE(key=0xE8, value=Op.ORIGIN) - + Op.SSTORE(key=0xEC, value=Op.CALLDATASIZE) - + Op.SSTORE(key=0xEE, value=Op.CODESIZE) - + Op.SSTORE(key=0xF0, value=Op.GASPRICE) + # { [[ 0 ]] (DELEGATECALL 350000 0 64 0 64 ) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.DELEGATECALL( + gas=0x55730, + address=addr, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ), + ) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xD42CD48F1D9A88F4B75BFB5E46E754C1128BD7FB), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, @@ -115,9 +108,9 @@ def test_callcodecallcode_11( 0: 1, 1: 1, 2: 1, - 4: 0xEBAF50DEBF10E08302FE4280C32DF010463CA297, - 230: 0xD26E26D5A4796D450BFA296D70C05F02DBC1A4B9, - 232: 0xEBAF50DEBF10E08302FE4280C32DF010463CA297, + 4: sender, + 230: target, + 232: sender, 236: 64, 238: 34, 240: 10, diff --git a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcode_11_ooge.py b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcode_11_ooge.py index 368a7961641..61e6338b5b9 100644 --- a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcode_11_ooge.py +++ b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcode_11_ooge.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcodecallcode_11_ooge( ) -> None: """DELEGATE -> DELEGATE -> CODE OOG.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,23 +46,12 @@ def test_callcodecallcode_11_ooge( ) # Source: lll - # { [[ 0 ]] (DELEGATECALL 800000 0 64 0 64 ) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.DELEGATECALL( - gas=0xC3500, - address=0xECB18A704984B0E051E46358D64EF7811F2945BA, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ), - ) + # { (SSTORE 2 1) (KECCAK256 0x00 0x2fffff) } + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x2, value=0x1) + + Op.SHA3(offset=0x0, size=0x2FFFFF) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x0E7163A4A90126C4A13E52F48E84C74600E844DA), # noqa: E501 ) # Source: lll # { [[ 1 ]] (DELEGATECALL 600000 0 64 0 64 ) [[11]] 1} # noqa: E501 @@ -74,7 +60,7 @@ def test_callcodecallcode_11_ooge( key=0x1, value=Op.DELEGATECALL( gas=0x927C0, - address=0x766B2CF0691F51029181FC511395B7AB71353A88, + address=addr_2, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -84,18 +70,25 @@ def test_callcodecallcode_11_ooge( + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, nonce=0, - address=Address(0xECB18A704984B0E051E46358D64EF7811F2945BA), # noqa: E501 ) # Source: lll - # { (SSTORE 2 1) (KECCAK256 0x00 0x2fffff) } - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x2, value=0x1) - + Op.SHA3(offset=0x0, size=0x2FFFFF) + # { [[ 0 ]] (DELEGATECALL 800000 0 64 0 64 ) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.DELEGATECALL( + gas=0xC3500, + address=addr, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ), + ) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x766B2CF0691F51029181FC511395B7AB71353A88), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcode_11_suicide_end.py b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcode_11_suicide_end.py index 24a34b71978..98290b68642 100644 --- a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcode_11_suicide_end.py +++ b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcode_11_suicide_end.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcodecallcode_11_suicide_end( ) -> None: """Test_callcodecallcode_11_suicide_end.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -48,6 +45,14 @@ def test_callcodecallcode_11_suicide_end( gas_limit=30000000, ) + # Source: lll + # { (SSTORE 2 1) } + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x2, value=0x1) + Op.STOP, + balance=0x2540BE400, + nonce=0, + address=Address(0x703B936FD4D674F0FF5D6957F61097152F8781B8), # noqa: E501 + ) # Source: lll # { [[ 0 ]] (DELEGATECALL 150000 0 64 0 64 ) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -87,15 +92,6 @@ def test_callcodecallcode_11_suicide_end( nonce=0, address=Address(0x1CCA6E93108EC94304AE5EB121D323E6C317FE7A), # noqa: E501 ) - # Source: lll - # { (SSTORE 2 1) } - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x2, value=0x1) + Op.STOP, - balance=0x2540BE400, - nonce=0, - address=Address(0x703B936FD4D674F0FF5D6957F61097152F8781B8), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcodecall_110.py b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcodecall_110.py index 4acb67de28a..7329364f7f2 100644 --- a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcodecall_110.py +++ b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcodecall_110.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcodecallcodecall_110( ) -> None: """Test_callcodecallcodecall_110.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,23 +46,38 @@ def test_callcodecallcodecall_110( ) # Source: lll - # { [[ 0 ]] (DELEGATECALL 350000 0 64 0 64 ) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 + # { (SSTORE 3 1) (SSTORE 4 (CALLER)) (SSTORE 7 (CALLVALUE)) (SSTORE 330 (ADDRESS)) (SSTORE 332 (ORIGIN)) (SSTORE 336 (CALLDATASIZE)) (SSTORE 338 (CODESIZE)) (SSTORE 340 (GASPRICE)) } # noqa: E501 + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + + Op.SSTORE(key=0x4, value=Op.CALLER) + + Op.SSTORE(key=0x7, value=Op.CALLVALUE) + + Op.SSTORE(key=0x14A, value=Op.ADDRESS) + + Op.SSTORE(key=0x14C, value=Op.ORIGIN) + + Op.SSTORE(key=0x150, value=Op.CALLDATASIZE) + + Op.SSTORE(key=0x152, value=Op.CODESIZE) + + Op.SSTORE(key=0x154, value=Op.GASPRICE) + + Op.STOP, + nonce=0, + ) + # Source: lll + # { [[ 2 ]] (CALLCODE 250000 1 0 64 0 64 ) (SSTORE 6 (CALLER))} # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x0, - value=Op.DELEGATECALL( - gas=0x55730, - address=0x669E33B1AA30351139B73C3942ACDE1B09E75BCD, + key=0x2, + value=Op.CALLCODE( + gas=0x3D090, + address=addr_3, + value=0x1, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, ), ) + + Op.SSTORE(key=0x6, value=Op.CALLER) + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xD26E26D5A4796D450BFA296D70C05F02DBC1A4B9), # noqa: E501 ) # Source: lll # { [[ 1 ]] (DELEGATECALL 300000 0 64 0 64 ) (SSTORE 5 (CALLER))} # noqa: E501 @@ -74,7 +86,7 @@ def test_callcodecallcodecall_110( key=0x1, value=Op.DELEGATECALL( gas=0x493E0, - address=0x2F1DBD8E6A5782A1A446D6CED65D3B316C857B55, + address=addr_2, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -85,45 +97,25 @@ def test_callcodecallcodecall_110( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x669E33B1AA30351139B73C3942ACDE1B09E75BCD), # noqa: E501 ) # Source: lll - # { [[ 2 ]] (CALLCODE 250000 1 0 64 0 64 ) (SSTORE 6 (CALLER))} # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 + # { [[ 0 ]] (DELEGATECALL 350000 0 64 0 64 ) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x2, - value=Op.CALLCODE( - gas=0x3D090, - address=0x7E63847AAD8CA50FB7C04777DCE6871A6BF8DE0C, - value=0x1, + key=0x0, + value=Op.DELEGATECALL( + gas=0x55730, + address=addr, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, ), ) - + Op.SSTORE(key=0x6, value=Op.CALLER) + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x2F1DBD8E6A5782A1A446D6CED65D3B316C857B55), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) (SSTORE 4 (CALLER)) (SSTORE 7 (CALLVALUE)) (SSTORE 330 (ADDRESS)) (SSTORE 332 (ORIGIN)) (SSTORE 336 (CALLDATASIZE)) (SSTORE 338 (CODESIZE)) (SSTORE 340 (GASPRICE)) } # noqa: E501 - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) - + Op.SSTORE(key=0x4, value=Op.CALLER) - + Op.SSTORE(key=0x7, value=Op.CALLVALUE) - + Op.SSTORE(key=0x14A, value=Op.ADDRESS) - + Op.SSTORE(key=0x14C, value=Op.ORIGIN) - + Op.SSTORE(key=0x150, value=Op.CALLDATASIZE) - + Op.SSTORE(key=0x152, value=Op.CODESIZE) - + Op.SSTORE(key=0x154, value=Op.GASPRICE) - + Op.STOP, - nonce=0, - address=Address(0x7E63847AAD8CA50FB7C04777DCE6871A6BF8DE0C), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, @@ -139,12 +131,12 @@ def test_callcodecallcodecall_110( 1: 1, 2: 1, 3: 1, - 4: 0xD26E26D5A4796D450BFA296D70C05F02DBC1A4B9, - 5: 0xEBAF50DEBF10E08302FE4280C32DF010463CA297, - 6: 0xEBAF50DEBF10E08302FE4280C32DF010463CA297, + 4: target, + 5: sender, + 6: sender, 7: 1, - 330: 0xD26E26D5A4796D450BFA296D70C05F02DBC1A4B9, - 332: 0xEBAF50DEBF10E08302FE4280C32DF010463CA297, + 330: target, + 332: sender, 336: 64, 338: 39, 340: 10, diff --git a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcodecall_110_ooge.py b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcodecall_110_ooge.py index 018fbdca539..e52fb64f847 100644 --- a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcodecall_110_ooge.py +++ b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcodecall_110_ooge.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcodecallcodecall_110_ooge( ) -> None: """DELEGATE -> DELEGATE -> CALLCODE -> CODE OOG.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,23 +46,31 @@ def test_callcodecallcodecall_110_ooge( ) # Source: lll - # { [[ 0 ]] (DELEGATECALL 800000 0 64 0 64 ) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 + # { (SSTORE 3 1) (KECCAK256 0x00 0x2fffff) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + + Op.SHA3(offset=0x0, size=0x2FFFFF) + + Op.STOP, + nonce=0, + ) + # Source: lll + # { [[ 2 ]] (CALLCODE 400000 0 0 64 0 64 ) [[11]] 1} # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x0, - value=Op.DELEGATECALL( - gas=0xC3500, - address=0x69A0017A51AD556682F48B32235D0B61ABDF4DA4, + key=0x2, + value=Op.CALLCODE( + gas=0x61A80, + address=addr_3, + value=0x0, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, ), ) + + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x0E7163A4A90126C4A13E52F48E84C74600E844DA), # noqa: E501 ) # Source: lll # { [[ 1 ]] (DELEGATECALL 600000 0 64 0 64 ) } # noqa: E501 @@ -74,7 +79,7 @@ def test_callcodecallcodecall_110_ooge( key=0x1, value=Op.DELEGATECALL( gas=0x927C0, - address=0x3568EC0DDA63B253E338FBC4990869FD168AB515, + address=addr_2, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -83,38 +88,25 @@ def test_callcodecallcodecall_110_ooge( ) + Op.STOP, nonce=0, - address=Address(0x69A0017A51AD556682F48B32235D0B61ABDF4DA4), # noqa: E501 ) # Source: lll - # { [[ 2 ]] (CALLCODE 400000 0 0 64 0 64 ) [[11]] 1} # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 + # { [[ 0 ]] (DELEGATECALL 800000 0 64 0 64 ) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x2, - value=Op.CALLCODE( - gas=0x61A80, - address=0x1DD747F92062BB53BB8E867EC2902792435F1748, - value=0x0, + key=0x0, + value=Op.DELEGATECALL( + gas=0xC3500, + address=addr, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, ), ) - + Op.SSTORE(key=0xB, value=0x1) - + Op.STOP, - nonce=0, - address=Address(0x3568EC0DDA63B253E338FBC4990869FD168AB515), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) (KECCAK256 0x00 0x2fffff) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) - + Op.SHA3(offset=0x0, size=0x2FFFFF) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x1DD747F92062BB53BB8E867EC2902792435F1748), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcodecall_110_oogm_after.py b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcodecall_110_oogm_after.py index d6ec6cd3204..19362172d87 100644 --- a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcodecall_110_oogm_after.py +++ b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcodecall_110_oogm_after.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcodecallcodecall_110_oogm_after( ) -> None: """DELEGATE -> (DELEGATE -> CALLCODE -> CODE) OOG.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,24 +46,28 @@ def test_callcodecallcodecall_110_oogm_after( ) # Source: lll - # { [[ 0 ]] (DELEGATECALL 800000 0 64 0 64 ) [[11]] 1 } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 + # { (SSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + nonce=0, + ) + # Source: lll + # { [[ 2 ]] (CALLCODE 400000 0 0 64 0 64 ) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x0, - value=Op.DELEGATECALL( - gas=0xC3500, - address=0x1ADAE71AD3AEEC97978E38BE04DA2A1773DFC506, + key=0x2, + value=Op.CALLCODE( + gas=0x61A80, + address=addr_3, + value=0x0, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, ), ) - + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x74ECD5F6537B2B48EBBFF8D66AEE8EB8F98430A3), # noqa: E501 ) # Source: lll # { [[ 1 ]] (DELEGATECALL 600000 0 64 0 64 ) (KECCAK256 0x00 0x2fffff) } # noqa: E501 @@ -75,7 +76,7 @@ def test_callcodecallcodecall_110_oogm_after( key=0x1, value=Op.DELEGATECALL( gas=0x927C0, - address=0xBE2D28F50CB59FFBD66D2EB6A3E8D34F3561D8B, + address=addr_2, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -85,35 +86,26 @@ def test_callcodecallcodecall_110_oogm_after( + Op.SHA3(offset=0x0, size=0x2FFFFF) + Op.STOP, nonce=0, - address=Address(0x1ADAE71AD3AEEC97978E38BE04DA2A1773DFC506), # noqa: E501 ) # Source: lll - # { [[ 2 ]] (CALLCODE 400000 0 0 64 0 64 ) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 + # { [[ 0 ]] (DELEGATECALL 800000 0 64 0 64 ) [[11]] 1 } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x2, - value=Op.CALLCODE( - gas=0x61A80, - address=0xB126C622075B1189FB6C45E851641CFADDF65B36, - value=0x0, + key=0x0, + value=Op.DELEGATECALL( + gas=0xC3500, + address=addr, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, ), ) + + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x0BE2D28F50CB59FFBD66D2EB6A3E8D34F3561D8B), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, - nonce=0, - address=Address(0xB126C622075B1189FB6C45E851641CFADDF65B36), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcodecall_110_oogm_before.py b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcodecall_110_oogm_before.py index ce98c5c7c69..490de6e49aa 100644 --- a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcodecall_110_oogm_before.py +++ b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcodecall_110_oogm_before.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcodecallcodecall_110_oogm_before( ) -> None: """DELEGATE -> DELEGATE -> OOG CALLCODE -> CODE.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,13 +46,21 @@ def test_callcodecallcodecall_110_oogm_before( ) # Source: lll - # { [[ 0 ]] (DELEGATECALL 800000 0 64 0 64 ) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.DELEGATECALL( - gas=0xC3500, - address=0x29F893B720E998CCD5971409FA9A8802822FDCBC, + # { (SSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + nonce=0, + ) + # Source: lll + # { (KECCAK256 0x00 0x2fffff) [[ 2 ]] (CALLCODE 400000 0 0 64 0 64 ) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.POP(Op.SHA3(offset=0x0, size=0x2FFFFF)) + + Op.SSTORE( + key=0x2, + value=Op.CALLCODE( + gas=0x61A80, + address=addr_3, + value=0x0, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -63,9 +68,7 @@ def test_callcodecallcodecall_110_oogm_before( ), ) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x0E7163A4A90126C4A13E52F48E84C74600E844DA), # noqa: E501 ) # Source: lll # { [[ 1 ]] (DELEGATECALL 600000 0 64 0 64 ) [[11]] 1 } # noqa: E501 @@ -74,7 +77,7 @@ def test_callcodecallcodecall_110_oogm_before( key=0x1, value=Op.DELEGATECALL( gas=0x927C0, - address=0xD33AB78AC3965E7D6F9548DFF5839138A9F69C5, + address=addr_2, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -84,18 +87,15 @@ def test_callcodecallcodecall_110_oogm_before( + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, nonce=0, - address=Address(0x29F893B720E998CCD5971409FA9A8802822FDCBC), # noqa: E501 ) # Source: lll - # { (KECCAK256 0x00 0x2fffff) [[ 2 ]] (CALLCODE 400000 0 0 64 0 64 ) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.POP(Op.SHA3(offset=0x0, size=0x2FFFFF)) - + Op.SSTORE( - key=0x2, - value=Op.CALLCODE( - gas=0x61A80, - address=0xB126C622075B1189FB6C45E851641CFADDF65B36, - value=0x0, + # { [[ 0 ]] (DELEGATECALL 800000 0 64 0 64 ) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.DELEGATECALL( + gas=0xC3500, + address=addr, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -103,17 +103,9 @@ def test_callcodecallcodecall_110_oogm_before( ), ) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x0D33AB78AC3965E7D6F9548DFF5839138A9F69C5), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, - nonce=0, - address=Address(0xB126C622075B1189FB6C45E851641CFADDF65B36), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcodecall_110_suicide_end.py b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcodecall_110_suicide_end.py index cce14db4d56..39e4bd7fee8 100644 --- a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcodecall_110_suicide_end.py +++ b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcodecall_110_suicide_end.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcodecallcodecall_110_suicide_end( ) -> None: """Test_callcodecallcodecall_110_suicide_end.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -48,6 +45,14 @@ def test_callcodecallcodecall_110_suicide_end( gas_limit=30000000, ) + # Source: lll + # { (SSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + balance=0x2540BE400, + nonce=0, + address=Address(0x73B954EBC05BB0FF4A0F6A13A054D50AD1584099), # noqa: E501 + ) # Source: lll # { [[ 0 ]] (DELEGATECALL 150000 0 64 0 64 ) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -107,15 +112,6 @@ def test_callcodecallcodecall_110_suicide_end( nonce=0, address=Address(0x94C8F980AEECBB6575B12AE614A249FC3E836F21), # noqa: E501 ) - # Source: lll - # { (SSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, - balance=0x2540BE400, - nonce=0, - address=Address(0x73B954EBC05BB0FF4A0F6A13A054D50AD1584099), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcodecall_110_suicide_middle.py b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcodecall_110_suicide_middle.py index 3828c237c68..7a5f1346336 100644 --- a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcodecall_110_suicide_middle.py +++ b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcodecall_110_suicide_middle.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcodecallcodecall_110_suicide_middle( ) -> None: """Test_callcodecallcodecall_110_suicide_middle.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -48,6 +45,14 @@ def test_callcodecallcodecall_110_suicide_middle( gas_limit=30000000, ) + # Source: lll + # { (SSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + balance=0x2540BE400, + nonce=0, + address=Address(0x73B954EBC05BB0FF4A0F6A13A054D50AD1584099), # noqa: E501 + ) # Source: lll # { [[ 0 ]] (DELEGATECALL 150000 0 64 0 64 ) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -109,15 +114,6 @@ def test_callcodecallcodecall_110_suicide_middle( nonce=0, address=Address(0x23A077E1E6B0740D6BFBC41DE582F2930ABD1762), # noqa: E501 ) - # Source: lll - # { (SSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, - balance=0x2540BE400, - nonce=0, - address=Address(0x73B954EBC05BB0FF4A0F6A13A054D50AD1584099), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcodecallcode_111.py b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcodecallcode_111.py index 2d25cef8fd2..4c12782ba77 100644 --- a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcodecallcode_111.py +++ b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcodecallcode_111.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcodecallcodecallcode_111( ) -> None: """Test_callcodecallcodecallcode_111.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,13 +46,27 @@ def test_callcodecallcodecallcode_111( ) # Source: lll - # { [[ 0 ]] (DELEGATECALL 350000 0 64 0 64 ) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 + # { (SSTORE 3 1) (SSTORE 4 (CALLER)) (SSTORE 7 (CALLVALUE)) (SSTORE 330 (ADDRESS)) (SSTORE 332 (ORIGIN)) (SSTORE 336 (CALLDATASIZE)) (SSTORE 338 (CODESIZE)) (SSTORE 340 (GASPRICE)) } # noqa: E501 + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + + Op.SSTORE(key=0x4, value=Op.CALLER) + + Op.SSTORE(key=0x7, value=Op.CALLVALUE) + + Op.SSTORE(key=0x14A, value=Op.ADDRESS) + + Op.SSTORE(key=0x14C, value=Op.ORIGIN) + + Op.SSTORE(key=0x150, value=Op.CALLDATASIZE) + + Op.SSTORE(key=0x152, value=Op.CODESIZE) + + Op.SSTORE(key=0x154, value=Op.GASPRICE) + + Op.STOP, + nonce=0, + ) + # Source: lll + # { [[ 2 ]] (DELEGATECALL 250000 0 64 0 64 ) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x0, + key=0x2, value=Op.DELEGATECALL( - gas=0x55730, - address=0x66F7A765DC70598F71B119F636A53AAA43C4CCA1, + gas=0x3D090, + address=addr_3, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -63,9 +74,7 @@ def test_callcodecallcodecallcode_111( ), ) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xD26E26D5A4796D450BFA296D70C05F02DBC1A4B9), # noqa: E501 ) # Source: lll # { [[ 1 ]] (DELEGATECALL 300000 0 64 0 64 ) } # noqa: E501 @@ -74,7 +83,7 @@ def test_callcodecallcodecallcode_111( key=0x1, value=Op.DELEGATECALL( gas=0x493E0, - address=0x12BDAB5AF7FD144E2841E58CB6CF90D467054643, + address=addr_2, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -83,16 +92,15 @@ def test_callcodecallcodecallcode_111( ) + Op.STOP, nonce=0, - address=Address(0x66F7A765DC70598F71B119F636A53AAA43C4CCA1), # noqa: E501 ) # Source: lll - # { [[ 2 ]] (DELEGATECALL 250000 0 64 0 64 ) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 + # { [[ 0 ]] (DELEGATECALL 350000 0 64 0 64 ) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x2, + key=0x0, value=Op.DELEGATECALL( - gas=0x3D090, - address=0x7E63847AAD8CA50FB7C04777DCE6871A6BF8DE0C, + gas=0x55730, + address=addr, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -100,25 +108,9 @@ def test_callcodecallcodecallcode_111( ), ) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x12BDAB5AF7FD144E2841E58CB6CF90D467054643), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) (SSTORE 4 (CALLER)) (SSTORE 7 (CALLVALUE)) (SSTORE 330 (ADDRESS)) (SSTORE 332 (ORIGIN)) (SSTORE 336 (CALLDATASIZE)) (SSTORE 338 (CODESIZE)) (SSTORE 340 (GASPRICE)) } # noqa: E501 - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) - + Op.SSTORE(key=0x4, value=Op.CALLER) - + Op.SSTORE(key=0x7, value=Op.CALLVALUE) - + Op.SSTORE(key=0x14A, value=Op.ADDRESS) - + Op.SSTORE(key=0x14C, value=Op.ORIGIN) - + Op.SSTORE(key=0x150, value=Op.CALLDATASIZE) - + Op.SSTORE(key=0x152, value=Op.CODESIZE) - + Op.SSTORE(key=0x154, value=Op.GASPRICE) - + Op.STOP, - nonce=0, - address=Address(0x7E63847AAD8CA50FB7C04777DCE6871A6BF8DE0C), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, @@ -134,9 +126,9 @@ def test_callcodecallcodecallcode_111( 1: 1, 2: 1, 3: 1, - 4: 0xEBAF50DEBF10E08302FE4280C32DF010463CA297, - 330: 0xD26E26D5A4796D450BFA296D70C05F02DBC1A4B9, - 332: 0xEBAF50DEBF10E08302FE4280C32DF010463CA297, + 4: sender, + 330: target, + 332: sender, 336: 64, 338: 39, 340: 10, diff --git a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcodecallcode_111_ooge.py b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcodecallcode_111_ooge.py index 3918ea8ec11..bf14e1278f1 100644 --- a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcodecallcode_111_ooge.py +++ b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcodecallcode_111_ooge.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcodecallcodecallcode_111_ooge( ) -> None: """DELEGATE -> DELEGATE -> OOG DELEGATE -> CODE OOG.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,23 +46,30 @@ def test_callcodecallcodecallcode_111_ooge( ) # Source: lll - # { [[ 0 ]] (DELEGATECALL 800000 0 64 0 64 ) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 + # { (SSTORE 3 1) (KECCAK256 0x00 0x2fffff) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + + Op.SHA3(offset=0x0, size=0x2FFFFF) + + Op.STOP, + nonce=0, + ) + # Source: lll + # { [[ 2 ]] (DELEGATECALL 400000 0 64 0 64 ) [[11]] 1 } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x0, + key=0x2, value=Op.DELEGATECALL( - gas=0xC3500, - address=0x69A0017A51AD556682F48B32235D0B61ABDF4DA4, + gas=0x61A80, + address=addr_3, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, ), ) + + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x0E7163A4A90126C4A13E52F48E84C74600E844DA), # noqa: E501 ) # Source: lll # { [[ 1 ]] (DELEGATECALL 600000 0 64 0 64 ) } # noqa: E501 @@ -74,7 +78,7 @@ def test_callcodecallcodecallcode_111_ooge( key=0x1, value=Op.DELEGATECALL( gas=0x927C0, - address=0x3E423A7B1FBA04D0C3F9423A3AE2A180D2878D5B, + address=addr_2, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -83,37 +87,25 @@ def test_callcodecallcodecallcode_111_ooge( ) + Op.STOP, nonce=0, - address=Address(0x69A0017A51AD556682F48B32235D0B61ABDF4DA4), # noqa: E501 ) # Source: lll - # { [[ 2 ]] (DELEGATECALL 400000 0 64 0 64 ) [[11]] 1 } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 + # { [[ 0 ]] (DELEGATECALL 800000 0 64 0 64 ) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x2, + key=0x0, value=Op.DELEGATECALL( - gas=0x61A80, - address=0x1DD747F92062BB53BB8E867EC2902792435F1748, + gas=0xC3500, + address=addr, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, ), ) - + Op.SSTORE(key=0xB, value=0x1) - + Op.STOP, - nonce=0, - address=Address(0x3E423A7B1FBA04D0C3F9423A3AE2A180D2878D5B), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) (KECCAK256 0x00 0x2fffff) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) - + Op.SHA3(offset=0x0, size=0x2FFFFF) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x1DD747F92062BB53BB8E867EC2902792435F1748), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcodecallcode_111_oogm_after.py b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcodecallcode_111_oogm_after.py index ebc6c1b78bc..4d17a391930 100644 --- a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcodecallcode_111_oogm_after.py +++ b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcodecallcode_111_oogm_after.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcodecallcodecallcode_111_oogm_after( ) -> None: """DELEGATE -> (DELEGATE -> OOG DELEGATE -> CODE) OOG.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,24 +46,27 @@ def test_callcodecallcodecallcode_111_oogm_after( ) # Source: lll - # { [[ 0 ]] (DELEGATECALL 800000 0 64 0 64 ) [[11]] 1 } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 + # { (SSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + nonce=0, + ) + # Source: lll + # { [[ 2 ]] (DELEGATECALL 400000 0 64 0 64 ) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x0, + key=0x2, value=Op.DELEGATECALL( - gas=0xC3500, - address=0x1ADAE71AD3AEEC97978E38BE04DA2A1773DFC506, + gas=0x61A80, + address=addr_3, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, ), ) - + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x74ECD5F6537B2B48EBBFF8D66AEE8EB8F98430A3), # noqa: E501 ) # Source: lll # { [[ 1 ]] (DELEGATECALL 600000 0 64 0 64 ) (KECCAK256 0x00 0x2fffff) } # noqa: E501 @@ -75,7 +75,7 @@ def test_callcodecallcodecallcode_111_oogm_after( key=0x1, value=Op.DELEGATECALL( gas=0x927C0, - address=0xDA11FDF0CE02240C6B4711F56AFCD9763B44D3DC, + address=addr_2, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -85,34 +85,26 @@ def test_callcodecallcodecallcode_111_oogm_after( + Op.SHA3(offset=0x0, size=0x2FFFFF) + Op.STOP, nonce=0, - address=Address(0x1ADAE71AD3AEEC97978E38BE04DA2A1773DFC506), # noqa: E501 ) # Source: lll - # { [[ 2 ]] (DELEGATECALL 400000 0 64 0 64 ) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 + # { [[ 0 ]] (DELEGATECALL 800000 0 64 0 64 ) [[11]] 1 } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x2, + key=0x0, value=Op.DELEGATECALL( - gas=0x61A80, - address=0xB126C622075B1189FB6C45E851641CFADDF65B36, + gas=0xC3500, + address=addr, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, ), ) + + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xDA11FDF0CE02240C6B4711F56AFCD9763B44D3DC), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, - nonce=0, - address=Address(0xB126C622075B1189FB6C45E851641CFADDF65B36), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcodecallcode_111_oogm_before.py b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcodecallcode_111_oogm_before.py index 0af1ded1f67..cee5b30363f 100644 --- a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcodecallcode_111_oogm_before.py +++ b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcodecallcode_111_oogm_before.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcodecallcodecallcode_111_oogm_before( ) -> None: """DELEGATE -> DELEGATE -> OOG DELEGATE -> CODE.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,13 +46,20 @@ def test_callcodecallcodecallcode_111_oogm_before( ) # Source: lll - # { [[ 0 ]] (DELEGATECALL 800000 0 64 0 64 ) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, + # { (SSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + nonce=0, + ) + # Source: lll + # { (KECCAK256 0x00 0x2fffff) [[ 2 ]] (DELEGATECALL 400000 0 64 0 64 ) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.POP(Op.SHA3(offset=0x0, size=0x2FFFFF)) + + Op.SSTORE( + key=0x2, value=Op.DELEGATECALL( - gas=0xC3500, - address=0x29F893B720E998CCD5971409FA9A8802822FDCBC, + gas=0x61A80, + address=addr_3, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -63,9 +67,7 @@ def test_callcodecallcodecallcode_111_oogm_before( ), ) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x0E7163A4A90126C4A13E52F48E84C74600E844DA), # noqa: E501 ) # Source: lll # { [[ 1 ]] (DELEGATECALL 600000 0 64 0 64 ) [[11]] 1 } # noqa: E501 @@ -74,7 +76,7 @@ def test_callcodecallcodecallcode_111_oogm_before( key=0x1, value=Op.DELEGATECALL( gas=0x927C0, - address=0x71E7E95D2DFE9F65B4522F2D3AA71FB33F49920C, + address=addr_2, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -84,17 +86,15 @@ def test_callcodecallcodecallcode_111_oogm_before( + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, nonce=0, - address=Address(0x29F893B720E998CCD5971409FA9A8802822FDCBC), # noqa: E501 ) # Source: lll - # { (KECCAK256 0x00 0x2fffff) [[ 2 ]] (DELEGATECALL 400000 0 64 0 64 ) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.POP(Op.SHA3(offset=0x0, size=0x2FFFFF)) - + Op.SSTORE( - key=0x2, + # { [[ 0 ]] (DELEGATECALL 800000 0 64 0 64 ) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, value=Op.DELEGATECALL( - gas=0x61A80, - address=0xB126C622075B1189FB6C45E851641CFADDF65B36, + gas=0xC3500, + address=addr, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -102,17 +102,9 @@ def test_callcodecallcodecallcode_111_oogm_before( ), ) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x71E7E95D2DFE9F65B4522F2D3AA71FB33F49920C), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, - nonce=0, - address=Address(0xB126C622075B1189FB6C45E851641CFADDF65B36), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcodecallcode_111_suicide_end.py b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcodecallcode_111_suicide_end.py index 48d8fa626cd..de51b0fb329 100644 --- a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcodecallcode_111_suicide_end.py +++ b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcodecallcode_111_suicide_end.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcodecallcodecallcode_111_suicide_end( ) -> None: """Test_callcodecallcodecallcode_111_suicide_end.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -48,6 +45,14 @@ def test_callcodecallcodecallcode_111_suicide_end( gas_limit=30000000, ) + # Source: lll + # { (SSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + balance=0x2540BE400, + nonce=0, + address=Address(0x73B954EBC05BB0FF4A0F6A13A054D50AD1584099), # noqa: E501 + ) # Source: lll # { [[ 0 ]] (DELEGATECALL 150000 0 64 0 64 ) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -108,15 +113,6 @@ def test_callcodecallcodecallcode_111_suicide_end( nonce=0, address=Address(0xB207980945728D64A3C9F905932314C8F130EE38), # noqa: E501 ) - # Source: lll - # { (SSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, - balance=0x2540BE400, - nonce=0, - address=Address(0x73B954EBC05BB0FF4A0F6A13A054D50AD1584099), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcodecallcode_111_suicide_middle.py b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcodecallcode_111_suicide_middle.py index 95dfb7b9826..5bfe55fa878 100644 --- a/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcodecallcode_111_suicide_middle.py +++ b/tests/ported_static/stCallDelegateCodesCallCodeHomestead/test_callcodecallcodecallcode_111_suicide_middle.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcodecallcodecallcode_111_suicide_middle( ) -> None: """Test_callcodecallcodecallcode_111_suicide_middle.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -48,6 +45,14 @@ def test_callcodecallcodecallcode_111_suicide_middle( gas_limit=30000000, ) + # Source: lll + # { (SSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + balance=0x2540BE400, + nonce=0, + address=Address(0x73B954EBC05BB0FF4A0F6A13A054D50AD1584099), # noqa: E501 + ) # Source: lll # { [[ 0 ]] (DELEGATECALL 150000 0 64 0 64 ) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -108,15 +113,6 @@ def test_callcodecallcodecallcode_111_suicide_middle( nonce=0, address=Address(0x124B38FA011C9D36B7FE193DC636813A2F8BDAA7), # noqa: E501 ) - # Source: lll - # { (SSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, - balance=0x2540BE400, - nonce=0, - address=Address(0x73B954EBC05BB0FF4A0F6A13A054D50AD1584099), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallDelegateCodesHomestead/test_callcallcallcode_001.py b/tests/ported_static/stCallDelegateCodesHomestead/test_callcallcallcode_001.py index 99e15bedad6..521fce6999d 100644 --- a/tests/ported_static/stCallDelegateCodesHomestead/test_callcallcallcode_001.py +++ b/tests/ported_static/stCallDelegateCodesHomestead/test_callcallcallcode_001.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcallcallcode_001( ) -> None: """Test_callcallcallcode_001.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,14 +46,27 @@ def test_callcallcallcode_001( ) # Source: lll - # { [[ 0 ]] (CALL 350000 1 0 64 0 64 ) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 + # { (SSTORE 3 1) (SSTORE 4 (CALLER)) (SSTORE 7 (CALLVALUE)) (SSTORE 330 (ADDRESS)) (SSTORE 332 (ORIGIN)) (SSTORE 336 (CALLDATASIZE)) (SSTORE 338 (CODESIZE)) (SSTORE 340 (GASPRICE)) } # noqa: E501 + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + + Op.SSTORE(key=0x4, value=Op.CALLER) + + Op.SSTORE(key=0x7, value=Op.CALLVALUE) + + Op.SSTORE(key=0x14A, value=Op.ADDRESS) + + Op.SSTORE(key=0x14C, value=Op.ORIGIN) + + Op.SSTORE(key=0x150, value=Op.CALLDATASIZE) + + Op.SSTORE(key=0x152, value=Op.CODESIZE) + + Op.SSTORE(key=0x154, value=Op.GASPRICE) + + Op.STOP, + nonce=0, + ) + # Source: lll + # { [[ 2 ]] (DELEGATECALL 250000 0 64 0 64 ) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x0, - value=Op.CALL( - gas=0x55730, - address=0x9073671D2BFB351331716FD279282EACF50824AD, - value=0x1, + key=0x2, + value=Op.DELEGATECALL( + gas=0x3D090, + address=addr_3, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -66,7 +76,6 @@ def test_callcallcallcode_001( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xEB09FF15547417853F6F4B240B8804769C37B0F1), # noqa: E501 ) # Source: lll # { [[ 1 ]] (CALL 300000 2 0 64 0 64 ) } # noqa: E501 @@ -75,7 +84,7 @@ def test_callcallcallcode_001( key=0x1, value=Op.CALL( gas=0x493E0, - address=0x6F50426AA1BBB3CBD865847823F377D918757C07, + address=addr_2, value=0x2, args_offset=0x0, args_size=0x40, @@ -86,16 +95,16 @@ def test_callcallcallcode_001( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x9073671D2BFB351331716FD279282EACF50824AD), # noqa: E501 ) # Source: lll - # { [[ 2 ]] (DELEGATECALL 250000 0 64 0 64 ) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 + # { [[ 0 ]] (CALL 350000 1 0 64 0 64 ) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x2, - value=Op.DELEGATECALL( - gas=0x3D090, - address=0x7E63847AAD8CA50FB7C04777DCE6871A6BF8DE0C, + key=0x0, + value=Op.CALL( + gas=0x55730, + address=addr, + value=0x1, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -105,24 +114,7 @@ def test_callcallcallcode_001( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x6F50426AA1BBB3CBD865847823F377D918757C07), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) (SSTORE 4 (CALLER)) (SSTORE 7 (CALLVALUE)) (SSTORE 330 (ADDRESS)) (SSTORE 332 (ORIGIN)) (SSTORE 336 (CALLDATASIZE)) (SSTORE 338 (CODESIZE)) (SSTORE 340 (GASPRICE)) } # noqa: E501 - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) - + Op.SSTORE(key=0x4, value=Op.CALLER) - + Op.SSTORE(key=0x7, value=Op.CALLVALUE) - + Op.SSTORE(key=0x14A, value=Op.ADDRESS) - + Op.SSTORE(key=0x14C, value=Op.ORIGIN) - + Op.SSTORE(key=0x150, value=Op.CALLDATASIZE) - + Op.SSTORE(key=0x152, value=Op.CODESIZE) - + Op.SSTORE(key=0x154, value=Op.GASPRICE) - + Op.STOP, - nonce=0, - address=Address(0x7E63847AAD8CA50FB7C04777DCE6871A6BF8DE0C), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, @@ -138,10 +130,10 @@ def test_callcallcallcode_001( storage={ 2: 1, 3: 1, - 4: 0x9073671D2BFB351331716FD279282EACF50824AD, + 4: addr, 7: 2, - 330: 0x6F50426AA1BBB3CBD865847823F377D918757C07, - 332: 0xEBAF50DEBF10E08302FE4280C32DF010463CA297, + 330: addr_2, + 332: sender, 336: 64, 338: 39, 340: 10, diff --git a/tests/ported_static/stCallDelegateCodesHomestead/test_callcallcallcode_001_ooge.py b/tests/ported_static/stCallDelegateCodesHomestead/test_callcallcallcode_001_ooge.py index ff8b0b335e7..b138b7b3994 100644 --- a/tests/ported_static/stCallDelegateCodesHomestead/test_callcallcallcode_001_ooge.py +++ b/tests/ported_static/stCallDelegateCodesHomestead/test_callcallcallcode_001_ooge.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcallcallcode_001_ooge( ) -> None: """CALL -> CALL -> DELEGATE -> CODE OOG.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,24 +46,30 @@ def test_callcallcallcode_001_ooge( ) # Source: lll - # { [[ 0 ]] (CALL 800000 0 0 64 0 64 ) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 + # { (SSTORE 3 1) (KECCAK256 0x00 0x2fffff) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + + Op.SHA3(offset=0x0, size=0x2FFFFF) + + Op.STOP, + nonce=0, + ) + # Source: lll + # { [[ 2 ]] (DELEGATECALL 400000 0 64 0 64 ) [[11]] 1 } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x0, - value=Op.CALL( - gas=0xC3500, - address=0xBBDCE54B3C571B853032CB3A637E8F5B81DBAF0D, - value=0x0, + key=0x2, + value=Op.DELEGATECALL( + gas=0x61A80, + address=addr_3, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, ), ) + + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x335B558774699D81F685543CFBCDE5C4E5407686), # noqa: E501 ) # Source: lll # { [[ 1 ]] (CALL 600000 0 0 64 0 64 ) } # noqa: E501 @@ -75,7 +78,7 @@ def test_callcallcallcode_001_ooge( key=0x1, value=Op.CALL( gas=0x927C0, - address=0x3E423A7B1FBA04D0C3F9423A3AE2A180D2878D5B, + address=addr_2, value=0x0, args_offset=0x0, args_size=0x40, @@ -85,37 +88,26 @@ def test_callcallcallcode_001_ooge( ) + Op.STOP, nonce=0, - address=Address(0xBBDCE54B3C571B853032CB3A637E8F5B81DBAF0D), # noqa: E501 ) # Source: lll - # { [[ 2 ]] (DELEGATECALL 400000 0 64 0 64 ) [[11]] 1 } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 + # { [[ 0 ]] (CALL 800000 0 0 64 0 64 ) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x2, - value=Op.DELEGATECALL( - gas=0x61A80, - address=0x1DD747F92062BB53BB8E867EC2902792435F1748, + key=0x0, + value=Op.CALL( + gas=0xC3500, + address=addr, + value=0x0, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, ), ) - + Op.SSTORE(key=0xB, value=0x1) - + Op.STOP, - nonce=0, - address=Address(0x3E423A7B1FBA04D0C3F9423A3AE2A180D2878D5B), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) (KECCAK256 0x00 0x2fffff) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) - + Op.SHA3(offset=0x0, size=0x2FFFFF) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x1DD747F92062BB53BB8E867EC2902792435F1748), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallDelegateCodesHomestead/test_callcallcallcode_001_oogm_after.py b/tests/ported_static/stCallDelegateCodesHomestead/test_callcallcallcode_001_oogm_after.py index 599e3cee3b1..e969889555f 100644 --- a/tests/ported_static/stCallDelegateCodesHomestead/test_callcallcallcode_001_oogm_after.py +++ b/tests/ported_static/stCallDelegateCodesHomestead/test_callcallcallcode_001_oogm_after.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcallcallcode_001_oogm_after( ) -> None: """CALL -> (CALL -> DELEGATE -> CODE) OOG.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,25 +46,27 @@ def test_callcallcallcode_001_oogm_after( ) # Source: lll - # { [[ 0 ]] (CALL 800000 0 0 64 0 64 ) [[11]] 1 } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 + # { (SSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + nonce=0, + ) + # Source: lll + # { [[ 2 ]] (DELEGATECALL 400000 0 64 0 64 ) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x0, - value=Op.CALL( - gas=0xC3500, - address=0xB5D1A486869D27225126C47727513F57D329A01A, - value=0x0, + key=0x2, + value=Op.DELEGATECALL( + gas=0x61A80, + address=addr_3, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, ), ) - + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xB501C5662091E198627416E5579D42ACEE74DBFC), # noqa: E501 ) # Source: lll # { [[ 1 ]] (CALL 600000 0 0 64 0 64 ) (KECCAK256 0x00 0x2fffff) } # noqa: E501 @@ -76,7 +75,7 @@ def test_callcallcallcode_001_oogm_after( key=0x1, value=Op.CALL( gas=0x927C0, - address=0x7B1ED5FA290739659102E7C47B650EFD2EBA625B, + address=addr_2, value=0x0, args_offset=0x0, args_size=0x40, @@ -87,34 +86,27 @@ def test_callcallcallcode_001_oogm_after( + Op.SHA3(offset=0x0, size=0x2FFFFF) + Op.STOP, nonce=0, - address=Address(0xB5D1A486869D27225126C47727513F57D329A01A), # noqa: E501 ) # Source: lll - # { [[ 2 ]] (DELEGATECALL 400000 0 64 0 64 ) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 + # { [[ 0 ]] (CALL 800000 0 0 64 0 64 ) [[11]] 1 } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x2, - value=Op.DELEGATECALL( - gas=0x61A80, - address=0xB126C622075B1189FB6C45E851641CFADDF65B36, + key=0x0, + value=Op.CALL( + gas=0xC3500, + address=addr, + value=0x0, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, ), ) + + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x7B1ED5FA290739659102E7C47B650EFD2EBA625B), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, - nonce=0, - address=Address(0xB126C622075B1189FB6C45E851641CFADDF65B36), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallDelegateCodesHomestead/test_callcallcallcode_001_oogm_before.py b/tests/ported_static/stCallDelegateCodesHomestead/test_callcallcallcode_001_oogm_before.py index eba31f72e76..2f1530511a9 100644 --- a/tests/ported_static/stCallDelegateCodesHomestead/test_callcallcallcode_001_oogm_before.py +++ b/tests/ported_static/stCallDelegateCodesHomestead/test_callcallcallcode_001_oogm_before.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcallcallcode_001_oogm_before( ) -> None: """CALL -> CALL -> OOG DELEGATE -> CODE .""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,14 +46,20 @@ def test_callcallcallcode_001_oogm_before( ) # Source: lll - # { [[ 0 ]] (CALL 800000 0 0 64 0 64 ) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.CALL( - gas=0xC3500, - address=0x471072D55A5A95044C2326F0E94A6D8DF5B8089E, - value=0x0, + # { (SSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + nonce=0, + ) + # Source: lll + # { (KECCAK256 0x00 0x2fffff) [[ 2 ]] (DELEGATECALL 400000 0 64 0 64 ) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.POP(Op.SHA3(offset=0x0, size=0x2FFFFF)) + + Op.SSTORE( + key=0x2, + value=Op.DELEGATECALL( + gas=0x61A80, + address=addr_3, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -64,9 +67,7 @@ def test_callcallcallcode_001_oogm_before( ), ) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x335B558774699D81F685543CFBCDE5C4E5407686), # noqa: E501 ) # Source: lll # { [[ 1 ]] (CALL 600000 0 0 64 0 64 ) [[11]] 1 } # noqa: E501 @@ -75,7 +76,7 @@ def test_callcallcallcode_001_oogm_before( key=0x1, value=Op.CALL( gas=0x927C0, - address=0xEFE4727369C5F495AEBF4EA778CC48D1155BF978, + address=addr_2, value=0x0, args_offset=0x0, args_size=0x40, @@ -86,17 +87,16 @@ def test_callcallcallcode_001_oogm_before( + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, nonce=0, - address=Address(0x471072D55A5A95044C2326F0E94A6D8DF5B8089E), # noqa: E501 ) # Source: lll - # { (KECCAK256 0x00 0x2fffff) [[ 2 ]] (DELEGATECALL 400000 0 64 0 64 ) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.POP(Op.SHA3(offset=0x0, size=0x2FFFFF)) - + Op.SSTORE( - key=0x2, - value=Op.DELEGATECALL( - gas=0x61A80, - address=0xB126C622075B1189FB6C45E851641CFADDF65B36, + # { [[ 0 ]] (CALL 800000 0 0 64 0 64 ) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.CALL( + gas=0xC3500, + address=addr, + value=0x0, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -104,17 +104,9 @@ def test_callcallcallcode_001_oogm_before( ), ) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xEFE4727369C5F495AEBF4EA778CC48D1155BF978), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, - nonce=0, - address=Address(0xB126C622075B1189FB6C45E851641CFADDF65B36), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallDelegateCodesHomestead/test_callcallcallcode_001_suicide_end.py b/tests/ported_static/stCallDelegateCodesHomestead/test_callcallcallcode_001_suicide_end.py index 70ef39f5872..9d145663f00 100644 --- a/tests/ported_static/stCallDelegateCodesHomestead/test_callcallcallcode_001_suicide_end.py +++ b/tests/ported_static/stCallDelegateCodesHomestead/test_callcallcallcode_001_suicide_end.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcallcallcode_001_suicide_end( ) -> None: """Test_callcallcallcode_001_suicide_end.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -48,6 +45,14 @@ def test_callcallcallcode_001_suicide_end( gas_limit=30000000, ) + # Source: lll + # { (SSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + balance=0x2540BE400, + nonce=0, + address=Address(0x73B954EBC05BB0FF4A0F6A13A054D50AD1584099), # noqa: E501 + ) # Source: lll # { [[ 0 ]] (CALL 150000 0 0 64 0 64 ) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -108,15 +113,6 @@ def test_callcallcallcode_001_suicide_end( nonce=0, address=Address(0xAC521409E2FA9526BFE6B827805783D2E307C4CE), # noqa: E501 ) - # Source: lll - # { (SSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, - balance=0x2540BE400, - nonce=0, - address=Address(0x73B954EBC05BB0FF4A0F6A13A054D50AD1584099), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallDelegateCodesHomestead/test_callcallcallcode_001_suicide_middle.py b/tests/ported_static/stCallDelegateCodesHomestead/test_callcallcallcode_001_suicide_middle.py index 6b821257b63..9bddbd06ff9 100644 --- a/tests/ported_static/stCallDelegateCodesHomestead/test_callcallcallcode_001_suicide_middle.py +++ b/tests/ported_static/stCallDelegateCodesHomestead/test_callcallcallcode_001_suicide_middle.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcallcallcode_001_suicide_middle( ) -> None: """Test_callcallcallcode_001_suicide_middle.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -48,6 +45,14 @@ def test_callcallcallcode_001_suicide_middle( gas_limit=30000000, ) + # Source: lll + # { (SSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + balance=0x2540BE400, + nonce=0, + address=Address(0x73B954EBC05BB0FF4A0F6A13A054D50AD1584099), # noqa: E501 + ) # Source: lll # { [[ 0 ]] (CALL 150000 0 0 64 0 64 ) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -110,15 +115,6 @@ def test_callcallcallcode_001_suicide_middle( nonce=0, address=Address(0x124B38FA011C9D36B7FE193DC636813A2F8BDAA7), # noqa: E501 ) - # Source: lll - # { (SSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, - balance=0x2540BE400, - nonce=0, - address=Address(0x73B954EBC05BB0FF4A0F6A13A054D50AD1584099), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallDelegateCodesHomestead/test_callcallcode_01.py b/tests/ported_static/stCallDelegateCodesHomestead/test_callcallcode_01.py index ff3d2f63c6b..b507415274d 100644 --- a/tests/ported_static/stCallDelegateCodesHomestead/test_callcallcode_01.py +++ b/tests/ported_static/stCallDelegateCodesHomestead/test_callcallcode_01.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_callcallcode_01( ) -> None: """Test_callcallcode_01.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -47,24 +44,18 @@ def test_callcallcode_01( ) # Source: lll - # { [[ 0 ]] (CALL 350000 1 0 64 0 64 ) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.CALL( - gas=0x55730, - address=0x2B0691CD58A1CF4628D642E9ACA9AB04946E3EC9, - value=0x1, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ), - ) + # { (SSTORE 2 1) (SSTORE 4 (CALLER)) (SSTORE 7 (CALLVALUE)) (SSTORE 230 (ADDRESS)) (SSTORE 232 (ORIGIN)) (SSTORE 236 (CALLDATASIZE)) (SSTORE 238 (CODESIZE)) (SSTORE 240 (GASPRICE)) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x2, value=0x1) + + Op.SSTORE(key=0x4, value=Op.CALLER) + + Op.SSTORE(key=0x7, value=Op.CALLVALUE) + + Op.SSTORE(key=0xE6, value=Op.ADDRESS) + + Op.SSTORE(key=0xE8, value=Op.ORIGIN) + + Op.SSTORE(key=0xEC, value=Op.CALLDATASIZE) + + Op.SSTORE(key=0xEE, value=Op.CODESIZE) + + Op.SSTORE(key=0xF0, value=Op.GASPRICE) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xEB09FF15547417853F6F4B240B8804769C37B0F1), # noqa: E501 ) # Source: lll # { [[ 1 ]] (DELEGATECALL 250000 0 64 0 64 ) } # noqa: E501 @@ -73,7 +64,7 @@ def test_callcallcode_01( key=0x1, value=Op.DELEGATECALL( gas=0x3D090, - address=0xB096ECA04CD5C92C88BA466F92627D4F04D53C95, + address=addr_2, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -82,24 +73,26 @@ def test_callcallcode_01( ) + Op.STOP, nonce=0, - address=Address(0x2B0691CD58A1CF4628D642E9ACA9AB04946E3EC9), # noqa: E501 ) # Source: lll - # { (SSTORE 2 1) (SSTORE 4 (CALLER)) (SSTORE 7 (CALLVALUE)) (SSTORE 230 (ADDRESS)) (SSTORE 232 (ORIGIN)) (SSTORE 236 (CALLDATASIZE)) (SSTORE 238 (CODESIZE)) (SSTORE 240 (GASPRICE)) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x2, value=0x1) - + Op.SSTORE(key=0x4, value=Op.CALLER) - + Op.SSTORE(key=0x7, value=Op.CALLVALUE) - + Op.SSTORE(key=0xE6, value=Op.ADDRESS) - + Op.SSTORE(key=0xE8, value=Op.ORIGIN) - + Op.SSTORE(key=0xEC, value=Op.CALLDATASIZE) - + Op.SSTORE(key=0xEE, value=Op.CODESIZE) - + Op.SSTORE(key=0xF0, value=Op.GASPRICE) + # { [[ 0 ]] (CALL 350000 1 0 64 0 64 ) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.CALL( + gas=0x55730, + address=addr, + value=0x1, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ), + ) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xB096ECA04CD5C92C88BA466F92627D4F04D53C95), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, @@ -114,10 +107,10 @@ def test_callcallcode_01( storage={ 1: 1, 2: 1, - 4: 0xEB09FF15547417853F6F4B240B8804769C37B0F1, + 4: target, 7: 1, - 230: 0x2B0691CD58A1CF4628D642E9ACA9AB04946E3EC9, - 232: 0xEBAF50DEBF10E08302FE4280C32DF010463CA297, + 230: addr, + 232: sender, 236: 64, 238: 34, 240: 10, diff --git a/tests/ported_static/stCallDelegateCodesHomestead/test_callcallcode_01_ooge.py b/tests/ported_static/stCallDelegateCodesHomestead/test_callcallcode_01_ooge.py index 3e6b9587516..cbb050fc430 100644 --- a/tests/ported_static/stCallDelegateCodesHomestead/test_callcallcode_01_ooge.py +++ b/tests/ported_static/stCallDelegateCodesHomestead/test_callcallcode_01_ooge.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcallcode_01_ooge( ) -> None: """CALL -> DELEGATE -> CODE OOG.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,24 +46,12 @@ def test_callcallcode_01_ooge( ) # Source: lll - # { [[ 0 ]] (CALL 800000 0 0 64 0 64 ) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.CALL( - gas=0xC3500, - address=0x42473C2734EB62B91E4E2AC3DAB63AB2443F4236, - value=0x0, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ), - ) + # { (SSTORE 2 1) (KECCAK256 0x00 0x2fffff) } + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x2, value=0x1) + + Op.SHA3(offset=0x0, size=0x2FFFFF) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x335B558774699D81F685543CFBCDE5C4E5407686), # noqa: E501 ) # Source: lll # { [[ 1 ]] (DELEGATECALL 600000 0 64 0 64 ) [[11]] 1 } # noqa: E501 @@ -75,7 +60,7 @@ def test_callcallcode_01_ooge( key=0x1, value=Op.DELEGATECALL( gas=0x927C0, - address=0x766B2CF0691F51029181FC511395B7AB71353A88, + address=addr_2, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -85,18 +70,26 @@ def test_callcallcode_01_ooge( + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, nonce=0, - address=Address(0x42473C2734EB62B91E4E2AC3DAB63AB2443F4236), # noqa: E501 ) # Source: lll - # { (SSTORE 2 1) (KECCAK256 0x00 0x2fffff) } - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x2, value=0x1) - + Op.SHA3(offset=0x0, size=0x2FFFFF) + # { [[ 0 ]] (CALL 800000 0 0 64 0 64 ) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.CALL( + gas=0xC3500, + address=addr, + value=0x0, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ), + ) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x766B2CF0691F51029181FC511395B7AB71353A88), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallDelegateCodesHomestead/test_callcallcode_01_suicide_end.py b/tests/ported_static/stCallDelegateCodesHomestead/test_callcallcode_01_suicide_end.py index 5ed7010f9d6..9ce57b4ea26 100644 --- a/tests/ported_static/stCallDelegateCodesHomestead/test_callcallcode_01_suicide_end.py +++ b/tests/ported_static/stCallDelegateCodesHomestead/test_callcallcode_01_suicide_end.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcallcode_01_suicide_end( ) -> None: """Test_callcallcode_01_suicide_end.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -48,6 +45,14 @@ def test_callcallcode_01_suicide_end( gas_limit=30000000, ) + # Source: lll + # { (SSTORE 2 1) } + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x2, value=0x1) + Op.STOP, + balance=0x2540BE400, + nonce=0, + address=Address(0x703B936FD4D674F0FF5D6957F61097152F8781B8), # noqa: E501 + ) # Source: lll # { [[ 0 ]] (CALL 150000 0 0 64 0 64 ) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -88,15 +93,6 @@ def test_callcallcode_01_suicide_end( nonce=0, address=Address(0x1CCA6E93108EC94304AE5EB121D323E6C317FE7A), # noqa: E501 ) - # Source: lll - # { (SSTORE 2 1) } - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x2, value=0x1) + Op.STOP, - balance=0x2540BE400, - nonce=0, - address=Address(0x703B936FD4D674F0FF5D6957F61097152F8781B8), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallDelegateCodesHomestead/test_callcallcodecall_010.py b/tests/ported_static/stCallDelegateCodesHomestead/test_callcallcodecall_010.py index 8f3563a79f4..2887e55659b 100644 --- a/tests/ported_static/stCallDelegateCodesHomestead/test_callcallcodecall_010.py +++ b/tests/ported_static/stCallDelegateCodesHomestead/test_callcallcodecall_010.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcallcodecall_010( ) -> None: """Test_callcallcodecall_010.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,24 +46,38 @@ def test_callcallcodecall_010( ) # Source: lll - # { [[ 0 ]] (CALL 350000 1 0 64 0 64 ) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 + # { (SSTORE 3 1) (SSTORE 4 (CALLER)) (SSTORE 7 (CALLVALUE)) (SSTORE 330 (ADDRESS)) (SSTORE 332 (ORIGIN)) (SSTORE 336 (CALLDATASIZE)) (SSTORE 338 (CODESIZE)) (SSTORE 340 (GASPRICE)) } # noqa: E501 + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + + Op.SSTORE(key=0x4, value=Op.CALLER) + + Op.SSTORE(key=0x7, value=Op.CALLVALUE) + + Op.SSTORE(key=0x14A, value=Op.ADDRESS) + + Op.SSTORE(key=0x14C, value=Op.ORIGIN) + + Op.SSTORE(key=0x150, value=Op.CALLDATASIZE) + + Op.SSTORE(key=0x152, value=Op.CODESIZE) + + Op.SSTORE(key=0x154, value=Op.GASPRICE) + + Op.STOP, + nonce=0, + ) + # Source: lll + # { [[ 2 ]] (CALL 250000 2 0 64 0 64 ) (SSTORE 5 (CALLER))} # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x0, + key=0x2, value=Op.CALL( - gas=0x55730, - address=0xFED08E44AE95ECE264BC94A1FC45AF8BC4EF4F1D, - value=0x1, + gas=0x3D090, + address=addr_3, + value=0x2, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, ), ) + + Op.SSTORE(key=0x5, value=Op.CALLER) + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xEB09FF15547417853F6F4B240B8804769C37B0F1), # noqa: E501 ) # Source: lll # { [[ 1 ]] (DELEGATECALL 300000 0 64 0 64 ) } # noqa: E501 @@ -75,7 +86,7 @@ def test_callcallcodecall_010( key=0x1, value=Op.DELEGATECALL( gas=0x493E0, - address=0xA297E445DC76A67BF6FC17C444C1EC2C389CE53D, + address=addr_2, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -85,45 +96,26 @@ def test_callcallcodecall_010( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xFED08E44AE95ECE264BC94A1FC45AF8BC4EF4F1D), # noqa: E501 ) # Source: lll - # { [[ 2 ]] (CALL 250000 2 0 64 0 64 ) (SSTORE 5 (CALLER))} # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 + # { [[ 0 ]] (CALL 350000 1 0 64 0 64 ) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x2, + key=0x0, value=Op.CALL( - gas=0x3D090, - address=0x7E63847AAD8CA50FB7C04777DCE6871A6BF8DE0C, - value=0x2, + gas=0x55730, + address=addr, + value=0x1, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, ), ) - + Op.SSTORE(key=0x5, value=Op.CALLER) + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xA297E445DC76A67BF6FC17C444C1EC2C389CE53D), # noqa: E501 ) - # Source: lll - # { (SSTORE 3 1) (SSTORE 4 (CALLER)) (SSTORE 7 (CALLVALUE)) (SSTORE 330 (ADDRESS)) (SSTORE 332 (ORIGIN)) (SSTORE 336 (CALLDATASIZE)) (SSTORE 338 (CODESIZE)) (SSTORE 340 (GASPRICE)) } # noqa: E501 - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) - + Op.SSTORE(key=0x4, value=Op.CALLER) - + Op.SSTORE(key=0x7, value=Op.CALLVALUE) - + Op.SSTORE(key=0x14A, value=Op.ADDRESS) - + Op.SSTORE(key=0x14C, value=Op.ORIGIN) - + Op.SSTORE(key=0x150, value=Op.CALLDATASIZE) - + Op.SSTORE(key=0x152, value=Op.CODESIZE) - + Op.SSTORE(key=0x154, value=Op.GASPRICE) - + Op.STOP, - nonce=0, - address=Address(0x7E63847AAD8CA50FB7C04777DCE6871A6BF8DE0C), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, @@ -134,21 +126,15 @@ def test_callcallcodecall_010( post = { target: Account(storage={0: 1, 2: 0}), - addr: Account( - storage={ - 1: 1, - 2: 1, - 5: 0xEB09FF15547417853F6F4B240B8804769C37B0F1, - }, - ), + addr: Account(storage={1: 1, 2: 1, 5: target}), addr_2: Account(storage={2: 0}), addr_3: Account( storage={ 3: 1, - 4: 0xFED08E44AE95ECE264BC94A1FC45AF8BC4EF4F1D, + 4: addr, 7: 2, - 330: 0x7E63847AAD8CA50FB7C04777DCE6871A6BF8DE0C, - 332: 0xEBAF50DEBF10E08302FE4280C32DF010463CA297, + 330: addr_3, + 332: sender, 336: 64, 338: 39, 340: 10, diff --git a/tests/ported_static/stCallDelegateCodesHomestead/test_callcallcodecall_010_ooge.py b/tests/ported_static/stCallDelegateCodesHomestead/test_callcallcodecall_010_ooge.py index bab5a831b42..422ac1d273e 100644 --- a/tests/ported_static/stCallDelegateCodesHomestead/test_callcallcodecall_010_ooge.py +++ b/tests/ported_static/stCallDelegateCodesHomestead/test_callcallcodecall_010_ooge.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcallcodecall_010_ooge( ) -> None: """CALL -> DELEGATE -> CALL -> CODE OOG.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,13 +46,21 @@ def test_callcallcodecall_010_ooge( ) # Source: lll - # { [[ 0 ]] (CALL 800000 0 0 64 0 64 ) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 + # { (SSTORE 3 1) (KECCAK256 0x00 0x2fffff) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + + Op.SHA3(offset=0x0, size=0x2FFFFF) + + Op.STOP, + nonce=0, + ) + # Source: lll + # { [[ 2 ]] (CALL 400000 0 0 64 0 64 ) [[11]] 1 } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x0, + key=0x2, value=Op.CALL( - gas=0xC3500, - address=0x69A0017A51AD556682F48B32235D0B61ABDF4DA4, + gas=0x61A80, + address=addr_3, value=0x0, args_offset=0x0, args_size=0x40, @@ -63,10 +68,9 @@ def test_callcallcodecall_010_ooge( ret_size=0x40, ), ) + + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x335B558774699D81F685543CFBCDE5C4E5407686), # noqa: E501 ) # Source: lll # { [[ 1 ]] (DELEGATECALL 600000 0 64 0 64 ) } # noqa: E501 @@ -75,7 +79,7 @@ def test_callcallcodecall_010_ooge( key=0x1, value=Op.DELEGATECALL( gas=0x927C0, - address=0xB11130CF7EEF6D3F1552623D3506A5BBB07B12CE, + address=addr_2, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -84,16 +88,15 @@ def test_callcallcodecall_010_ooge( ) + Op.STOP, nonce=0, - address=Address(0x69A0017A51AD556682F48B32235D0B61ABDF4DA4), # noqa: E501 ) # Source: lll - # { [[ 2 ]] (CALL 400000 0 0 64 0 64 ) [[11]] 1 } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 + # { [[ 0 ]] (CALL 800000 0 0 64 0 64 ) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x2, + key=0x0, value=Op.CALL( - gas=0x61A80, - address=0x1DD747F92062BB53BB8E867EC2902792435F1748, + gas=0xC3500, + address=addr, value=0x0, args_offset=0x0, args_size=0x40, @@ -101,21 +104,10 @@ def test_callcallcodecall_010_ooge( ret_size=0x40, ), ) - + Op.SSTORE(key=0xB, value=0x1) - + Op.STOP, - nonce=0, - address=Address(0xB11130CF7EEF6D3F1552623D3506A5BBB07B12CE), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) (KECCAK256 0x00 0x2fffff) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) - + Op.SHA3(offset=0x0, size=0x2FFFFF) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x1DD747F92062BB53BB8E867EC2902792435F1748), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallDelegateCodesHomestead/test_callcallcodecall_010_oogm_after.py b/tests/ported_static/stCallDelegateCodesHomestead/test_callcallcodecall_010_oogm_after.py index 4ae34f45ed9..7c63c9cccec 100644 --- a/tests/ported_static/stCallDelegateCodesHomestead/test_callcallcodecall_010_oogm_after.py +++ b/tests/ported_static/stCallDelegateCodesHomestead/test_callcallcodecall_010_oogm_after.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcallcodecall_010_oogm_after( ) -> None: """CALL -> (DELEGATE -> CALL -> CODE) OOG.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,13 +46,19 @@ def test_callcallcodecall_010_oogm_after( ) # Source: lll - # { [[ 0 ]] (CALL 800000 0 0 64 0 64 ) [[11]] 1 } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 + # { (SSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + nonce=0, + ) + # Source: lll + # { [[ 2 ]] (CALL 400000 0 0 64 0 64 ) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x0, + key=0x2, value=Op.CALL( - gas=0xC3500, - address=0x1ADAE71AD3AEEC97978E38BE04DA2A1773DFC506, + gas=0x61A80, + address=addr_3, value=0x0, args_offset=0x0, args_size=0x40, @@ -63,11 +66,8 @@ def test_callcallcodecall_010_oogm_after( ret_size=0x40, ), ) - + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xE54CCFA5E33A84943997885F0AB9C19C587D8C4F), # noqa: E501 ) # Source: lll # { [[ 1 ]] (DELEGATECALL 600000 0 64 0 64 ) (KECCAK256 0x00 0x2fffff) } # noqa: E501 @@ -76,7 +76,7 @@ def test_callcallcodecall_010_oogm_after( key=0x1, value=Op.DELEGATECALL( gas=0x927C0, - address=0x8D7270785422B63A97D83BADA6AAC80BEBC3A99D, + address=addr_2, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -86,16 +86,15 @@ def test_callcallcodecall_010_oogm_after( + Op.SHA3(offset=0x0, size=0x2FFFFF) + Op.STOP, nonce=0, - address=Address(0x1ADAE71AD3AEEC97978E38BE04DA2A1773DFC506), # noqa: E501 ) # Source: lll - # { [[ 2 ]] (CALL 400000 0 0 64 0 64 ) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 + # { [[ 0 ]] (CALL 800000 0 0 64 0 64 ) [[11]] 1 } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x2, + key=0x0, value=Op.CALL( - gas=0x61A80, - address=0xB126C622075B1189FB6C45E851641CFADDF65B36, + gas=0xC3500, + address=addr, value=0x0, args_offset=0x0, args_size=0x40, @@ -103,18 +102,11 @@ def test_callcallcodecall_010_oogm_after( ret_size=0x40, ), ) + + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x8D7270785422B63A97D83BADA6AAC80BEBC3A99D), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, - nonce=0, - address=Address(0xB126C622075B1189FB6C45E851641CFADDF65B36), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallDelegateCodesHomestead/test_callcallcodecall_010_oogm_before.py b/tests/ported_static/stCallDelegateCodesHomestead/test_callcallcodecall_010_oogm_before.py index ae6beb28c44..7ee856213d8 100644 --- a/tests/ported_static/stCallDelegateCodesHomestead/test_callcallcodecall_010_oogm_before.py +++ b/tests/ported_static/stCallDelegateCodesHomestead/test_callcallcodecall_010_oogm_before.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcallcodecall_010_oogm_before( ) -> None: """CALL -> DELEGATE -> OOG CALL -> CODE .""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,13 +46,20 @@ def test_callcallcodecall_010_oogm_before( ) # Source: lll - # { [[ 0 ]] (CALL 800000 0 0 64 0 64 ) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, + # { (SSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + nonce=0, + ) + # Source: lll + # { (KECCAK256 0x00 0x2fffff) [[ 2 ]] (CALL 400000 0 0 64 0 64 ) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.POP(Op.SHA3(offset=0x0, size=0x2FFFFF)) + + Op.SSTORE( + key=0x2, value=Op.CALL( - gas=0xC3500, - address=0x97367129E262C26FF9D41B4424EB9E460270F83F, + gas=0x61A80, + address=addr_3, value=0x0, args_offset=0x0, args_size=0x40, @@ -64,9 +68,7 @@ def test_callcallcodecall_010_oogm_before( ), ) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x335B558774699D81F685543CFBCDE5C4E5407686), # noqa: E501 ) # Source: lll # { [[ 1 ]] (DELEGATECALL 600000 0 64 0 64 ) [[11]] 1 } # noqa: E501 @@ -75,7 +77,7 @@ def test_callcallcodecall_010_oogm_before( key=0x1, value=Op.DELEGATECALL( gas=0x927C0, - address=0x51A61D678EC27711369C527E5D42A9DE66A5727F, + address=addr_2, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -85,17 +87,15 @@ def test_callcallcodecall_010_oogm_before( + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, nonce=0, - address=Address(0x97367129E262C26FF9D41B4424EB9E460270F83F), # noqa: E501 ) # Source: lll - # { (KECCAK256 0x00 0x2fffff) [[ 2 ]] (CALL 400000 0 0 64 0 64 ) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.POP(Op.SHA3(offset=0x0, size=0x2FFFFF)) - + Op.SSTORE( - key=0x2, + # { [[ 0 ]] (CALL 800000 0 0 64 0 64 ) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, value=Op.CALL( - gas=0x61A80, - address=0xB126C622075B1189FB6C45E851641CFADDF65B36, + gas=0xC3500, + address=addr, value=0x0, args_offset=0x0, args_size=0x40, @@ -104,17 +104,9 @@ def test_callcallcodecall_010_oogm_before( ), ) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x51A61D678EC27711369C527E5D42A9DE66A5727F), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, - nonce=0, - address=Address(0xB126C622075B1189FB6C45E851641CFADDF65B36), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallDelegateCodesHomestead/test_callcallcodecall_010_suicide_end.py b/tests/ported_static/stCallDelegateCodesHomestead/test_callcallcodecall_010_suicide_end.py index 99d0542a791..3e51d28ac20 100644 --- a/tests/ported_static/stCallDelegateCodesHomestead/test_callcallcodecall_010_suicide_end.py +++ b/tests/ported_static/stCallDelegateCodesHomestead/test_callcallcodecall_010_suicide_end.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcallcodecall_010_suicide_end( ) -> None: """Test_callcallcodecall_010_suicide_end.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -48,6 +45,14 @@ def test_callcallcodecall_010_suicide_end( gas_limit=30000000, ) + # Source: lll + # { (SSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + balance=0x2540BE400, + nonce=0, + address=Address(0x73B954EBC05BB0FF4A0F6A13A054D50AD1584099), # noqa: E501 + ) # Source: lll # { [[ 0 ]] (CALL 150000 0 0 64 0 64 ) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -108,15 +113,6 @@ def test_callcallcodecall_010_suicide_end( nonce=0, address=Address(0xD957E143AD2C011BC6A2B142795F1A9BA70D0680), # noqa: E501 ) - # Source: lll - # { (SSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, - balance=0x2540BE400, - nonce=0, - address=Address(0x73B954EBC05BB0FF4A0F6A13A054D50AD1584099), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallDelegateCodesHomestead/test_callcallcodecall_010_suicide_middle.py b/tests/ported_static/stCallDelegateCodesHomestead/test_callcallcodecall_010_suicide_middle.py index c11a4441b94..d4585d7fbae 100644 --- a/tests/ported_static/stCallDelegateCodesHomestead/test_callcallcodecall_010_suicide_middle.py +++ b/tests/ported_static/stCallDelegateCodesHomestead/test_callcallcodecall_010_suicide_middle.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcallcodecall_010_suicide_middle( ) -> None: """Test_callcallcodecall_010_suicide_middle.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -48,6 +45,14 @@ def test_callcallcodecall_010_suicide_middle( gas_limit=30000000, ) + # Source: lll + # { (SSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + balance=0x2540BE400, + nonce=0, + address=Address(0x73B954EBC05BB0FF4A0F6A13A054D50AD1584099), # noqa: E501 + ) # Source: lll # { [[ 0 ]] (CALL 150000 0 0 64 0 64 ) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -110,15 +115,6 @@ def test_callcallcodecall_010_suicide_middle( nonce=0, address=Address(0xAC90BB4611B91D4C6292BD64E8656110822E01ED), # noqa: E501 ) - # Source: lll - # { (SSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, - balance=0x2540BE400, - nonce=0, - address=Address(0x73B954EBC05BB0FF4A0F6A13A054D50AD1584099), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallDelegateCodesHomestead/test_callcallcodecallcode_011.py b/tests/ported_static/stCallDelegateCodesHomestead/test_callcallcodecallcode_011.py index 9b42b70e097..2230e5e1316 100644 --- a/tests/ported_static/stCallDelegateCodesHomestead/test_callcallcodecallcode_011.py +++ b/tests/ported_static/stCallDelegateCodesHomestead/test_callcallcodecallcode_011.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcallcodecallcode_011( ) -> None: """Test_callcallcodecallcode_011.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,14 +46,27 @@ def test_callcallcodecallcode_011( ) # Source: lll - # { [[ 0 ]] (CALL 350000 1 0 64 0 64 ) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 + # { (SSTORE 3 1) (SSTORE 4 (CALLER)) (SSTORE 7 (CALLVALUE)) (SSTORE 330 (ADDRESS)) (SSTORE 332 (ORIGIN)) (SSTORE 336 (CALLDATASIZE)) (SSTORE 338 (CODESIZE)) (SSTORE 340 (GASPRICE)) } # noqa: E501 + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + + Op.SSTORE(key=0x4, value=Op.CALLER) + + Op.SSTORE(key=0x7, value=Op.CALLVALUE) + + Op.SSTORE(key=0x14A, value=Op.ADDRESS) + + Op.SSTORE(key=0x14C, value=Op.ORIGIN) + + Op.SSTORE(key=0x150, value=Op.CALLDATASIZE) + + Op.SSTORE(key=0x152, value=Op.CODESIZE) + + Op.SSTORE(key=0x154, value=Op.GASPRICE) + + Op.STOP, + nonce=0, + ) + # Source: lll + # { [[ 2 ]] (DELEGATECALL 250000 0 64 0 64 ) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x0, - value=Op.CALL( - gas=0x55730, - address=0xFED08E44AE95ECE264BC94A1FC45AF8BC4EF4F1D, - value=0x1, + key=0x2, + value=Op.DELEGATECALL( + gas=0x3D090, + address=addr_3, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -66,7 +76,6 @@ def test_callcallcodecallcode_011( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xEB09FF15547417853F6F4B240B8804769C37B0F1), # noqa: E501 ) # Source: lll # { [[ 1 ]] (DELEGATECALL 300000 0 64 0 64 ) } # noqa: E501 @@ -75,7 +84,7 @@ def test_callcallcodecallcode_011( key=0x1, value=Op.DELEGATECALL( gas=0x493E0, - address=0x6F50426AA1BBB3CBD865847823F377D918757C07, + address=addr_2, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -85,16 +94,16 @@ def test_callcallcodecallcode_011( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xFED08E44AE95ECE264BC94A1FC45AF8BC4EF4F1D), # noqa: E501 ) # Source: lll - # { [[ 2 ]] (DELEGATECALL 250000 0 64 0 64 ) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 + # { [[ 0 ]] (CALL 350000 1 0 64 0 64 ) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x2, - value=Op.DELEGATECALL( - gas=0x3D090, - address=0x7E63847AAD8CA50FB7C04777DCE6871A6BF8DE0C, + key=0x0, + value=Op.CALL( + gas=0x55730, + address=addr, + value=0x1, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -104,24 +113,7 @@ def test_callcallcodecallcode_011( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x6F50426AA1BBB3CBD865847823F377D918757C07), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) (SSTORE 4 (CALLER)) (SSTORE 7 (CALLVALUE)) (SSTORE 330 (ADDRESS)) (SSTORE 332 (ORIGIN)) (SSTORE 336 (CALLDATASIZE)) (SSTORE 338 (CODESIZE)) (SSTORE 340 (GASPRICE)) } # noqa: E501 - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) - + Op.SSTORE(key=0x4, value=Op.CALLER) - + Op.SSTORE(key=0x7, value=Op.CALLVALUE) - + Op.SSTORE(key=0x14A, value=Op.ADDRESS) - + Op.SSTORE(key=0x14C, value=Op.ORIGIN) - + Op.SSTORE(key=0x150, value=Op.CALLDATASIZE) - + Op.SSTORE(key=0x152, value=Op.CODESIZE) - + Op.SSTORE(key=0x154, value=Op.GASPRICE) - + Op.STOP, - nonce=0, - address=Address(0x7E63847AAD8CA50FB7C04777DCE6871A6BF8DE0C), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, @@ -137,10 +129,10 @@ def test_callcallcodecallcode_011( 1: 1, 2: 1, 3: 1, - 4: 0xEB09FF15547417853F6F4B240B8804769C37B0F1, + 4: target, 7: 1, - 330: 0xFED08E44AE95ECE264BC94A1FC45AF8BC4EF4F1D, - 332: 0xEBAF50DEBF10E08302FE4280C32DF010463CA297, + 330: addr, + 332: sender, 336: 64, 338: 39, 340: 10, diff --git a/tests/ported_static/stCallDelegateCodesHomestead/test_callcallcodecallcode_011_ooge.py b/tests/ported_static/stCallDelegateCodesHomestead/test_callcallcodecallcode_011_ooge.py index 022dccc1c98..238a89aa72a 100644 --- a/tests/ported_static/stCallDelegateCodesHomestead/test_callcallcodecallcode_011_ooge.py +++ b/tests/ported_static/stCallDelegateCodesHomestead/test_callcallcodecallcode_011_ooge.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcallcodecallcode_011_ooge( ) -> None: """CALL -> DELEGATE -> DELEGATE -> CODE OOG.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,24 +46,30 @@ def test_callcallcodecallcode_011_ooge( ) # Source: lll - # { [[ 0 ]] (CALL 800000 0 0 64 0 64 ) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 + # { (SSTORE 3 1) (KECCAK256 0x00 0x2fffff) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + + Op.SHA3(offset=0x0, size=0x2FFFFF) + + Op.STOP, + nonce=0, + ) + # Source: lll + # { [[ 2 ]] (DELEGATECALL 400000 0 64 0 64 ) [[11]] 1 } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x0, - value=Op.CALL( - gas=0xC3500, - address=0x69A0017A51AD556682F48B32235D0B61ABDF4DA4, - value=0x0, + key=0x2, + value=Op.DELEGATECALL( + gas=0x61A80, + address=addr_3, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, ), ) + + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x335B558774699D81F685543CFBCDE5C4E5407686), # noqa: E501 ) # Source: lll # { [[ 1 ]] (DELEGATECALL 600000 0 64 0 64 ) } # noqa: E501 @@ -75,7 +78,7 @@ def test_callcallcodecallcode_011_ooge( key=0x1, value=Op.DELEGATECALL( gas=0x927C0, - address=0x3E423A7B1FBA04D0C3F9423A3AE2A180D2878D5B, + address=addr_2, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -84,37 +87,26 @@ def test_callcallcodecallcode_011_ooge( ) + Op.STOP, nonce=0, - address=Address(0x69A0017A51AD556682F48B32235D0B61ABDF4DA4), # noqa: E501 ) # Source: lll - # { [[ 2 ]] (DELEGATECALL 400000 0 64 0 64 ) [[11]] 1 } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 + # { [[ 0 ]] (CALL 800000 0 0 64 0 64 ) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x2, - value=Op.DELEGATECALL( - gas=0x61A80, - address=0x1DD747F92062BB53BB8E867EC2902792435F1748, + key=0x0, + value=Op.CALL( + gas=0xC3500, + address=addr, + value=0x0, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, ), ) - + Op.SSTORE(key=0xB, value=0x1) - + Op.STOP, - nonce=0, - address=Address(0x3E423A7B1FBA04D0C3F9423A3AE2A180D2878D5B), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) (KECCAK256 0x00 0x2fffff) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) - + Op.SHA3(offset=0x0, size=0x2FFFFF) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x1DD747F92062BB53BB8E867EC2902792435F1748), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallDelegateCodesHomestead/test_callcallcodecallcode_011_oogm_after.py b/tests/ported_static/stCallDelegateCodesHomestead/test_callcallcodecallcode_011_oogm_after.py index 51b8a844b89..23e7b6217ef 100644 --- a/tests/ported_static/stCallDelegateCodesHomestead/test_callcallcodecallcode_011_oogm_after.py +++ b/tests/ported_static/stCallDelegateCodesHomestead/test_callcallcodecallcode_011_oogm_after.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcallcodecallcode_011_oogm_after( ) -> None: """CALL -> (DELEGATE -> DELEGATE -> CODE) OOG.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,25 +46,27 @@ def test_callcallcodecallcode_011_oogm_after( ) # Source: lll - # { [[ 0 ]] (CALL 800000 0 0 64 0 64 ) [[11]] 1 } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 + # { (SSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + nonce=0, + ) + # Source: lll + # { [[ 2 ]] (DELEGATECALL 400000 0 64 0 64 ) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x0, - value=Op.CALL( - gas=0xC3500, - address=0x1ADAE71AD3AEEC97978E38BE04DA2A1773DFC506, - value=0x0, + key=0x2, + value=Op.DELEGATECALL( + gas=0x61A80, + address=addr_3, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, ), ) - + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xE54CCFA5E33A84943997885F0AB9C19C587D8C4F), # noqa: E501 ) # Source: lll # { [[ 1 ]] (DELEGATECALL 600000 0 64 0 64 ) (KECCAK256 0x00 0x2fffff) } # noqa: E501 @@ -76,7 +75,7 @@ def test_callcallcodecallcode_011_oogm_after( key=0x1, value=Op.DELEGATECALL( gas=0x927C0, - address=0xDA11FDF0CE02240C6B4711F56AFCD9763B44D3DC, + address=addr_2, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -86,34 +85,27 @@ def test_callcallcodecallcode_011_oogm_after( + Op.SHA3(offset=0x0, size=0x2FFFFF) + Op.STOP, nonce=0, - address=Address(0x1ADAE71AD3AEEC97978E38BE04DA2A1773DFC506), # noqa: E501 ) # Source: lll - # { [[ 2 ]] (DELEGATECALL 400000 0 64 0 64 ) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 + # { [[ 0 ]] (CALL 800000 0 0 64 0 64 ) [[11]] 1 } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x2, - value=Op.DELEGATECALL( - gas=0x61A80, - address=0xB126C622075B1189FB6C45E851641CFADDF65B36, + key=0x0, + value=Op.CALL( + gas=0xC3500, + address=addr, + value=0x0, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, ), ) + + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xDA11FDF0CE02240C6B4711F56AFCD9763B44D3DC), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, - nonce=0, - address=Address(0xB126C622075B1189FB6C45E851641CFADDF65B36), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallDelegateCodesHomestead/test_callcallcodecallcode_011_oogm_before.py b/tests/ported_static/stCallDelegateCodesHomestead/test_callcallcodecallcode_011_oogm_before.py index a5483d53c71..5aecfe71aec 100644 --- a/tests/ported_static/stCallDelegateCodesHomestead/test_callcallcodecallcode_011_oogm_before.py +++ b/tests/ported_static/stCallDelegateCodesHomestead/test_callcallcodecallcode_011_oogm_before.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcallcodecallcode_011_oogm_before( ) -> None: """CALL -> DELEGATE -> OOG DELEGATE -> CODE.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,14 +46,20 @@ def test_callcallcodecallcode_011_oogm_before( ) # Source: lll - # { [[ 0 ]] (CALL 800000 0 0 64 0 64 ) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.CALL( - gas=0xC3500, - address=0x29F893B720E998CCD5971409FA9A8802822FDCBC, - value=0x0, + # { (SSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + nonce=0, + ) + # Source: lll + # { (KECCAK256 0x00 0x2fffff) [[ 2 ]] (DELEGATECALL 400000 0 64 0 64 ) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.POP(Op.SHA3(offset=0x0, size=0x2FFFFF)) + + Op.SSTORE( + key=0x2, + value=Op.DELEGATECALL( + gas=0x61A80, + address=addr_3, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -64,9 +67,7 @@ def test_callcallcodecallcode_011_oogm_before( ), ) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x335B558774699D81F685543CFBCDE5C4E5407686), # noqa: E501 ) # Source: lll # { [[ 1 ]] (DELEGATECALL 600000 0 64 0 64 ) [[11]] 1 } # noqa: E501 @@ -75,7 +76,7 @@ def test_callcallcodecallcode_011_oogm_before( key=0x1, value=Op.DELEGATECALL( gas=0x927C0, - address=0x71E7E95D2DFE9F65B4522F2D3AA71FB33F49920C, + address=addr_2, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -85,17 +86,16 @@ def test_callcallcodecallcode_011_oogm_before( + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, nonce=0, - address=Address(0x29F893B720E998CCD5971409FA9A8802822FDCBC), # noqa: E501 ) # Source: lll - # { (KECCAK256 0x00 0x2fffff) [[ 2 ]] (DELEGATECALL 400000 0 64 0 64 ) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.POP(Op.SHA3(offset=0x0, size=0x2FFFFF)) - + Op.SSTORE( - key=0x2, - value=Op.DELEGATECALL( - gas=0x61A80, - address=0xB126C622075B1189FB6C45E851641CFADDF65B36, + # { [[ 0 ]] (CALL 800000 0 0 64 0 64 ) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.CALL( + gas=0xC3500, + address=addr, + value=0x0, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -103,17 +103,9 @@ def test_callcallcodecallcode_011_oogm_before( ), ) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x71E7E95D2DFE9F65B4522F2D3AA71FB33F49920C), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, - nonce=0, - address=Address(0xB126C622075B1189FB6C45E851641CFADDF65B36), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallDelegateCodesHomestead/test_callcallcodecallcode_011_suicide_end.py b/tests/ported_static/stCallDelegateCodesHomestead/test_callcallcodecallcode_011_suicide_end.py index 4cc2489884e..2f8cd246a17 100644 --- a/tests/ported_static/stCallDelegateCodesHomestead/test_callcallcodecallcode_011_suicide_end.py +++ b/tests/ported_static/stCallDelegateCodesHomestead/test_callcallcodecallcode_011_suicide_end.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcallcodecallcode_011_suicide_end( ) -> None: """Test_callcallcodecallcode_011_suicide_end.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -48,6 +45,14 @@ def test_callcallcodecallcode_011_suicide_end( gas_limit=30000000, ) + # Source: lll + # { (SSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + balance=0x2540BE400, + nonce=0, + address=Address(0x73B954EBC05BB0FF4A0F6A13A054D50AD1584099), # noqa: E501 + ) # Source: lll # { [[ 0 ]] (CALL 150000 0 0 64 0 64 ) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -107,15 +112,6 @@ def test_callcallcodecallcode_011_suicide_end( nonce=0, address=Address(0xAC521409E2FA9526BFE6B827805783D2E307C4CE), # noqa: E501 ) - # Source: lll - # { (SSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, - balance=0x2540BE400, - nonce=0, - address=Address(0x73B954EBC05BB0FF4A0F6A13A054D50AD1584099), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallDelegateCodesHomestead/test_callcallcodecallcode_011_suicide_middle.py b/tests/ported_static/stCallDelegateCodesHomestead/test_callcallcodecallcode_011_suicide_middle.py index ffff6216d4f..7b2dd08bcdd 100644 --- a/tests/ported_static/stCallDelegateCodesHomestead/test_callcallcodecallcode_011_suicide_middle.py +++ b/tests/ported_static/stCallDelegateCodesHomestead/test_callcallcodecallcode_011_suicide_middle.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcallcodecallcode_011_suicide_middle( ) -> None: """Test_callcallcodecallcode_011_suicide_middle.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -48,6 +45,14 @@ def test_callcallcodecallcode_011_suicide_middle( gas_limit=30000000, ) + # Source: lll + # { (SSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + balance=0x2540BE400, + nonce=0, + address=Address(0x73B954EBC05BB0FF4A0F6A13A054D50AD1584099), # noqa: E501 + ) # Source: lll # { [[ 0 ]] (CALL 150000 0 0 64 0 64 ) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -109,15 +114,6 @@ def test_callcallcodecallcode_011_suicide_middle( nonce=0, address=Address(0x6A45EC7F08C71B222CFC454A9608BC278E87F0AB), # noqa: E501 ) - # Source: lll - # { (SSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, - balance=0x2540BE400, - nonce=0, - address=Address(0x73B954EBC05BB0FF4A0F6A13A054D50AD1584099), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecall_10.py b/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecall_10.py index 568577c4b72..b689ffd226d 100644 --- a/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecall_10.py +++ b/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecall_10.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_callcodecall_10( ) -> None: """Test_callcodecall_10.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -47,23 +44,18 @@ def test_callcodecall_10( ) # Source: lll - # { [[ 0 ]] (DELEGATECALL 350000 0 64 0 64 ) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.DELEGATECALL( - gas=0x55730, - address=0xFD0CC1F9A105E057B84065348C4C878DD79FA4BE, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ), - ) + # { (SSTORE 2 1) (SSTORE 4 (CALLER)) (SSTORE 7 (CALLVALUE)) (SSTORE 230 (ADDRESS)) (SSTORE 232 (ORIGIN)) (SSTORE 236 (CALLDATASIZE)) (SSTORE 238 (CODESIZE)) (SSTORE 240 (GASPRICE)) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x2, value=0x1) + + Op.SSTORE(key=0x4, value=Op.CALLER) + + Op.SSTORE(key=0x7, value=Op.CALLVALUE) + + Op.SSTORE(key=0xE6, value=Op.ADDRESS) + + Op.SSTORE(key=0xE8, value=Op.ORIGIN) + + Op.SSTORE(key=0xEC, value=Op.CALLDATASIZE) + + Op.SSTORE(key=0xEE, value=Op.CODESIZE) + + Op.SSTORE(key=0xF0, value=Op.GASPRICE) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xD26E26D5A4796D450BFA296D70C05F02DBC1A4B9), # noqa: E501 ) # Source: lll # { [[ 1 ]] (CALL 250000 1 0 64 0 64 ) } # noqa: E501 @@ -72,7 +64,7 @@ def test_callcodecall_10( key=0x1, value=Op.CALL( gas=0x3D090, - address=0xCB4336321FAC69281BD2902D427F4EF9E8584251, + address=addr_2, value=0x1, args_offset=0x0, args_size=0x40, @@ -83,24 +75,25 @@ def test_callcodecall_10( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xFD0CC1F9A105E057B84065348C4C878DD79FA4BE), # noqa: E501 ) # Source: lll - # { (SSTORE 2 1) (SSTORE 4 (CALLER)) (SSTORE 7 (CALLVALUE)) (SSTORE 230 (ADDRESS)) (SSTORE 232 (ORIGIN)) (SSTORE 236 (CALLDATASIZE)) (SSTORE 238 (CODESIZE)) (SSTORE 240 (GASPRICE)) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x2, value=0x1) - + Op.SSTORE(key=0x4, value=Op.CALLER) - + Op.SSTORE(key=0x7, value=Op.CALLVALUE) - + Op.SSTORE(key=0xE6, value=Op.ADDRESS) - + Op.SSTORE(key=0xE8, value=Op.ORIGIN) - + Op.SSTORE(key=0xEC, value=Op.CALLDATASIZE) - + Op.SSTORE(key=0xEE, value=Op.CODESIZE) - + Op.SSTORE(key=0xF0, value=Op.GASPRICE) + # { [[ 0 ]] (DELEGATECALL 350000 0 64 0 64 ) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.DELEGATECALL( + gas=0x55730, + address=addr, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ), + ) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xCB4336321FAC69281BD2902D427F4EF9E8584251), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, @@ -114,10 +107,10 @@ def test_callcodecall_10( addr_2: Account( storage={ 2: 1, - 4: 0xD26E26D5A4796D450BFA296D70C05F02DBC1A4B9, + 4: target, 7: 1, - 230: 0xCB4336321FAC69281BD2902D427F4EF9E8584251, - 232: 0xEBAF50DEBF10E08302FE4280C32DF010463CA297, + 230: addr_2, + 232: sender, 236: 64, 238: 34, 240: 10, diff --git a/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecall_10_ooge.py b/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecall_10_ooge.py index 8fc338cf753..4bd43c7abf0 100644 --- a/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecall_10_ooge.py +++ b/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecall_10_ooge.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcodecall_10_ooge( ) -> None: """DELEGATE -> CALL -> CODE OOG.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,23 +46,12 @@ def test_callcodecall_10_ooge( ) # Source: lll - # { [[ 0 ]] (DELEGATECALL 800000 0 64 0 64 ) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.DELEGATECALL( - gas=0xC3500, - address=0x471072D55A5A95044C2326F0E94A6D8DF5B8089E, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ), - ) + # { (SSTORE 2 1) (KECCAK256 0x00 0x2fffff) } + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x2, value=0x1) + + Op.SHA3(offset=0x0, size=0x2FFFFF) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x0E7163A4A90126C4A13E52F48E84C74600E844DA), # noqa: E501 ) # Source: lll # { [[ 1 ]] (CALL 600000 0 0 64 0 64 ) [[11]] 1 } # noqa: E501 @@ -74,7 +60,7 @@ def test_callcodecall_10_ooge( key=0x1, value=Op.CALL( gas=0x927C0, - address=0x766B2CF0691F51029181FC511395B7AB71353A88, + address=addr_2, value=0x0, args_offset=0x0, args_size=0x40, @@ -85,18 +71,25 @@ def test_callcodecall_10_ooge( + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, nonce=0, - address=Address(0x471072D55A5A95044C2326F0E94A6D8DF5B8089E), # noqa: E501 ) # Source: lll - # { (SSTORE 2 1) (KECCAK256 0x00 0x2fffff) } - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x2, value=0x1) - + Op.SHA3(offset=0x0, size=0x2FFFFF) + # { [[ 0 ]] (DELEGATECALL 800000 0 64 0 64 ) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.DELEGATECALL( + gas=0xC3500, + address=addr, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ), + ) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x766B2CF0691F51029181FC511395B7AB71353A88), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecall_10_suicide_end.py b/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecall_10_suicide_end.py index 6dca2ecffde..10a12ffbe2a 100644 --- a/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecall_10_suicide_end.py +++ b/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecall_10_suicide_end.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcodecall_10_suicide_end( ) -> None: """Test_callcodecall_10_suicide_end.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -48,6 +45,14 @@ def test_callcodecall_10_suicide_end( gas_limit=30000000, ) + # Source: lll + # { (SSTORE 2 1) } + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x2, value=0x1) + Op.STOP, + balance=0x2540BE400, + nonce=0, + address=Address(0x703B936FD4D674F0FF5D6957F61097152F8781B8), # noqa: E501 + ) # Source: lll # { [[ 0 ]] (DELEGATECALL 150000 0 64 0 64 ) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -88,15 +93,6 @@ def test_callcodecall_10_suicide_end( nonce=0, address=Address(0xF741CFEE7B7FB1025DCCEF3DB5A3CBC8FFB776F8), # noqa: E501 ) - # Source: lll - # { (SSTORE 2 1) } - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x2, value=0x1) + Op.STOP, - balance=0x2540BE400, - nonce=0, - address=Address(0x703B936FD4D674F0FF5D6957F61097152F8781B8), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcall_100.py b/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcall_100.py index 41f4d5753dd..ce2dc3a924e 100644 --- a/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcall_100.py +++ b/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcall_100.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcodecallcall_100( ) -> None: """Test_callcodecallcall_100.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,13 +46,28 @@ def test_callcodecallcall_100( ) # Source: lll - # { [[ 0 ]] (DELEGATECALL 350000 0 64 0 64 ) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 + # { (SSTORE 3 1) (SSTORE 4 (CALLER)) (SSTORE 7 (CALLVALUE)) (SSTORE 330 (ADDRESS)) (SSTORE 332 (ORIGIN)) (SSTORE 336 (CALLDATASIZE)) (SSTORE 338 (CODESIZE)) (SSTORE 340 (GASPRICE))} # noqa: E501 + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + + Op.SSTORE(key=0x4, value=Op.CALLER) + + Op.SSTORE(key=0x7, value=Op.CALLVALUE) + + Op.SSTORE(key=0x14A, value=Op.ADDRESS) + + Op.SSTORE(key=0x14C, value=Op.ORIGIN) + + Op.SSTORE(key=0x150, value=Op.CALLDATASIZE) + + Op.SSTORE(key=0x152, value=Op.CODESIZE) + + Op.SSTORE(key=0x154, value=Op.GASPRICE) + + Op.STOP, + nonce=0, + ) + # Source: lll + # { [[ 2 ]] (CALL 250000 2 0 64 0 64 ) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x0, - value=Op.DELEGATECALL( - gas=0x55730, - address=0x3C83297C6DCBC0520CD68714F85DC444469FB287, + key=0x2, + value=Op.CALL( + gas=0x3D090, + address=addr_3, + value=0x2, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -65,7 +77,6 @@ def test_callcodecallcall_100( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xD26E26D5A4796D450BFA296D70C05F02DBC1A4B9), # noqa: E501 ) # Source: lll # { [[ 1 ]] (CALL 300000 1 0 64 0 64 ) (SSTORE 5 (CALLER))} # noqa: E501 @@ -74,7 +85,7 @@ def test_callcodecallcall_100( key=0x1, value=Op.CALL( gas=0x493E0, - address=0x5F6EACDE5A1E97F48C5DB4EE84FDF614F9DD9756, + address=addr_2, value=0x1, args_offset=0x0, args_size=0x40, @@ -86,17 +97,15 @@ def test_callcodecallcall_100( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x3C83297C6DCBC0520CD68714F85DC444469FB287), # noqa: E501 ) # Source: lll - # { [[ 2 ]] (CALL 250000 2 0 64 0 64 ) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 + # { [[ 0 ]] (DELEGATECALL 350000 0 64 0 64 ) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x2, - value=Op.CALL( - gas=0x3D090, - address=0x181B4ED322E192361633CC3C0A418F259AB0CF4B, - value=0x2, + key=0x0, + value=Op.DELEGATECALL( + gas=0x55730, + address=addr, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -106,24 +115,7 @@ def test_callcodecallcall_100( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x5F6EACDE5A1E97F48C5DB4EE84FDF614F9DD9756), # noqa: E501 ) - # Source: lll - # { (SSTORE 3 1) (SSTORE 4 (CALLER)) (SSTORE 7 (CALLVALUE)) (SSTORE 330 (ADDRESS)) (SSTORE 332 (ORIGIN)) (SSTORE 336 (CALLDATASIZE)) (SSTORE 338 (CODESIZE)) (SSTORE 340 (GASPRICE))} # noqa: E501 - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) - + Op.SSTORE(key=0x4, value=Op.CALLER) - + Op.SSTORE(key=0x7, value=Op.CALLVALUE) - + Op.SSTORE(key=0x14A, value=Op.ADDRESS) - + Op.SSTORE(key=0x14C, value=Op.ORIGIN) - + Op.SSTORE(key=0x150, value=Op.CALLDATASIZE) - + Op.SSTORE(key=0x152, value=Op.CODESIZE) - + Op.SSTORE(key=0x154, value=Op.GASPRICE) - + Op.STOP, - nonce=0, - address=Address(0x181B4ED322E192361633CC3C0A418F259AB0CF4B), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, @@ -133,21 +125,15 @@ def test_callcodecallcall_100( ) post = { - target: Account( - storage={ - 0: 1, - 1: 1, - 5: 0xEBAF50DEBF10E08302FE4280C32DF010463CA297, - }, - ), + target: Account(storage={0: 1, 1: 1, 5: sender}), addr_2: Account(storage={2: 1}), addr_3: Account( storage={ 3: 1, - 4: 0x5F6EACDE5A1E97F48C5DB4EE84FDF614F9DD9756, + 4: addr_2, 7: 2, - 330: 0x181B4ED322E192361633CC3C0A418F259AB0CF4B, - 332: 0xEBAF50DEBF10E08302FE4280C32DF010463CA297, + 330: addr_3, + 332: sender, 336: 64, 338: 39, 340: 10, diff --git a/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcall_100_ooge.py b/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcall_100_ooge.py index 69354b1b130..ecd3d7ab292 100644 --- a/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcall_100_ooge.py +++ b/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcall_100_ooge.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcodecallcall_100_ooge( ) -> None: """DELEGATE -> CALL -> CALL -> CODE OOG.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,23 +46,31 @@ def test_callcodecallcall_100_ooge( ) # Source: lll - # { [[ 0 ]] (DELEGATECALL 800000 0 64 0 64 ) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 + # { (SSTORE 3 1) (KECCAK256 0x00 0x2fffff) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + + Op.SHA3(offset=0x0, size=0x2FFFFF) + + Op.STOP, + nonce=0, + ) + # Source: lll + # { [[ 2 ]] (CALL 400000 0 0 64 0 64 ) [[11]] 1 } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x0, - value=Op.DELEGATECALL( - gas=0xC3500, - address=0xBBDCE54B3C571B853032CB3A637E8F5B81DBAF0D, + key=0x2, + value=Op.CALL( + gas=0x61A80, + address=addr_3, + value=0x0, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, ), ) + + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x0E7163A4A90126C4A13E52F48E84C74600E844DA), # noqa: E501 ) # Source: lll # { [[ 1 ]] (CALL 600000 0 0 64 0 64 ) } # noqa: E501 @@ -74,7 +79,7 @@ def test_callcodecallcall_100_ooge( key=0x1, value=Op.CALL( gas=0x927C0, - address=0xB11130CF7EEF6D3F1552623D3506A5BBB07B12CE, + address=addr_2, value=0x0, args_offset=0x0, args_size=0x40, @@ -84,38 +89,25 @@ def test_callcodecallcall_100_ooge( ) + Op.STOP, nonce=0, - address=Address(0xBBDCE54B3C571B853032CB3A637E8F5B81DBAF0D), # noqa: E501 ) # Source: lll - # { [[ 2 ]] (CALL 400000 0 0 64 0 64 ) [[11]] 1 } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 + # { [[ 0 ]] (DELEGATECALL 800000 0 64 0 64 ) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x2, - value=Op.CALL( - gas=0x61A80, - address=0x1DD747F92062BB53BB8E867EC2902792435F1748, - value=0x0, + key=0x0, + value=Op.DELEGATECALL( + gas=0xC3500, + address=addr, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, ), ) - + Op.SSTORE(key=0xB, value=0x1) - + Op.STOP, - nonce=0, - address=Address(0xB11130CF7EEF6D3F1552623D3506A5BBB07B12CE), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) (KECCAK256 0x00 0x2fffff) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) - + Op.SHA3(offset=0x0, size=0x2FFFFF) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x1DD747F92062BB53BB8E867EC2902792435F1748), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcall_100_oogm_after.py b/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcall_100_oogm_after.py index 10b4c1a88f1..53369cc5493 100644 --- a/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcall_100_oogm_after.py +++ b/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcall_100_oogm_after.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcodecallcall_100_oogm_after( ) -> None: """DELEGATE -> (CALL -> CALL -> CODE) OOG.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,24 +46,28 @@ def test_callcodecallcall_100_oogm_after( ) # Source: lll - # { [[ 0 ]] (DELEGATECALL 800000 0 64 0 64 ) [[11]] 1 } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 + # { (SSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + nonce=0, + ) + # Source: lll + # { [[ 2 ]] (CALL 400000 0 0 64 0 64 ) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x0, - value=Op.DELEGATECALL( - gas=0xC3500, - address=0xB5D1A486869D27225126C47727513F57D329A01A, + key=0x2, + value=Op.CALL( + gas=0x61A80, + address=addr_3, + value=0x0, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, ), ) - + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x74ECD5F6537B2B48EBBFF8D66AEE8EB8F98430A3), # noqa: E501 ) # Source: lll # { [[ 1 ]] (CALL 600000 0 0 64 0 64 ) (KECCAK256 0x00 0x2fffff) } # noqa: E501 @@ -75,7 +76,7 @@ def test_callcodecallcall_100_oogm_after( key=0x1, value=Op.CALL( gas=0x927C0, - address=0x8D7270785422B63A97D83BADA6AAC80BEBC3A99D, + address=addr_2, value=0x0, args_offset=0x0, args_size=0x40, @@ -86,35 +87,26 @@ def test_callcodecallcall_100_oogm_after( + Op.SHA3(offset=0x0, size=0x2FFFFF) + Op.STOP, nonce=0, - address=Address(0xB5D1A486869D27225126C47727513F57D329A01A), # noqa: E501 ) # Source: lll - # { [[ 2 ]] (CALL 400000 0 0 64 0 64 ) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 + # { [[ 0 ]] (DELEGATECALL 800000 0 64 0 64 ) [[11]] 1 } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x2, - value=Op.CALL( - gas=0x61A80, - address=0xB126C622075B1189FB6C45E851641CFADDF65B36, - value=0x0, + key=0x0, + value=Op.DELEGATECALL( + gas=0xC3500, + address=addr, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, ), ) + + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x8D7270785422B63A97D83BADA6AAC80BEBC3A99D), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, - nonce=0, - address=Address(0xB126C622075B1189FB6C45E851641CFADDF65B36), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcall_100_oogm_before.py b/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcall_100_oogm_before.py index caf3da961e0..b2020ce01e8 100644 --- a/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcall_100_oogm_before.py +++ b/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcall_100_oogm_before.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcodecallcall_100_oogm_before( ) -> None: """DELEGATE -> CALL -> OOG CALL -> CODE .""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,13 +46,21 @@ def test_callcodecallcall_100_oogm_before( ) # Source: lll - # { [[ 0 ]] (DELEGATECALL 800000 0 64 0 64 ) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.DELEGATECALL( - gas=0xC3500, - address=0x471072D55A5A95044C2326F0E94A6D8DF5B8089E, + # { (SSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + nonce=0, + ) + # Source: lll + # { (KECCAK256 0x00 0x2fffff) [[ 2 ]] (CALL 400000 0 0 64 0 64 ) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.POP(Op.SHA3(offset=0x0, size=0x2FFFFF)) + + Op.SSTORE( + key=0x2, + value=Op.CALL( + gas=0x61A80, + address=addr_3, + value=0x0, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -63,9 +68,7 @@ def test_callcodecallcall_100_oogm_before( ), ) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x0E7163A4A90126C4A13E52F48E84C74600E844DA), # noqa: E501 ) # Source: lll # { [[ 1 ]] (CALL 600000 0 0 64 0 64 ) [[11]] 1 } # noqa: E501 @@ -74,7 +77,7 @@ def test_callcodecallcall_100_oogm_before( key=0x1, value=Op.CALL( gas=0x927C0, - address=0x4A780315E172DB6C0A08FE70FF4362B0E061B668, + address=addr_2, value=0x0, args_offset=0x0, args_size=0x40, @@ -85,18 +88,15 @@ def test_callcodecallcall_100_oogm_before( + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, nonce=0, - address=Address(0x471072D55A5A95044C2326F0E94A6D8DF5B8089E), # noqa: E501 ) # Source: lll - # { (KECCAK256 0x00 0x2fffff) [[ 2 ]] (CALL 400000 0 0 64 0 64 ) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.POP(Op.SHA3(offset=0x0, size=0x2FFFFF)) - + Op.SSTORE( - key=0x2, - value=Op.CALL( - gas=0x61A80, - address=0xB126C622075B1189FB6C45E851641CFADDF65B36, - value=0x0, + # { [[ 0 ]] (DELEGATECALL 800000 0 64 0 64 ) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.DELEGATECALL( + gas=0xC3500, + address=addr, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -104,17 +104,9 @@ def test_callcodecallcall_100_oogm_before( ), ) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x4A780315E172DB6C0A08FE70FF4362B0E061B668), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, - nonce=0, - address=Address(0xB126C622075B1189FB6C45E851641CFADDF65B36), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcall_100_suicide_end.py b/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcall_100_suicide_end.py index 91b43e03733..37c468d6f04 100644 --- a/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcall_100_suicide_end.py +++ b/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcall_100_suicide_end.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcodecallcall_100_suicide_end( ) -> None: """Test_callcodecallcall_100_suicide_end.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -48,6 +45,14 @@ def test_callcodecallcall_100_suicide_end( gas_limit=30000000, ) + # Source: lll + # { (SSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + balance=0x2540BE400, + nonce=0, + address=Address(0x73B954EBC05BB0FF4A0F6A13A054D50AD1584099), # noqa: E501 + ) # Source: lll # { [[ 0 ]] (DELEGATECALL 150000 0 64 0 64 ) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -108,15 +113,6 @@ def test_callcodecallcall_100_suicide_end( nonce=0, address=Address(0xD957E143AD2C011BC6A2B142795F1A9BA70D0680), # noqa: E501 ) - # Source: lll - # { (SSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, - balance=0x2540BE400, - nonce=0, - address=Address(0x73B954EBC05BB0FF4A0F6A13A054D50AD1584099), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcall_100_suicide_middle.py b/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcall_100_suicide_middle.py index 8042f6d2d9d..2a652b6170e 100644 --- a/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcall_100_suicide_middle.py +++ b/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcall_100_suicide_middle.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcodecallcall_100_suicide_middle( ) -> None: """Test_callcodecallcall_100_suicide_middle.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -48,6 +45,14 @@ def test_callcodecallcall_100_suicide_middle( gas_limit=30000000, ) + # Source: lll + # { (SSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + balance=0x2540BE400, + nonce=0, + address=Address(0x73B954EBC05BB0FF4A0F6A13A054D50AD1584099), # noqa: E501 + ) # Source: lll # { [[ 0 ]] (DELEGATECALL 150000 0 64 0 64 ) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -110,15 +115,6 @@ def test_callcodecallcall_100_suicide_middle( nonce=0, address=Address(0xAC90BB4611B91D4C6292BD64E8656110822E01ED), # noqa: E501 ) - # Source: lll - # { (SSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, - balance=0x2540BE400, - nonce=0, - address=Address(0x73B954EBC05BB0FF4A0F6A13A054D50AD1584099), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcallcode_101.py b/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcallcode_101.py index a827215ead4..626025ac0f5 100644 --- a/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcallcode_101.py +++ b/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcallcode_101.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcodecallcallcode_101( ) -> None: """Test_callcodecallcallcode_101.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,23 +46,37 @@ def test_callcodecallcallcode_101( ) # Source: lll - # { [[ 0 ]] (DELEGATECALL 350000 0 64 0 64 ) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 + # { (SSTORE 3 1) (SSTORE 4 (CALLER)) (SSTORE 7 (CALLVALUE)) (SSTORE 330 (ADDRESS)) (SSTORE 332 (ORIGIN)) (SSTORE 336 (CALLDATASIZE)) (SSTORE 338 (CODESIZE)) (SSTORE 340 (GASPRICE))} # noqa: E501 + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + + Op.SSTORE(key=0x4, value=Op.CALLER) + + Op.SSTORE(key=0x7, value=Op.CALLVALUE) + + Op.SSTORE(key=0x14A, value=Op.ADDRESS) + + Op.SSTORE(key=0x14C, value=Op.ORIGIN) + + Op.SSTORE(key=0x150, value=Op.CALLDATASIZE) + + Op.SSTORE(key=0x152, value=Op.CODESIZE) + + Op.SSTORE(key=0x154, value=Op.GASPRICE) + + Op.STOP, + nonce=0, + ) + # Source: lll + # { [[ 2 ]] (DELEGATECALL 250000 0 64 0 64 ) (SSTORE 6 (CALLER)) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x0, + key=0x2, value=Op.DELEGATECALL( - gas=0x55730, - address=0x63F88DCF511E5686BC6B446D10538E665BF81A8, + gas=0x3D090, + address=addr_3, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, ), ) + + Op.SSTORE(key=0x6, value=Op.CALLER) + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xD26E26D5A4796D450BFA296D70C05F02DBC1A4B9), # noqa: E501 ) # Source: lll # { [[ 1 ]] (CALL 300000 1 0 64 0 64 ) (SSTORE 5 (CALLER)) } # noqa: E501 @@ -74,7 +85,7 @@ def test_callcodecallcallcode_101( key=0x1, value=Op.CALL( gas=0x493E0, - address=0xAE5F44E50ECBF16179774393C643204383FDE833, + address=addr_2, value=0x1, args_offset=0x0, args_size=0x40, @@ -86,44 +97,25 @@ def test_callcodecallcallcode_101( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x063F88DCF511E5686BC6B446D10538E665BF81A8), # noqa: E501 ) # Source: lll - # { [[ 2 ]] (DELEGATECALL 250000 0 64 0 64 ) (SSTORE 6 (CALLER)) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 + # { [[ 0 ]] (DELEGATECALL 350000 0 64 0 64 ) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x2, + key=0x0, value=Op.DELEGATECALL( - gas=0x3D090, - address=0x181B4ED322E192361633CC3C0A418F259AB0CF4B, + gas=0x55730, + address=addr, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, ), ) - + Op.SSTORE(key=0x6, value=Op.CALLER) + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xAE5F44E50ECBF16179774393C643204383FDE833), # noqa: E501 ) - # Source: lll - # { (SSTORE 3 1) (SSTORE 4 (CALLER)) (SSTORE 7 (CALLVALUE)) (SSTORE 330 (ADDRESS)) (SSTORE 332 (ORIGIN)) (SSTORE 336 (CALLDATASIZE)) (SSTORE 338 (CODESIZE)) (SSTORE 340 (GASPRICE))} # noqa: E501 - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) - + Op.SSTORE(key=0x4, value=Op.CALLER) - + Op.SSTORE(key=0x7, value=Op.CALLVALUE) - + Op.SSTORE(key=0x14A, value=Op.ADDRESS) - + Op.SSTORE(key=0x14C, value=Op.ORIGIN) - + Op.SSTORE(key=0x150, value=Op.CALLDATASIZE) - + Op.SSTORE(key=0x152, value=Op.CODESIZE) - + Op.SSTORE(key=0x154, value=Op.GASPRICE) - + Op.STOP, - nonce=0, - address=Address(0x181B4ED322E192361633CC3C0A418F259AB0CF4B), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, @@ -133,23 +125,17 @@ def test_callcodecallcallcode_101( ) post = { - target: Account( - storage={ - 0: 1, - 1: 1, - 5: 0xEBAF50DEBF10E08302FE4280C32DF010463CA297, - }, - ), + target: Account(storage={0: 1, 1: 1, 5: sender}), addr: Account(storage={1: 0, 2: 0}), addr_2: Account( storage={ 2: 1, 3: 1, - 4: 0xD26E26D5A4796D450BFA296D70C05F02DBC1A4B9, - 6: 0xD26E26D5A4796D450BFA296D70C05F02DBC1A4B9, + 4: target, + 6: target, 7: 1, - 330: 0xAE5F44E50ECBF16179774393C643204383FDE833, - 332: 0xEBAF50DEBF10E08302FE4280C32DF010463CA297, + 330: addr_2, + 332: sender, 336: 64, 338: 39, 340: 10, diff --git a/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcallcode_101_ooge.py b/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcallcode_101_ooge.py index 8f533bad735..7cb6eac1873 100644 --- a/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcallcode_101_ooge.py +++ b/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcallcode_101_ooge.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcodecallcallcode_101_ooge( ) -> None: """DELEGATE -> CALL -> DELEGATE -> CODE OOG.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,23 +46,30 @@ def test_callcodecallcallcode_101_ooge( ) # Source: lll - # { [[ 0 ]] (DELEGATECALL 800000 0 64 0 64 ) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 + # { (SSTORE 3 1) (KECCAK256 0x00 0x2fffff) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + + Op.SHA3(offset=0x0, size=0x2FFFFF) + + Op.STOP, + nonce=0, + ) + # Source: lll + # { [[ 2 ]] (DELEGATECALL 400000 0 64 0 64 ) [[11]] 1 } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x0, + key=0x2, value=Op.DELEGATECALL( - gas=0xC3500, - address=0xBBDCE54B3C571B853032CB3A637E8F5B81DBAF0D, + gas=0x61A80, + address=addr_3, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, ), ) + + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x0E7163A4A90126C4A13E52F48E84C74600E844DA), # noqa: E501 ) # Source: lll # { [[ 1 ]] (CALL 600000 0 0 64 0 64 ) } # noqa: E501 @@ -74,7 +78,7 @@ def test_callcodecallcallcode_101_ooge( key=0x1, value=Op.CALL( gas=0x927C0, - address=0x3E423A7B1FBA04D0C3F9423A3AE2A180D2878D5B, + address=addr_2, value=0x0, args_offset=0x0, args_size=0x40, @@ -84,37 +88,25 @@ def test_callcodecallcallcode_101_ooge( ) + Op.STOP, nonce=0, - address=Address(0xBBDCE54B3C571B853032CB3A637E8F5B81DBAF0D), # noqa: E501 ) # Source: lll - # { [[ 2 ]] (DELEGATECALL 400000 0 64 0 64 ) [[11]] 1 } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 + # { [[ 0 ]] (DELEGATECALL 800000 0 64 0 64 ) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x2, + key=0x0, value=Op.DELEGATECALL( - gas=0x61A80, - address=0x1DD747F92062BB53BB8E867EC2902792435F1748, + gas=0xC3500, + address=addr, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, ), ) - + Op.SSTORE(key=0xB, value=0x1) - + Op.STOP, - nonce=0, - address=Address(0x3E423A7B1FBA04D0C3F9423A3AE2A180D2878D5B), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) (KECCAK256 0x00 0x2fffff) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) - + Op.SHA3(offset=0x0, size=0x2FFFFF) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x1DD747F92062BB53BB8E867EC2902792435F1748), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcallcode_101_oogm_after.py b/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcallcode_101_oogm_after.py index ada29bdd72e..74bb7a20506 100644 --- a/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcallcode_101_oogm_after.py +++ b/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcallcode_101_oogm_after.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcodecallcallcode_101_oogm_after( ) -> None: """DELEGATE -> (CALL -> DELEGATE -> CODE) OOG.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,24 +46,27 @@ def test_callcodecallcallcode_101_oogm_after( ) # Source: lll - # { [[ 0 ]] (DELEGATECALL 800000 0 64 0 64 ) [[11]] 1 } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 + # { (SSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + nonce=0, + ) + # Source: lll + # { [[ 2 ]] (DELEGATECALL 400000 0 64 0 64 ) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x0, + key=0x2, value=Op.DELEGATECALL( - gas=0xC3500, - address=0xB5D1A486869D27225126C47727513F57D329A01A, + gas=0x61A80, + address=addr_3, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, ), ) - + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x74ECD5F6537B2B48EBBFF8D66AEE8EB8F98430A3), # noqa: E501 ) # Source: lll # { [[ 1 ]] (CALL 600000 0 0 64 0 64 ) (KECCAK256 0x00 0x2fffff) } # noqa: E501 @@ -75,7 +75,7 @@ def test_callcodecallcallcode_101_oogm_after( key=0x1, value=Op.CALL( gas=0x927C0, - address=0xDA11FDF0CE02240C6B4711F56AFCD9763B44D3DC, + address=addr_2, value=0x0, args_offset=0x0, args_size=0x40, @@ -86,34 +86,26 @@ def test_callcodecallcallcode_101_oogm_after( + Op.SHA3(offset=0x0, size=0x2FFFFF) + Op.STOP, nonce=0, - address=Address(0xB5D1A486869D27225126C47727513F57D329A01A), # noqa: E501 ) # Source: lll - # { [[ 2 ]] (DELEGATECALL 400000 0 64 0 64 ) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 + # { [[ 0 ]] (DELEGATECALL 800000 0 64 0 64 ) [[11]] 1 } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x2, + key=0x0, value=Op.DELEGATECALL( - gas=0x61A80, - address=0xB126C622075B1189FB6C45E851641CFADDF65B36, + gas=0xC3500, + address=addr, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, ), ) + + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xDA11FDF0CE02240C6B4711F56AFCD9763B44D3DC), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, - nonce=0, - address=Address(0xB126C622075B1189FB6C45E851641CFADDF65B36), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcallcode_101_oogm_before.py b/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcallcode_101_oogm_before.py index 4edab8fa54d..1e145c9cbf4 100644 --- a/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcallcode_101_oogm_before.py +++ b/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcallcode_101_oogm_before.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcodecallcallcode_101_oogm_before( ) -> None: """DELEGATE -> CALL -> OOG DELEGATE -> CODE.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,13 +46,20 @@ def test_callcodecallcallcode_101_oogm_before( ) # Source: lll - # { [[ 0 ]] (DELEGATECALL 800000 0 64 0 64 ) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, + # { (SSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + nonce=0, + ) + # Source: lll + # { (KECCAK256 0x00 0x2fffff) [[ 2 ]] (DELEGATECALL 400000 0 64 0 64 ) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.POP(Op.SHA3(offset=0x0, size=0x2FFFFF)) + + Op.SSTORE( + key=0x2, value=Op.DELEGATECALL( - gas=0xC3500, - address=0x471072D55A5A95044C2326F0E94A6D8DF5B8089E, + gas=0x61A80, + address=addr_3, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -63,9 +67,7 @@ def test_callcodecallcallcode_101_oogm_before( ), ) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x0E7163A4A90126C4A13E52F48E84C74600E844DA), # noqa: E501 ) # Source: lll # { [[ 1 ]] (CALL 600000 0 0 64 0 64 ) [[11]] 1 } # noqa: E501 @@ -74,7 +76,7 @@ def test_callcodecallcallcode_101_oogm_before( key=0x1, value=Op.CALL( gas=0x927C0, - address=0x2640FCBA4A90A13A6438EED47FAFBD5D59ECBC47, + address=addr_2, value=0x0, args_offset=0x0, args_size=0x40, @@ -85,17 +87,15 @@ def test_callcodecallcallcode_101_oogm_before( + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, nonce=0, - address=Address(0x471072D55A5A95044C2326F0E94A6D8DF5B8089E), # noqa: E501 ) # Source: lll - # { (KECCAK256 0x00 0x2fffff) [[ 2 ]] (DELEGATECALL 400000 0 64 0 64 ) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.POP(Op.SHA3(offset=0x0, size=0x2FFFFF)) - + Op.SSTORE( - key=0x2, + # { [[ 0 ]] (DELEGATECALL 800000 0 64 0 64 ) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, value=Op.DELEGATECALL( - gas=0x61A80, - address=0xB126C622075B1189FB6C45E851641CFADDF65B36, + gas=0xC3500, + address=addr, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -103,17 +103,9 @@ def test_callcodecallcallcode_101_oogm_before( ), ) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x2640FCBA4A90A13A6438EED47FAFBD5D59ECBC47), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, - nonce=0, - address=Address(0xB126C622075B1189FB6C45E851641CFADDF65B36), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcallcode_101_suicide_end.py b/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcallcode_101_suicide_end.py index 58e4ae8b72d..af4852ff563 100644 --- a/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcallcode_101_suicide_end.py +++ b/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcallcode_101_suicide_end.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcodecallcallcode_101_suicide_end( ) -> None: """Test_callcodecallcallcode_101_suicide_end.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -48,6 +45,14 @@ def test_callcodecallcallcode_101_suicide_end( gas_limit=30000000, ) + # Source: lll + # { (SSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + balance=0x2540BE400, + nonce=0, + address=Address(0x73B954EBC05BB0FF4A0F6A13A054D50AD1584099), # noqa: E501 + ) # Source: lll # { [[ 0 ]] (DELEGATECALL 150000 0 64 0 64 ) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -107,15 +112,6 @@ def test_callcodecallcallcode_101_suicide_end( nonce=0, address=Address(0xAC521409E2FA9526BFE6B827805783D2E307C4CE), # noqa: E501 ) - # Source: lll - # { (SSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, - balance=0x2540BE400, - nonce=0, - address=Address(0x73B954EBC05BB0FF4A0F6A13A054D50AD1584099), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcallcode_101_suicide_middle.py b/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcallcode_101_suicide_middle.py index 4b57701e1e9..5ff96f90136 100644 --- a/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcallcode_101_suicide_middle.py +++ b/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcallcode_101_suicide_middle.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -39,9 +38,7 @@ def test_callcodecallcallcode_101_suicide_middle( contract_1 = Address(0x1000000000000000000000000000000000000001) contract_2 = Address(0x1000000000000000000000000000000000000002) contract_3 = Address(0x1000000000000000000000000000000000000003) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -52,6 +49,14 @@ def test_callcodecallcallcode_101_suicide_middle( gas_limit=30000000, ) + # Source: lll + # { (SSTORE 3 1) } + contract_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + balance=0x2540BE400, + nonce=0, + address=Address(0x1000000000000000000000000000000000000003), # noqa: E501 + ) # Source: lll # { [[ 0 ]] (DELEGATECALL 150000 0x1000000000000000000000000000000000000001 0 64 0 64 ) } # noqa: E501 contract_0 = pre.deploy_contract( # noqa: F841 @@ -113,15 +118,6 @@ def test_callcodecallcallcode_101_suicide_middle( nonce=0, address=Address(0x1000000000000000000000000000000000000002), # noqa: E501 ) - # Source: lll - # { (SSTORE 3 1) } - contract_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, - balance=0x2540BE400, - nonce=0, - address=Address(0x1000000000000000000000000000000000000003), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcode_11.py b/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcode_11.py index 4ed95f6bb46..bc8e57b4105 100644 --- a/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcode_11.py +++ b/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcode_11.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcodecallcode_11( ) -> None: """Test_callcodecallcode_11.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,23 +46,18 @@ def test_callcodecallcode_11( ) # Source: lll - # { [[ 0 ]] (DELEGATECALL 350000 0 64 0 64 ) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.DELEGATECALL( - gas=0x55730, - address=0x2B0691CD58A1CF4628D642E9ACA9AB04946E3EC9, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ), - ) + # { (SSTORE 2 1) (SSTORE 4 (CALLER)) (SSTORE 7 (CALLVALUE)) (SSTORE 230 (ADDRESS)) (SSTORE 232 (ORIGIN)) (SSTORE 236 (CALLDATASIZE)) (SSTORE 238 (CODESIZE)) (SSTORE 240 (GASPRICE)) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x2, value=0x1) + + Op.SSTORE(key=0x4, value=Op.CALLER) + + Op.SSTORE(key=0x7, value=Op.CALLVALUE) + + Op.SSTORE(key=0xE6, value=Op.ADDRESS) + + Op.SSTORE(key=0xE8, value=Op.ORIGIN) + + Op.SSTORE(key=0xEC, value=Op.CALLDATASIZE) + + Op.SSTORE(key=0xEE, value=Op.CODESIZE) + + Op.SSTORE(key=0xF0, value=Op.GASPRICE) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xD26E26D5A4796D450BFA296D70C05F02DBC1A4B9), # noqa: E501 ) # Source: lll # { [[ 1 ]] (DELEGATECALL 250000 0 64 0 64 ) } # noqa: E501 @@ -74,7 +66,7 @@ def test_callcodecallcode_11( key=0x1, value=Op.DELEGATECALL( gas=0x3D090, - address=0xCB4336321FAC69281BD2902D427F4EF9E8584251, + address=addr_2, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -83,24 +75,25 @@ def test_callcodecallcode_11( ) + Op.STOP, nonce=0, - address=Address(0x2B0691CD58A1CF4628D642E9ACA9AB04946E3EC9), # noqa: E501 ) # Source: lll - # { (SSTORE 2 1) (SSTORE 4 (CALLER)) (SSTORE 7 (CALLVALUE)) (SSTORE 230 (ADDRESS)) (SSTORE 232 (ORIGIN)) (SSTORE 236 (CALLDATASIZE)) (SSTORE 238 (CODESIZE)) (SSTORE 240 (GASPRICE)) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x2, value=0x1) - + Op.SSTORE(key=0x4, value=Op.CALLER) - + Op.SSTORE(key=0x7, value=Op.CALLVALUE) - + Op.SSTORE(key=0xE6, value=Op.ADDRESS) - + Op.SSTORE(key=0xE8, value=Op.ORIGIN) - + Op.SSTORE(key=0xEC, value=Op.CALLDATASIZE) - + Op.SSTORE(key=0xEE, value=Op.CODESIZE) - + Op.SSTORE(key=0xF0, value=Op.GASPRICE) + # { [[ 0 ]] (DELEGATECALL 350000 0 64 0 64 ) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.DELEGATECALL( + gas=0x55730, + address=addr, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ), + ) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xCB4336321FAC69281BD2902D427F4EF9E8584251), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, @@ -115,9 +108,9 @@ def test_callcodecallcode_11( 0: 1, 1: 1, 2: 1, - 4: 0xEBAF50DEBF10E08302FE4280C32DF010463CA297, - 230: 0xD26E26D5A4796D450BFA296D70C05F02DBC1A4B9, - 232: 0xEBAF50DEBF10E08302FE4280C32DF010463CA297, + 4: sender, + 230: target, + 232: sender, 236: 64, 238: 34, 240: 10, diff --git a/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcode_11_ooge.py b/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcode_11_ooge.py index e4affe72a3c..3211880c454 100644 --- a/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcode_11_ooge.py +++ b/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcode_11_ooge.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcodecallcode_11_ooge( ) -> None: """DELEGATE -> DELEGATE -> CODE OOG.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,23 +46,12 @@ def test_callcodecallcode_11_ooge( ) # Source: lll - # { [[ 0 ]] (DELEGATECALL 800000 0 64 0 64 ) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.DELEGATECALL( - gas=0xC3500, - address=0xECB18A704984B0E051E46358D64EF7811F2945BA, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ), - ) + # { (SSTORE 2 1) (KECCAK256 0x00 0x2fffff) } + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x2, value=0x1) + + Op.SHA3(offset=0x0, size=0x2FFFFF) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x0E7163A4A90126C4A13E52F48E84C74600E844DA), # noqa: E501 ) # Source: lll # { [[ 1 ]] (DELEGATECALL 600000 0 64 0 64 ) [[11]] 1} # noqa: E501 @@ -74,7 +60,7 @@ def test_callcodecallcode_11_ooge( key=0x1, value=Op.DELEGATECALL( gas=0x927C0, - address=0x766B2CF0691F51029181FC511395B7AB71353A88, + address=addr_2, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -84,18 +70,25 @@ def test_callcodecallcode_11_ooge( + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, nonce=0, - address=Address(0xECB18A704984B0E051E46358D64EF7811F2945BA), # noqa: E501 ) # Source: lll - # { (SSTORE 2 1) (KECCAK256 0x00 0x2fffff) } - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x2, value=0x1) - + Op.SHA3(offset=0x0, size=0x2FFFFF) + # { [[ 0 ]] (DELEGATECALL 800000 0 64 0 64 ) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.DELEGATECALL( + gas=0xC3500, + address=addr, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ), + ) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x766B2CF0691F51029181FC511395B7AB71353A88), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcode_11_suicide_end.py b/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcode_11_suicide_end.py index 5c43845f10c..4675d8f476b 100644 --- a/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcode_11_suicide_end.py +++ b/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcode_11_suicide_end.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcodecallcode_11_suicide_end( ) -> None: """Test_callcodecallcode_11_suicide_end.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -48,6 +45,14 @@ def test_callcodecallcode_11_suicide_end( gas_limit=30000000, ) + # Source: lll + # { (SSTORE 2 1) } + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x2, value=0x1) + Op.STOP, + balance=0x2540BE400, + nonce=0, + address=Address(0x703B936FD4D674F0FF5D6957F61097152F8781B8), # noqa: E501 + ) # Source: lll # { [[ 0 ]] (DELEGATECALL 150000 0 64 0 64 ) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -87,15 +92,6 @@ def test_callcodecallcode_11_suicide_end( nonce=0, address=Address(0x1CCA6E93108EC94304AE5EB121D323E6C317FE7A), # noqa: E501 ) - # Source: lll - # { (SSTORE 2 1) } - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x2, value=0x1) + Op.STOP, - balance=0x2540BE400, - nonce=0, - address=Address(0x703B936FD4D674F0FF5D6957F61097152F8781B8), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcodecall_110.py b/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcodecall_110.py index d4f927d755d..6ff719a5e6c 100644 --- a/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcodecall_110.py +++ b/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcodecall_110.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcodecallcodecall_110( ) -> None: """Test_callcodecallcodecall_110.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,23 +46,38 @@ def test_callcodecallcodecall_110( ) # Source: lll - # { [[ 0 ]] (DELEGATECALL 350000 0 64 0 64 ) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 + # { (SSTORE 3 1) (SSTORE 4 (CALLER)) (SSTORE 7 (CALLVALUE)) (SSTORE 330 (ADDRESS)) (SSTORE 332 (ORIGIN)) (SSTORE 336 (CALLDATASIZE)) (SSTORE 338 (CODESIZE)) (SSTORE 340 (GASPRICE)) } # noqa: E501 + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + + Op.SSTORE(key=0x4, value=Op.CALLER) + + Op.SSTORE(key=0x7, value=Op.CALLVALUE) + + Op.SSTORE(key=0x14A, value=Op.ADDRESS) + + Op.SSTORE(key=0x14C, value=Op.ORIGIN) + + Op.SSTORE(key=0x150, value=Op.CALLDATASIZE) + + Op.SSTORE(key=0x152, value=Op.CODESIZE) + + Op.SSTORE(key=0x154, value=Op.GASPRICE) + + Op.STOP, + nonce=0, + ) + # Source: lll + # { [[ 2 ]] (CALL 250000 1 0 64 0 64 ) (SSTORE 6 (CALLER))} # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x0, - value=Op.DELEGATECALL( - gas=0x55730, - address=0x669E33B1AA30351139B73C3942ACDE1B09E75BCD, + key=0x2, + value=Op.CALL( + gas=0x3D090, + address=addr_3, + value=0x1, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, ), ) + + Op.SSTORE(key=0x6, value=Op.CALLER) + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xD26E26D5A4796D450BFA296D70C05F02DBC1A4B9), # noqa: E501 ) # Source: lll # { [[ 1 ]] (DELEGATECALL 300000 0 64 0 64 ) (SSTORE 5 (CALLER))} # noqa: E501 @@ -74,7 +86,7 @@ def test_callcodecallcodecall_110( key=0x1, value=Op.DELEGATECALL( gas=0x493E0, - address=0x78B5BD809B0B6FE0B8E371F286D7AA6A3B930718, + address=addr_2, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -85,45 +97,25 @@ def test_callcodecallcodecall_110( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x669E33B1AA30351139B73C3942ACDE1B09E75BCD), # noqa: E501 ) # Source: lll - # { [[ 2 ]] (CALL 250000 1 0 64 0 64 ) (SSTORE 6 (CALLER))} # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 + # { [[ 0 ]] (DELEGATECALL 350000 0 64 0 64 ) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x2, - value=Op.CALL( - gas=0x3D090, - address=0x7E63847AAD8CA50FB7C04777DCE6871A6BF8DE0C, - value=0x1, + key=0x0, + value=Op.DELEGATECALL( + gas=0x55730, + address=addr, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, ), ) - + Op.SSTORE(key=0x6, value=Op.CALLER) + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x78B5BD809B0B6FE0B8E371F286D7AA6A3B930718), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) (SSTORE 4 (CALLER)) (SSTORE 7 (CALLVALUE)) (SSTORE 330 (ADDRESS)) (SSTORE 332 (ORIGIN)) (SSTORE 336 (CALLDATASIZE)) (SSTORE 338 (CODESIZE)) (SSTORE 340 (GASPRICE)) } # noqa: E501 - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) - + Op.SSTORE(key=0x4, value=Op.CALLER) - + Op.SSTORE(key=0x7, value=Op.CALLVALUE) - + Op.SSTORE(key=0x14A, value=Op.ADDRESS) - + Op.SSTORE(key=0x14C, value=Op.ORIGIN) - + Op.SSTORE(key=0x150, value=Op.CALLDATASIZE) - + Op.SSTORE(key=0x152, value=Op.CODESIZE) - + Op.SSTORE(key=0x154, value=Op.GASPRICE) - + Op.STOP, - nonce=0, - address=Address(0x7E63847AAD8CA50FB7C04777DCE6871A6BF8DE0C), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, @@ -133,22 +125,14 @@ def test_callcodecallcodecall_110( ) post = { - target: Account( - storage={ - 0: 1, - 1: 1, - 2: 1, - 5: 0xEBAF50DEBF10E08302FE4280C32DF010463CA297, - 6: 0xEBAF50DEBF10E08302FE4280C32DF010463CA297, - }, - ), + target: Account(storage={0: 1, 1: 1, 2: 1, 5: sender, 6: sender}), addr_3: Account( storage={ 3: 1, - 4: 0xD26E26D5A4796D450BFA296D70C05F02DBC1A4B9, + 4: target, 7: 1, - 330: 0x7E63847AAD8CA50FB7C04777DCE6871A6BF8DE0C, - 332: 0xEBAF50DEBF10E08302FE4280C32DF010463CA297, + 330: addr_3, + 332: sender, 336: 64, 338: 39, 340: 10, diff --git a/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcodecall_110_ooge.py b/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcodecall_110_ooge.py index 6d9d3a49b4d..4ef197b46b0 100644 --- a/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcodecall_110_ooge.py +++ b/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcodecall_110_ooge.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcodecallcodecall_110_ooge( ) -> None: """DELEGATE -> DELEGATE -> CALL -> CODE OOG.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,23 +46,31 @@ def test_callcodecallcodecall_110_ooge( ) # Source: lll - # { [[ 0 ]] (DELEGATECALL 800000 0 64 0 64 ) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 + # { (SSTORE 3 1) (KECCAK256 0x00 0x2fffff) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + + Op.SHA3(offset=0x0, size=0x2FFFFF) + + Op.STOP, + nonce=0, + ) + # Source: lll + # { [[ 2 ]] (CALL 400000 0 0 64 0 64 ) [[11]] 1 } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x0, - value=Op.DELEGATECALL( - gas=0xC3500, - address=0x69A0017A51AD556682F48B32235D0B61ABDF4DA4, + key=0x2, + value=Op.CALL( + gas=0x61A80, + address=addr_3, + value=0x0, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, ), ) + + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x0E7163A4A90126C4A13E52F48E84C74600E844DA), # noqa: E501 ) # Source: lll # { [[ 1 ]] (DELEGATECALL 600000 0 64 0 64 ) } # noqa: E501 @@ -74,7 +79,7 @@ def test_callcodecallcodecall_110_ooge( key=0x1, value=Op.DELEGATECALL( gas=0x927C0, - address=0xB11130CF7EEF6D3F1552623D3506A5BBB07B12CE, + address=addr_2, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -83,38 +88,25 @@ def test_callcodecallcodecall_110_ooge( ) + Op.STOP, nonce=0, - address=Address(0x69A0017A51AD556682F48B32235D0B61ABDF4DA4), # noqa: E501 ) # Source: lll - # { [[ 2 ]] (CALL 400000 0 0 64 0 64 ) [[11]] 1 } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 + # { [[ 0 ]] (DELEGATECALL 800000 0 64 0 64 ) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x2, - value=Op.CALL( - gas=0x61A80, - address=0x1DD747F92062BB53BB8E867EC2902792435F1748, - value=0x0, + key=0x0, + value=Op.DELEGATECALL( + gas=0xC3500, + address=addr, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, ), ) - + Op.SSTORE(key=0xB, value=0x1) - + Op.STOP, - nonce=0, - address=Address(0xB11130CF7EEF6D3F1552623D3506A5BBB07B12CE), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) (KECCAK256 0x00 0x2fffff) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) - + Op.SHA3(offset=0x0, size=0x2FFFFF) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x1DD747F92062BB53BB8E867EC2902792435F1748), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcodecall_110_oogm_after.py b/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcodecall_110_oogm_after.py index 8ced610a466..1c133ee31b4 100644 --- a/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcodecall_110_oogm_after.py +++ b/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcodecall_110_oogm_after.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcodecallcodecall_110_oogm_after( ) -> None: """DELEGATE -> (DELEGATE -> CALL -> CODE) OOG.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,24 +46,28 @@ def test_callcodecallcodecall_110_oogm_after( ) # Source: lll - # { [[ 0 ]] (DELEGATECALL 800000 0 64 0 64 ) [[11]] 1 } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 + # { (SSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + nonce=0, + ) + # Source: lll + # { [[ 2 ]] (CALL 400000 0 0 64 0 64 ) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x0, - value=Op.DELEGATECALL( - gas=0xC3500, - address=0x1ADAE71AD3AEEC97978E38BE04DA2A1773DFC506, + key=0x2, + value=Op.CALL( + gas=0x61A80, + address=addr_3, + value=0x0, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, ), ) - + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x74ECD5F6537B2B48EBBFF8D66AEE8EB8F98430A3), # noqa: E501 ) # Source: lll # { [[ 1 ]] (DELEGATECALL 600000 0 64 0 64 ) (KECCAK256 0x00 0x2fffff) } # noqa: E501 @@ -75,7 +76,7 @@ def test_callcodecallcodecall_110_oogm_after( key=0x1, value=Op.DELEGATECALL( gas=0x927C0, - address=0x83B7D129B58AB5315B795F9A8D34294EC60C9D63, + address=addr_2, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -85,35 +86,26 @@ def test_callcodecallcodecall_110_oogm_after( + Op.SHA3(offset=0x0, size=0x2FFFFF) + Op.STOP, nonce=0, - address=Address(0x1ADAE71AD3AEEC97978E38BE04DA2A1773DFC506), # noqa: E501 ) # Source: lll - # { [[ 2 ]] (CALL 400000 0 0 64 0 64 ) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 + # { [[ 0 ]] (DELEGATECALL 800000 0 64 0 64 ) [[11]] 1 } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x2, - value=Op.CALL( - gas=0x61A80, - address=0xB126C622075B1189FB6C45E851641CFADDF65B36, - value=0x0, + key=0x0, + value=Op.DELEGATECALL( + gas=0xC3500, + address=addr, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, ), ) + + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x83B7D129B58AB5315B795F9A8D34294EC60C9D63), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, - nonce=0, - address=Address(0xB126C622075B1189FB6C45E851641CFADDF65B36), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcodecall_110_oogm_before.py b/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcodecall_110_oogm_before.py index cf5d70c0265..fa9b7278710 100644 --- a/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcodecall_110_oogm_before.py +++ b/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcodecall_110_oogm_before.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcodecallcodecall_110_oogm_before( ) -> None: """DELEGATE -> DELEGATE -> OOG CALL -> CODE.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,13 +46,21 @@ def test_callcodecallcodecall_110_oogm_before( ) # Source: lll - # { [[ 0 ]] (DELEGATECALL 800000 0 64 0 64 ) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.DELEGATECALL( - gas=0xC3500, - address=0x29F893B720E998CCD5971409FA9A8802822FDCBC, + # { (SSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + nonce=0, + ) + # Source: lll + # { (KECCAK256 0x00 0x2fffff) [[ 2 ]] (CALL 400000 0 0 64 0 64 ) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.POP(Op.SHA3(offset=0x0, size=0x2FFFFF)) + + Op.SSTORE( + key=0x2, + value=Op.CALL( + gas=0x61A80, + address=addr_3, + value=0x0, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -63,9 +68,7 @@ def test_callcodecallcodecall_110_oogm_before( ), ) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x0E7163A4A90126C4A13E52F48E84C74600E844DA), # noqa: E501 ) # Source: lll # { [[ 1 ]] (DELEGATECALL 600000 0 64 0 64 ) [[11]] 1 } # noqa: E501 @@ -74,7 +77,7 @@ def test_callcodecallcodecall_110_oogm_before( key=0x1, value=Op.DELEGATECALL( gas=0x927C0, - address=0x51A61D678EC27711369C527E5D42A9DE66A5727F, + address=addr_2, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -84,18 +87,15 @@ def test_callcodecallcodecall_110_oogm_before( + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, nonce=0, - address=Address(0x29F893B720E998CCD5971409FA9A8802822FDCBC), # noqa: E501 ) # Source: lll - # { (KECCAK256 0x00 0x2fffff) [[ 2 ]] (CALL 400000 0 0 64 0 64 ) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.POP(Op.SHA3(offset=0x0, size=0x2FFFFF)) - + Op.SSTORE( - key=0x2, - value=Op.CALL( - gas=0x61A80, - address=0xB126C622075B1189FB6C45E851641CFADDF65B36, - value=0x0, + # { [[ 0 ]] (DELEGATECALL 800000 0 64 0 64 ) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.DELEGATECALL( + gas=0xC3500, + address=addr, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -103,17 +103,9 @@ def test_callcodecallcodecall_110_oogm_before( ), ) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x51A61D678EC27711369C527E5D42A9DE66A5727F), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, - nonce=0, - address=Address(0xB126C622075B1189FB6C45E851641CFADDF65B36), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcodecall_110_suicide_end.py b/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcodecall_110_suicide_end.py index 1d53a3f34f7..1c41be7b462 100644 --- a/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcodecall_110_suicide_end.py +++ b/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcodecall_110_suicide_end.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcodecallcodecall_110_suicide_end( ) -> None: """Test_callcodecallcodecall_110_suicide_end.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -48,6 +45,14 @@ def test_callcodecallcodecall_110_suicide_end( gas_limit=30000000, ) + # Source: lll + # { (SSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + balance=0x2540BE400, + nonce=0, + address=Address(0x73B954EBC05BB0FF4A0F6A13A054D50AD1584099), # noqa: E501 + ) # Source: lll # { [[ 0 ]] (DELEGATECALL 150000 0 64 0 64 ) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -107,15 +112,6 @@ def test_callcodecallcodecall_110_suicide_end( nonce=0, address=Address(0xD957E143AD2C011BC6A2B142795F1A9BA70D0680), # noqa: E501 ) - # Source: lll - # { (SSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, - balance=0x2540BE400, - nonce=0, - address=Address(0x73B954EBC05BB0FF4A0F6A13A054D50AD1584099), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcodecall_110_suicide_middle.py b/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcodecall_110_suicide_middle.py index a36ca0c3fd4..30952c011df 100644 --- a/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcodecall_110_suicide_middle.py +++ b/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcodecall_110_suicide_middle.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcodecallcodecall_110_suicide_middle( ) -> None: """Test_callcodecallcodecall_110_suicide_middle.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -48,6 +45,14 @@ def test_callcodecallcodecall_110_suicide_middle( gas_limit=30000000, ) + # Source: lll + # { (SSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + balance=0x2540BE400, + nonce=0, + address=Address(0x73B954EBC05BB0FF4A0F6A13A054D50AD1584099), # noqa: E501 + ) # Source: lll # { [[ 0 ]] (DELEGATECALL 150000 0 64 0 64 ) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -109,15 +114,6 @@ def test_callcodecallcodecall_110_suicide_middle( nonce=0, address=Address(0xAC90BB4611B91D4C6292BD64E8656110822E01ED), # noqa: E501 ) - # Source: lll - # { (SSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, - balance=0x2540BE400, - nonce=0, - address=Address(0x73B954EBC05BB0FF4A0F6A13A054D50AD1584099), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcodecallcode_111.py b/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcodecallcode_111.py index 3f7bb7777aa..79b74221b0c 100644 --- a/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcodecallcode_111.py +++ b/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcodecallcode_111.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcodecallcodecallcode_111( ) -> None: """Test_callcodecallcodecallcode_111.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,13 +46,27 @@ def test_callcodecallcodecallcode_111( ) # Source: lll - # { [[ 0 ]] (DELEGATECALL 350000 0 64 0 64 ) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 + # { (SSTORE 3 1) (SSTORE 4 (CALLER)) (SSTORE 7 (CALLVALUE)) (SSTORE 330 (ADDRESS)) (SSTORE 332 (ORIGIN)) (SSTORE 336 (CALLDATASIZE)) (SSTORE 338 (CODESIZE)) (SSTORE 340 (GASPRICE)) } # noqa: E501 + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + + Op.SSTORE(key=0x4, value=Op.CALLER) + + Op.SSTORE(key=0x7, value=Op.CALLVALUE) + + Op.SSTORE(key=0x14A, value=Op.ADDRESS) + + Op.SSTORE(key=0x14C, value=Op.ORIGIN) + + Op.SSTORE(key=0x150, value=Op.CALLDATASIZE) + + Op.SSTORE(key=0x152, value=Op.CODESIZE) + + Op.SSTORE(key=0x154, value=Op.GASPRICE) + + Op.STOP, + nonce=0, + ) + # Source: lll + # { [[ 2 ]] (DELEGATECALL 250000 0 64 0 64 ) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x0, + key=0x2, value=Op.DELEGATECALL( - gas=0x55730, - address=0xFED08E44AE95ECE264BC94A1FC45AF8BC4EF4F1D, + gas=0x3D090, + address=addr_3, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -65,7 +76,6 @@ def test_callcodecallcodecallcode_111( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xD26E26D5A4796D450BFA296D70C05F02DBC1A4B9), # noqa: E501 ) # Source: lll # { [[ 1 ]] (DELEGATECALL 300000 0 64 0 64 ) } # noqa: E501 @@ -74,7 +84,7 @@ def test_callcodecallcodecallcode_111( key=0x1, value=Op.DELEGATECALL( gas=0x493E0, - address=0x6F50426AA1BBB3CBD865847823F377D918757C07, + address=addr_2, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -84,16 +94,15 @@ def test_callcodecallcodecallcode_111( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xFED08E44AE95ECE264BC94A1FC45AF8BC4EF4F1D), # noqa: E501 ) # Source: lll - # { [[ 2 ]] (DELEGATECALL 250000 0 64 0 64 ) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 + # { [[ 0 ]] (DELEGATECALL 350000 0 64 0 64 ) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x2, + key=0x0, value=Op.DELEGATECALL( - gas=0x3D090, - address=0x7E63847AAD8CA50FB7C04777DCE6871A6BF8DE0C, + gas=0x55730, + address=addr, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -103,24 +112,7 @@ def test_callcodecallcodecallcode_111( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x6F50426AA1BBB3CBD865847823F377D918757C07), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) (SSTORE 4 (CALLER)) (SSTORE 7 (CALLVALUE)) (SSTORE 330 (ADDRESS)) (SSTORE 332 (ORIGIN)) (SSTORE 336 (CALLDATASIZE)) (SSTORE 338 (CODESIZE)) (SSTORE 340 (GASPRICE)) } # noqa: E501 - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) - + Op.SSTORE(key=0x4, value=Op.CALLER) - + Op.SSTORE(key=0x7, value=Op.CALLVALUE) - + Op.SSTORE(key=0x14A, value=Op.ADDRESS) - + Op.SSTORE(key=0x14C, value=Op.ORIGIN) - + Op.SSTORE(key=0x150, value=Op.CALLDATASIZE) - + Op.SSTORE(key=0x152, value=Op.CODESIZE) - + Op.SSTORE(key=0x154, value=Op.GASPRICE) - + Op.STOP, - nonce=0, - address=Address(0x7E63847AAD8CA50FB7C04777DCE6871A6BF8DE0C), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, @@ -136,9 +128,9 @@ def test_callcodecallcodecallcode_111( 1: 1, 2: 1, 3: 1, - 4: 0xEBAF50DEBF10E08302FE4280C32DF010463CA297, - 330: 0xD26E26D5A4796D450BFA296D70C05F02DBC1A4B9, - 332: 0xEBAF50DEBF10E08302FE4280C32DF010463CA297, + 4: sender, + 330: target, + 332: sender, 336: 64, 338: 39, 340: 10, diff --git a/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcodecallcode_111_ooge.py b/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcodecallcode_111_ooge.py index 06776a0a461..ee9b0bcea8a 100644 --- a/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcodecallcode_111_ooge.py +++ b/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcodecallcode_111_ooge.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcodecallcodecallcode_111_ooge( ) -> None: """DELEGATE -> DELEGATE -> DELEGATE -> CODE OOG.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,23 +46,30 @@ def test_callcodecallcodecallcode_111_ooge( ) # Source: lll - # { [[ 0 ]] (DELEGATECALL 800000 0 64 0 64 ) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 + # { (SSTORE 3 1) (KECCAK256 0x00 0x2fffff) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + + Op.SHA3(offset=0x0, size=0x2FFFFF) + + Op.STOP, + nonce=0, + ) + # Source: lll + # { [[ 2 ]] (DELEGATECALL 400000 0 64 0 64 ) [[11]] 1 } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x0, + key=0x2, value=Op.DELEGATECALL( - gas=0xC3500, - address=0x69A0017A51AD556682F48B32235D0B61ABDF4DA4, + gas=0x61A80, + address=addr_3, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, ), ) + + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x0E7163A4A90126C4A13E52F48E84C74600E844DA), # noqa: E501 ) # Source: lll # { [[ 1 ]] (DELEGATECALL 600000 0 64 0 64 ) } # noqa: E501 @@ -74,7 +78,7 @@ def test_callcodecallcodecallcode_111_ooge( key=0x1, value=Op.DELEGATECALL( gas=0x927C0, - address=0x3E423A7B1FBA04D0C3F9423A3AE2A180D2878D5B, + address=addr_2, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -83,37 +87,25 @@ def test_callcodecallcodecallcode_111_ooge( ) + Op.STOP, nonce=0, - address=Address(0x69A0017A51AD556682F48B32235D0B61ABDF4DA4), # noqa: E501 ) # Source: lll - # { [[ 2 ]] (DELEGATECALL 400000 0 64 0 64 ) [[11]] 1 } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 + # { [[ 0 ]] (DELEGATECALL 800000 0 64 0 64 ) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x2, + key=0x0, value=Op.DELEGATECALL( - gas=0x61A80, - address=0x1DD747F92062BB53BB8E867EC2902792435F1748, + gas=0xC3500, + address=addr, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, ), ) - + Op.SSTORE(key=0xB, value=0x1) - + Op.STOP, - nonce=0, - address=Address(0x3E423A7B1FBA04D0C3F9423A3AE2A180D2878D5B), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) (KECCAK256 0x00 0x2fffff) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) - + Op.SHA3(offset=0x0, size=0x2FFFFF) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x1DD747F92062BB53BB8E867EC2902792435F1748), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcodecallcode_111_oogm_after.py b/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcodecallcode_111_oogm_after.py index 044057ae223..6601196e797 100644 --- a/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcodecallcode_111_oogm_after.py +++ b/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcodecallcode_111_oogm_after.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcodecallcodecallcode_111_oogm_after( ) -> None: """DELEGATE -> (DELEGATE -> DELEGATE -> CODE) OOG.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,24 +46,27 @@ def test_callcodecallcodecallcode_111_oogm_after( ) # Source: lll - # { [[ 0 ]] (DELEGATECALL 800000 0 64 0 64 ) [[11]] 1 } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 + # { (SSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + nonce=0, + ) + # Source: lll + # { [[ 2 ]] (DELEGATECALL 400000 0 64 0 64 ) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x0, + key=0x2, value=Op.DELEGATECALL( - gas=0xC3500, - address=0x1ADAE71AD3AEEC97978E38BE04DA2A1773DFC506, + gas=0x61A80, + address=addr_3, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, ), ) - + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x74ECD5F6537B2B48EBBFF8D66AEE8EB8F98430A3), # noqa: E501 ) # Source: lll # { [[ 1 ]] (DELEGATECALL 600000 0 64 0 64 ) (KECCAK256 0x00 0x2fffff) } # noqa: E501 @@ -75,7 +75,7 @@ def test_callcodecallcodecallcode_111_oogm_after( key=0x1, value=Op.DELEGATECALL( gas=0x927C0, - address=0xDA11FDF0CE02240C6B4711F56AFCD9763B44D3DC, + address=addr_2, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -85,34 +85,26 @@ def test_callcodecallcodecallcode_111_oogm_after( + Op.SHA3(offset=0x0, size=0x2FFFFF) + Op.STOP, nonce=0, - address=Address(0x1ADAE71AD3AEEC97978E38BE04DA2A1773DFC506), # noqa: E501 ) # Source: lll - # { [[ 2 ]] (DELEGATECALL 400000 0 64 0 64 ) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 + # { [[ 0 ]] (DELEGATECALL 800000 0 64 0 64 ) [[11]] 1 } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x2, + key=0x0, value=Op.DELEGATECALL( - gas=0x61A80, - address=0xB126C622075B1189FB6C45E851641CFADDF65B36, + gas=0xC3500, + address=addr, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, ), ) + + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xDA11FDF0CE02240C6B4711F56AFCD9763B44D3DC), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, - nonce=0, - address=Address(0xB126C622075B1189FB6C45E851641CFADDF65B36), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcodecallcode_111_oogm_before.py b/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcodecallcode_111_oogm_before.py index 7398b1f9a3e..a78bec5f2aa 100644 --- a/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcodecallcode_111_oogm_before.py +++ b/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcodecallcode_111_oogm_before.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcodecallcodecallcode_111_oogm_before( ) -> None: """DELEGATE -> DELEGATE -> OOG DELEGATE -> CODE.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,13 +46,20 @@ def test_callcodecallcodecallcode_111_oogm_before( ) # Source: lll - # { [[ 0 ]] (DELEGATECALL 800000 0 64 0 64 ) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, + # { (SSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + nonce=0, + ) + # Source: lll + # { (KECCAK256 0x00 0x2fffff) [[ 2 ]] (DELEGATECALL 400000 0 64 0 64 ) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.POP(Op.SHA3(offset=0x0, size=0x2FFFFF)) + + Op.SSTORE( + key=0x2, value=Op.DELEGATECALL( - gas=0xC3500, - address=0x29F893B720E998CCD5971409FA9A8802822FDCBC, + gas=0x61A80, + address=addr_3, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -63,9 +67,7 @@ def test_callcodecallcodecallcode_111_oogm_before( ), ) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x0E7163A4A90126C4A13E52F48E84C74600E844DA), # noqa: E501 ) # Source: lll # { [[ 1 ]] (DELEGATECALL 600000 0 64 0 64 ) [[11]] 1 } # noqa: E501 @@ -74,7 +76,7 @@ def test_callcodecallcodecallcode_111_oogm_before( key=0x1, value=Op.DELEGATECALL( gas=0x927C0, - address=0x71E7E95D2DFE9F65B4522F2D3AA71FB33F49920C, + address=addr_2, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -84,17 +86,15 @@ def test_callcodecallcodecallcode_111_oogm_before( + Op.SSTORE(key=0xB, value=0x1) + Op.STOP, nonce=0, - address=Address(0x29F893B720E998CCD5971409FA9A8802822FDCBC), # noqa: E501 ) # Source: lll - # { (KECCAK256 0x00 0x2fffff) [[ 2 ]] (DELEGATECALL 400000 0 64 0 64 ) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.POP(Op.SHA3(offset=0x0, size=0x2FFFFF)) - + Op.SSTORE( - key=0x2, + # { [[ 0 ]] (DELEGATECALL 800000 0 64 0 64 ) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, value=Op.DELEGATECALL( - gas=0x61A80, - address=0xB126C622075B1189FB6C45E851641CFADDF65B36, + gas=0xC3500, + address=addr, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -102,17 +102,9 @@ def test_callcodecallcodecallcode_111_oogm_before( ), ) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x71E7E95D2DFE9F65B4522F2D3AA71FB33F49920C), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, - nonce=0, - address=Address(0xB126C622075B1189FB6C45E851641CFADDF65B36), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcodecallcode_111_suicide_end.py b/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcodecallcode_111_suicide_end.py index 09ca3b8d348..881e54676f3 100644 --- a/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcodecallcode_111_suicide_end.py +++ b/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcodecallcode_111_suicide_end.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcodecallcodecallcode_111_suicide_end( ) -> None: """Test_callcodecallcodecallcode_111_suicide_end.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -48,6 +45,14 @@ def test_callcodecallcodecallcode_111_suicide_end( gas_limit=30000000, ) + # Source: lll + # { (SSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + balance=0x2540BE400, + nonce=0, + address=Address(0x73B954EBC05BB0FF4A0F6A13A054D50AD1584099), # noqa: E501 + ) # Source: lll # { [[ 0 ]] (DELEGATECALL 150000 0 64 0 64 ) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -106,15 +111,6 @@ def test_callcodecallcodecallcode_111_suicide_end( nonce=0, address=Address(0xAC521409E2FA9526BFE6B827805783D2E307C4CE), # noqa: E501 ) - # Source: lll - # { (SSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, - balance=0x2540BE400, - nonce=0, - address=Address(0x73B954EBC05BB0FF4A0F6A13A054D50AD1584099), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcodecallcode_111_suicide_middle.py b/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcodecallcode_111_suicide_middle.py index 9686f938293..7b62d827fbf 100644 --- a/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcodecallcode_111_suicide_middle.py +++ b/tests/ported_static/stCallDelegateCodesHomestead/test_callcodecallcodecallcode_111_suicide_middle.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcodecallcodecallcode_111_suicide_middle( ) -> None: """Test_callcodecallcodecallcode_111_suicide_middle.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -48,6 +45,14 @@ def test_callcodecallcodecallcode_111_suicide_middle( gas_limit=30000000, ) + # Source: lll + # { (SSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + balance=0x2540BE400, + nonce=0, + address=Address(0x73B954EBC05BB0FF4A0F6A13A054D50AD1584099), # noqa: E501 + ) # Source: lll # { [[ 0 ]] (DELEGATECALL 150000 0 64 0 64 ) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -108,15 +113,6 @@ def test_callcodecallcodecallcode_111_suicide_middle( nonce=0, address=Address(0x124B38FA011C9D36B7FE193DC636813A2F8BDAA7), # noqa: E501 ) - # Source: lll - # { (SSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, - balance=0x2540BE400, - nonce=0, - address=Address(0x73B954EBC05BB0FF4A0F6A13A054D50AD1584099), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCodeSizeLimit/test_codesize_init.py b/tests/ported_static/stCodeSizeLimit/test_codesize_init.py index 29901cff4a5..fbffc7f5b40 100644 --- a/tests/ported_static/stCodeSizeLimit/test_codesize_init.py +++ b/tests/ported_static/stCodeSizeLimit/test_codesize_init.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -26,16 +25,13 @@ ["state_tests/stCodeSizeLimit/codesizeInitFiller.json"], ) @pytest.mark.valid_from("Cancun") -@pytest.mark.pre_alloc_mutable def test_codesize_init( state_test: StateTestFiller, pre: Alloc, ) -> None: """Test_codesize_init.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -46,8 +42,6 @@ def test_codesize_init( gas_limit=20000000, ) - pre[sender] = Account(balance=0xE8D4A51000) - tx = Transaction( sender=sender, to=None, diff --git a/tests/ported_static/stCodeSizeLimit/test_codesize_valid.py b/tests/ported_static/stCodeSizeLimit/test_codesize_valid.py index d47adc32b68..b0a4a1fd5ff 100644 --- a/tests/ported_static/stCodeSizeLimit/test_codesize_valid.py +++ b/tests/ported_static/stCodeSizeLimit/test_codesize_valid.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -44,7 +43,6 @@ ), ], ) -@pytest.mark.pre_alloc_mutable def test_codesize_valid( state_test: StateTestFiller, pre: Alloc, @@ -55,9 +53,7 @@ def test_codesize_valid( ) -> None: """Test_codesize_valid.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -68,8 +64,6 @@ def test_codesize_valid( gas_limit=20000000, ) - pre[sender] = Account(balance=0xE8D4A51000) - tx_data = [ Op.CODECOPY(dest_offset=0x0, offset=0xD, size=0x5ED5) + Op.RETURN(offset=0x0, size=0x5ED5), diff --git a/tests/ported_static/stCreate2/test_create2_bounds.py b/tests/ported_static/stCreate2/test_create2_bounds.py index 1c07f41f5c4..42c5cb34ec6 100644 --- a/tests/ported_static/stCreate2/test_create2_bounds.py +++ b/tests/ported_static/stCreate2/test_create2_bounds.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -57,8 +56,8 @@ def test_create2_bounds( """Test_create2_bounds.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) contract_0 = Address(0x1000000000000000000000000000000000000000) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 + sender = pre.fund_eoa( + amount=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ) env = Environment( @@ -84,10 +83,6 @@ def test_create2_bounds( + Op.STOP, balance=100, nonce=0, - address=Address(0x1000000000000000000000000000000000000000), # noqa: E501 - ) - pre[sender] = Account( - balance=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ) tx_data = [ diff --git a/tests/ported_static/stCreate2/test_create2_bounds2.py b/tests/ported_static/stCreate2/test_create2_bounds2.py index a0c038b8ab3..175cddce83a 100644 --- a/tests/ported_static/stCreate2/test_create2_bounds2.py +++ b/tests/ported_static/stCreate2/test_create2_bounds2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -57,8 +56,8 @@ def test_create2_bounds2( """Test_create2_bounds2.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) contract_0 = Address(0x1000000000000000000000000000000000000000) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 + sender = pre.fund_eoa( + amount=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ) env = Environment( @@ -83,10 +82,6 @@ def test_create2_bounds2( + Op.STOP, balance=100, nonce=0, - address=Address(0x1000000000000000000000000000000000000000), # noqa: E501 - ) - pre[sender] = Account( - balance=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ) tx_data = [ diff --git a/tests/ported_static/stCreate2/test_create2_bounds3.py b/tests/ported_static/stCreate2/test_create2_bounds3.py index 520895bbdac..d7c3c6c325f 100644 --- a/tests/ported_static/stCreate2/test_create2_bounds3.py +++ b/tests/ported_static/stCreate2/test_create2_bounds3.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -63,8 +62,8 @@ def test_create2_bounds3( """Test_create2_bounds3.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) contract_0 = Address(0x1000000000000000000000000000000000000000) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 + sender = pre.fund_eoa( + amount=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ) env = Environment( @@ -160,10 +159,6 @@ def test_create2_bounds3( + Op.STOP, balance=100, nonce=0, - address=Address(0x1000000000000000000000000000000000000000), # noqa: E501 - ) - pre[sender] = Account( - balance=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ) tx_data = [ diff --git a/tests/ported_static/stCreate2/test_create2_contract_suicide_during_init_then_store_then_return.py b/tests/ported_static/stCreate2/test_create2_contract_suicide_during_init_then_store_then_return.py index c150ecb451b..faa8f7c9a01 100644 --- a/tests/ported_static/stCreate2/test_create2_contract_suicide_during_init_then_store_then_return.py +++ b/tests/ported_static/stCreate2/test_create2_contract_suicide_during_init_then_store_then_return.py @@ -52,12 +52,26 @@ def test_create2_contract_suicide_during_init_then_store_then_return( pre[sender] = Account(balance=0xE8D4A51000) # Source: lll + # { (MSTORE 0 0x6d64600c6000556000526005601bf36000526001ff) (CREATE2 1 11 21 0) [[0]] 11 (RETURN 18 14) } # noqa: E501 + contract_1 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE( + offset=0x0, value=0x6D64600C6000556000526005601BF36000526001FF + ) + + Op.POP(Op.CREATE2(value=0x1, offset=0xB, size=0x15, salt=0x0)) + + Op.SSTORE(key=0x0, value=0xB) + + Op.RETURN(offset=0x12, size=0xE) + + Op.STOP, + balance=0xE8D4A51000, + nonce=0, + address=Address(0xC94F5374FCE5EDBC8E2A8697C15331677E6EBF0B), # noqa: E501 + ) + # Source: lll # { (CALL 150000 0xc94f5374fce5edbc8e2a8697c15331677e6ebf0b 1 0 0 0 32) (SSTORE 1 (MLOAD 0)) } # noqa: E501 contract_0 = pre.deploy_contract( # noqa: F841 code=Op.POP( Op.CALL( gas=0x249F0, - address=0xC94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, + address=contract_1, value=0x1, args_offset=0x0, args_size=0x0, @@ -71,20 +85,6 @@ def test_create2_contract_suicide_during_init_then_store_then_return( nonce=0, address=Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B), # noqa: E501 ) - # Source: lll - # { (MSTORE 0 0x6d64600c6000556000526005601bf36000526001ff) (CREATE2 1 11 21 0) [[0]] 11 (RETURN 18 14) } # noqa: E501 - contract_1 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE( - offset=0x0, value=0x6D64600C6000556000526005601BF36000526001FF - ) - + Op.POP(Op.CREATE2(value=0x1, offset=0xB, size=0x15, salt=0x0)) - + Op.SSTORE(key=0x0, value=0xB) - + Op.RETURN(offset=0x12, size=0xE) - + Op.STOP, - balance=0xE8D4A51000, - nonce=0, - address=Address(0xC94F5374FCE5EDBC8E2A8697C15331677E6EBF0B), # noqa: E501 - ) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCreate2/test_create2_oo_gafter_init_code_returndata.py b/tests/ported_static/stCreate2/test_create2_oo_gafter_init_code_returndata.py index 570c4c2ffff..acbce0f8db4 100644 --- a/tests/ported_static/stCreate2/test_create2_oo_gafter_init_code_returndata.py +++ b/tests/ported_static/stCreate2/test_create2_oo_gafter_init_code_returndata.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -57,9 +56,7 @@ def test_create2_oo_gafter_init_code_returndata( """Call RETURNDATASIZE and RETURNDATACOPY (BufferOverrun) after...""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) contract_0 = Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -70,7 +67,6 @@ def test_create2_oo_gafter_init_code_returndata( gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) # Source: lll # { (MSTORE 0 0x6460016001556000526005601bf3) (CREATE2 0 18 14 0) [[ 1 ]] (RETURNDATASIZE) (RETURNDATACOPY 0 0 32) [[ 2 ]] (MLOAD 0) } # noqa: E501 contract_0 = pre.deploy_contract( # noqa: F841 @@ -82,7 +78,6 @@ def test_create2_oo_gafter_init_code_returndata( + Op.STOP, storage={1: 1, 2: 1}, nonce=0, - address=Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B), # noqa: E501 ) tx_data = [ diff --git a/tests/ported_static/stCreate2/test_create2_oo_gafter_init_code_returndata3.py b/tests/ported_static/stCreate2/test_create2_oo_gafter_init_code_returndata3.py index fdf9fe491f6..075f116015f 100644 --- a/tests/ported_static/stCreate2/test_create2_oo_gafter_init_code_returndata3.py +++ b/tests/ported_static/stCreate2/test_create2_oo_gafter_init_code_returndata3.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -36,9 +35,7 @@ def test_create2_oo_gafter_init_code_returndata3( coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) contract_0 = Address(0xC94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) contract_1 = Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -49,14 +46,21 @@ def test_create2_oo_gafter_init_code_returndata3( gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) + # Source: lll + # { (MSTORE 0 0x6460016001556000526005601bf3) (CREATE2 0 18 14 0) } + contract_1 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x0, value=0x6460016001556000526005601BF3) + + Op.CREATE2(value=0x0, offset=0x12, size=0xE, salt=0x0) + + Op.STOP, + nonce=0, + ) # Source: lll # { (CALLCODE (GAS) 0xb94f5374fce5edbc8e2a8697c15331677e6ebf0b 0 0 0 0 32) (RETURNDATACOPY 0 0 32) [[ 1 ]] (MLOAD 0) } # noqa: E501 contract_0 = pre.deploy_contract( # noqa: F841 code=Op.POP( Op.CALLCODE( gas=Op.GAS, - address=0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, + address=contract_1, value=0x0, args_offset=0x0, args_size=0x0, @@ -69,16 +73,6 @@ def test_create2_oo_gafter_init_code_returndata3( + Op.STOP, storage={1: 1}, nonce=0, - address=Address(0xC94F5374FCE5EDBC8E2A8697C15331677E6EBF0B), # noqa: E501 - ) - # Source: lll - # { (MSTORE 0 0x6460016001556000526005601bf3) (CREATE2 0 18 14 0) } - contract_1 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x0, value=0x6460016001556000526005601BF3) - + Op.CREATE2(value=0x0, offset=0x12, size=0xE, salt=0x0) - + Op.STOP, - nonce=0, - address=Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stCreate2/test_create2_oo_gafter_init_code_revert2.py b/tests/ported_static/stCreate2/test_create2_oo_gafter_init_code_revert2.py index 6f939986e27..2b48b4cb0bd 100644 --- a/tests/ported_static/stCreate2/test_create2_oo_gafter_init_code_revert2.py +++ b/tests/ported_static/stCreate2/test_create2_oo_gafter_init_code_revert2.py @@ -51,12 +51,22 @@ def test_create2_oo_gafter_init_code_revert2( pre[sender] = Account(balance=0xE8D4A51000) # Source: lll + # { (MSTORE 0 0x6460016001556000526005601bf3) (CREATE2 0 18 14 0) (REVERT 0 32) } # noqa: E501 + contract_1 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x0, value=0x6460016001556000526005601BF3) + + Op.POP(Op.CREATE2(value=0x0, offset=0x12, size=0xE, salt=0x0)) + + Op.REVERT(offset=0x0, size=0x20) + + Op.STOP, + nonce=0, + address=Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B), # noqa: E501 + ) + # Source: lll # { (CALL 33000 0xb94f5374fce5edbc8e2a8697c15331677e6ebf0b 0 0 0 0 32) [[ 1 ]] (MLOAD 0) } # noqa: E501 contract_0 = pre.deploy_contract( # noqa: F841 code=Op.POP( Op.CALL( gas=0x80E8, - address=0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, + address=contract_1, value=0x0, args_offset=0x0, args_size=0x0, @@ -70,16 +80,6 @@ def test_create2_oo_gafter_init_code_revert2( nonce=0, address=Address(0xC94F5374FCE5EDBC8E2A8697C15331677E6EBF0B), # noqa: E501 ) - # Source: lll - # { (MSTORE 0 0x6460016001556000526005601bf3) (CREATE2 0 18 14 0) (REVERT 0 32) } # noqa: E501 - contract_1 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x0, value=0x6460016001556000526005601BF3) - + Op.POP(Op.CREATE2(value=0x0, offset=0x12, size=0xE, salt=0x0)) - + Op.REVERT(offset=0x0, size=0x20) - + Op.STOP, - nonce=0, - address=Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B), # noqa: E501 - ) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCreate2/test_create2_smart_init_code.py b/tests/ported_static/stCreate2/test_create2_smart_init_code.py index 54d4808eb37..0d5a967638e 100644 --- a/tests/ported_static/stCreate2/test_create2_smart_init_code.py +++ b/tests/ported_static/stCreate2/test_create2_smart_init_code.py @@ -74,6 +74,7 @@ def test_create2_smart_init_code( gas_limit=47244640256, ) + pre[sender] = Account(balance=0x6400000000) # Source: lll # { (MSTORE 0 0x600060015414601157600a6000f3601a565b60016001556001ff5b) [[1]](CREATE2 1 5 27 0) [[2]](CREATE2 1 5 27 0) } # noqa: E501 contract_0 = pre.deploy_contract( # noqa: F841 @@ -114,7 +115,6 @@ def test_create2_smart_init_code( nonce=0, address=Address(0x1F572E5295C57F15886F9B263E2F6D2D6C7B5EC6), # noqa: E501 ) - pre[sender] = Account(balance=0x6400000000) # Source: lll # { (CALL (GAS) (CALLDATALOAD 0) 0 0 0 0 0) } contract_2 = pre.deploy_contract( # noqa: F841 diff --git a/tests/ported_static/stCreate2/test_create2check_fields_in_initcode.py b/tests/ported_static/stCreate2/test_create2check_fields_in_initcode.py index e54ba4b04b5..4f883160226 100644 --- a/tests/ported_static/stCreate2/test_create2check_fields_in_initcode.py +++ b/tests/ported_static/stCreate2/test_create2check_fields_in_initcode.py @@ -136,6 +136,68 @@ def test_create2check_fields_in_initcode( address=Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B), # noqa: E501 ) # Source: lll + # { (CREATE2 0 0 (lll (seq [[0]] (ADDRESS) [[1]] (BALANCE (ADDRESS)) [[2]] (ORIGIN) [[3]] (CALLER) [[4]] (CALLVALUE) [[5]] (CALLDATASIZE) [[6]] (CODESIZE) [[7]] (GASPRICE) (STOP) ) 0) 0) (STOP) } # noqa: E501 + contract_9 = pre.deploy_contract( # noqa: F841 + code=Op.PUSH1[0x0] + + Op.PUSH1[0x23] + + Op.CODECOPY(dest_offset=0x0, offset=0x13, size=Op.DUP1) + + Op.PUSH1[0x0] * 2 + + Op.POP(Op.CREATE2) + + Op.STOP * 2 + + Op.INVALID + + Op.SSTORE(key=0x0, value=Op.ADDRESS) + + Op.SSTORE(key=0x1, value=Op.BALANCE(address=Op.ADDRESS)) + + Op.SSTORE(key=0x2, value=Op.ORIGIN) + + Op.SSTORE(key=0x3, value=Op.CALLER) + + Op.SSTORE(key=0x4, value=Op.CALLVALUE) + + Op.SSTORE(key=0x5, value=Op.CALLDATASIZE) + + Op.SSTORE(key=0x6, value=Op.CODESIZE) + + Op.SSTORE(key=0x7, value=Op.GASPRICE) + + Op.STOP * 2, + nonce=0, + address=Address(0xF000000000000000000000000000000000000000), # noqa: E501 + ) + # Source: lll + # { (CREATE2 0 0 (lll (seq [0] (ADDRESS) [32] (BALANCE (ADDRESS)) [64] (ORIGIN) [96] (CALLER) [128] (CALLVALUE) [160] (CALLDATASIZE) [192] (CODESIZE) [224] (GASPRICE) (RETURN 0 256) (STOP) ) 0) 0) } # noqa: E501 + contract_10 = pre.deploy_contract( # noqa: F841 + code=Op.PUSH1[0x0] + + Op.PUSH1[0x29] + + Op.CODECOPY(dest_offset=0x0, offset=0x11, size=Op.DUP1) + + Op.PUSH1[0x0] * 2 + + Op.CREATE2 + + Op.STOP + + Op.INVALID + + Op.MSTORE(offset=0x0, value=Op.ADDRESS) + + Op.MSTORE(offset=0x20, value=Op.BALANCE(address=Op.ADDRESS)) + + Op.MSTORE(offset=0x40, value=Op.ORIGIN) + + Op.MSTORE(offset=0x60, value=Op.CALLER) + + Op.MSTORE(offset=0x80, value=Op.CALLVALUE) + + Op.MSTORE(offset=0xA0, value=Op.CALLDATASIZE) + + Op.MSTORE(offset=0xC0, value=Op.CODESIZE) + + Op.MSTORE(offset=0xE0, value=Op.GASPRICE) + + Op.RETURN(offset=0x0, size=0x100) + + Op.STOP * 2, + nonce=0, + address=Address(0xF200000000000000000000000000000000000000), # noqa: E501 + ) + # Source: lll + # { (DELEGATECALL (GAS) 0xf000000000000000000000000000000000000000 0 0 0 0) (STOP) } # noqa: E501 + contract_5 = pre.deploy_contract( # noqa: F841 + code=Op.POP( + Op.DELEGATECALL( + gas=Op.GAS, + address=0xF000000000000000000000000000000000000000, + args_offset=0x0, + args_size=0x0, + ret_offset=0x0, + ret_size=0x0, + ) + ) + + Op.STOP * 2, + nonce=0, + address=Address(0x3000000000000000000000000000000000000000), # noqa: E501 + ) + # Source: lll # { (CALL (GAS) 0xf000000000000000000000000000000000000000 0 0 0 0 0) } contract_1 = pre.deploy_contract( # noqa: F841 code=Op.CALL( @@ -152,20 +214,19 @@ def test_create2check_fields_in_initcode( address=Address(0x1000000000000000000000000000000000000000), # noqa: E501 ) # Source: lll - # { (CREATE2 0 0 (lll (seq (CALL (GAS) 0xf000000000000000000000000000000000000000 0 0 0 0 0) (STOP) ) 0) 0) (STOP) } # noqa: E501 - contract_2 = pre.deploy_contract( # noqa: F841 + # { (CREATE2 0 0 (lll (seq (DELEGATECALL (GAS) 0xf000000000000000000000000000000000000000 0 0 0 0) (STOP) ) 0) 0) (STOP) } # noqa: E501 + contract_6 = pre.deploy_contract( # noqa: F841 code=Op.PUSH1[0x0] - + Op.PUSH1[0x24] + + Op.PUSH1[0x22] + Op.CODECOPY(dest_offset=0x0, offset=0x13, size=Op.DUP1) + Op.PUSH1[0x0] * 2 + Op.POP(Op.CREATE2) + Op.STOP * 2 + Op.INVALID + Op.POP( - Op.CALL( + Op.DELEGATECALL( gas=Op.GAS, address=0xF000000000000000000000000000000000000000, - value=0x0, args_offset=0x0, args_size=0x0, ret_offset=0x0, @@ -174,7 +235,7 @@ def test_create2check_fields_in_initcode( ) + Op.STOP * 2, nonce=0, - address=Address(0x1100000000000000000000000000000000000000), # noqa: E501 + address=Address(0x3300000000000000000000000000000000000000), # noqa: E501 ) # Source: lll # { (CALLCODE (GAS) 0xf000000000000000000000000000000000000000 0 0 0 0 0) } @@ -193,8 +254,8 @@ def test_create2check_fields_in_initcode( address=Address(0x2000000000000000000000000000000000000000), # noqa: E501 ) # Source: lll - # { (CREATE2 0 0 (lll (seq (CALLCODE (GAS) 0xf000000000000000000000000000000000000000 0 0 0 0 0) (STOP) ) 0) 0) (STOP) } # noqa: E501 - contract_4 = pre.deploy_contract( # noqa: F841 + # { (CREATE2 0 0 (lll (seq (CALL (GAS) 0xf000000000000000000000000000000000000000 0 0 0 0 0) (STOP) ) 0) 0) (STOP) } # noqa: E501 + contract_2 = pre.deploy_contract( # noqa: F841 code=Op.PUSH1[0x0] + Op.PUSH1[0x24] + Op.CODECOPY(dest_offset=0x0, offset=0x13, size=Op.DUP1) @@ -203,7 +264,7 @@ def test_create2check_fields_in_initcode( + Op.STOP * 2 + Op.INVALID + Op.POP( - Op.CALLCODE( + Op.CALL( gas=Op.GAS, address=0xF000000000000000000000000000000000000000, value=0x0, @@ -215,39 +276,23 @@ def test_create2check_fields_in_initcode( ) + Op.STOP * 2, nonce=0, - address=Address(0x2200000000000000000000000000000000000000), # noqa: E501 - ) - # Source: lll - # { (DELEGATECALL (GAS) 0xf000000000000000000000000000000000000000 0 0 0 0) (STOP) } # noqa: E501 - contract_5 = pre.deploy_contract( # noqa: F841 - code=Op.POP( - Op.DELEGATECALL( - gas=Op.GAS, - address=0xF000000000000000000000000000000000000000, - args_offset=0x0, - args_size=0x0, - ret_offset=0x0, - ret_size=0x0, - ) - ) - + Op.STOP * 2, - nonce=0, - address=Address(0x3000000000000000000000000000000000000000), # noqa: E501 + address=Address(0x1100000000000000000000000000000000000000), # noqa: E501 ) # Source: lll - # { (CREATE2 0 0 (lll (seq (DELEGATECALL (GAS) 0xf000000000000000000000000000000000000000 0 0 0 0) (STOP) ) 0) 0) (STOP) } # noqa: E501 - contract_6 = pre.deploy_contract( # noqa: F841 + # { (CREATE2 0 0 (lll (seq (CALLCODE (GAS) 0xf000000000000000000000000000000000000000 0 0 0 0 0) (STOP) ) 0) 0) (STOP) } # noqa: E501 + contract_4 = pre.deploy_contract( # noqa: F841 code=Op.PUSH1[0x0] - + Op.PUSH1[0x22] + + Op.PUSH1[0x24] + Op.CODECOPY(dest_offset=0x0, offset=0x13, size=Op.DUP1) + Op.PUSH1[0x0] * 2 + Op.POP(Op.CREATE2) + Op.STOP * 2 + Op.INVALID + Op.POP( - Op.DELEGATECALL( + Op.CALLCODE( gas=Op.GAS, address=0xF000000000000000000000000000000000000000, + value=0x0, args_offset=0x0, args_size=0x0, ret_offset=0x0, @@ -256,25 +301,7 @@ def test_create2check_fields_in_initcode( ) + Op.STOP * 2, nonce=0, - address=Address(0x3300000000000000000000000000000000000000), # noqa: E501 - ) - # Source: lll - # { (STATICCALL (GAS) 0xf200000000000000000000000000000000000000 0 0 0 256) [[10]] (MLOAD 0) } # noqa: E501 - contract_7 = pre.deploy_contract( # noqa: F841 - code=Op.POP( - Op.STATICCALL( - gas=Op.GAS, - address=0xF200000000000000000000000000000000000000, - args_offset=0x0, - args_size=0x0, - ret_offset=0x0, - ret_size=0x100, - ) - ) - + Op.SSTORE(key=0xA, value=Op.MLOAD(offset=0x0)) - + Op.STOP, - nonce=0, - address=Address(0x4000000000000000000000000000000000000000), # noqa: E501 + address=Address(0x2200000000000000000000000000000000000000), # noqa: E501 ) # Source: lll # { (CREATE2 0 0 (lll (seq (STATICCALL (GAS) 0xf200000000000000000000000000000000000000 0 0 0 256) [[10]] (MLOAD 0) (STOP) ) 0) 0 ) } # noqa: E501 @@ -302,49 +329,22 @@ def test_create2check_fields_in_initcode( address=Address(0x4400000000000000000000000000000000000000), # noqa: E501 ) # Source: lll - # { (CREATE2 0 0 (lll (seq [[0]] (ADDRESS) [[1]] (BALANCE (ADDRESS)) [[2]] (ORIGIN) [[3]] (CALLER) [[4]] (CALLVALUE) [[5]] (CALLDATASIZE) [[6]] (CODESIZE) [[7]] (GASPRICE) (STOP) ) 0) 0) (STOP) } # noqa: E501 - contract_9 = pre.deploy_contract( # noqa: F841 - code=Op.PUSH1[0x0] - + Op.PUSH1[0x23] - + Op.CODECOPY(dest_offset=0x0, offset=0x13, size=Op.DUP1) - + Op.PUSH1[0x0] * 2 - + Op.POP(Op.CREATE2) - + Op.STOP * 2 - + Op.INVALID - + Op.SSTORE(key=0x0, value=Op.ADDRESS) - + Op.SSTORE(key=0x1, value=Op.BALANCE(address=Op.ADDRESS)) - + Op.SSTORE(key=0x2, value=Op.ORIGIN) - + Op.SSTORE(key=0x3, value=Op.CALLER) - + Op.SSTORE(key=0x4, value=Op.CALLVALUE) - + Op.SSTORE(key=0x5, value=Op.CALLDATASIZE) - + Op.SSTORE(key=0x6, value=Op.CODESIZE) - + Op.SSTORE(key=0x7, value=Op.GASPRICE) - + Op.STOP * 2, - nonce=0, - address=Address(0xF000000000000000000000000000000000000000), # noqa: E501 - ) - # Source: lll - # { (CREATE2 0 0 (lll (seq [0] (ADDRESS) [32] (BALANCE (ADDRESS)) [64] (ORIGIN) [96] (CALLER) [128] (CALLVALUE) [160] (CALLDATASIZE) [192] (CODESIZE) [224] (GASPRICE) (RETURN 0 256) (STOP) ) 0) 0) } # noqa: E501 - contract_10 = pre.deploy_contract( # noqa: F841 - code=Op.PUSH1[0x0] - + Op.PUSH1[0x29] - + Op.CODECOPY(dest_offset=0x0, offset=0x11, size=Op.DUP1) - + Op.PUSH1[0x0] * 2 - + Op.CREATE2 - + Op.STOP - + Op.INVALID - + Op.MSTORE(offset=0x0, value=Op.ADDRESS) - + Op.MSTORE(offset=0x20, value=Op.BALANCE(address=Op.ADDRESS)) - + Op.MSTORE(offset=0x40, value=Op.ORIGIN) - + Op.MSTORE(offset=0x60, value=Op.CALLER) - + Op.MSTORE(offset=0x80, value=Op.CALLVALUE) - + Op.MSTORE(offset=0xA0, value=Op.CALLDATASIZE) - + Op.MSTORE(offset=0xC0, value=Op.CODESIZE) - + Op.MSTORE(offset=0xE0, value=Op.GASPRICE) - + Op.RETURN(offset=0x0, size=0x100) - + Op.STOP * 2, + # { (STATICCALL (GAS) 0xf200000000000000000000000000000000000000 0 0 0 256) [[10]] (MLOAD 0) } # noqa: E501 + contract_7 = pre.deploy_contract( # noqa: F841 + code=Op.POP( + Op.STATICCALL( + gas=Op.GAS, + address=0xF200000000000000000000000000000000000000, + args_offset=0x0, + args_size=0x0, + ret_offset=0x0, + ret_size=0x100, + ) + ) + + Op.SSTORE(key=0xA, value=Op.MLOAD(offset=0x0)) + + Op.STOP, nonce=0, - address=Address(0xF200000000000000000000000000000000000000), # noqa: E501 + address=Address(0x4000000000000000000000000000000000000000), # noqa: E501 ) expect_entries_: list[dict] = [ @@ -356,8 +356,8 @@ def test_create2check_fields_in_initcode( storage={ 0: 0xDAF9F53E732F21FE517E624B6DFE92DC8D0E51E0, 1: 0, - 2: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, - 3: 0xF000000000000000000000000000000000000000, + 2: sender, + 3: contract_9, 4: 0, 5: 0, 6: 35, @@ -377,8 +377,8 @@ def test_create2check_fields_in_initcode( storage={ 0: 0xDFAD1C567F12D848FABB8D9D8872C42E7AA81E95, 1: 0, - 2: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, - 3: 0x2000000000000000000000000000000000000000, + 2: sender, + 3: contract_3, 4: 0, 5: 0, 6: 35, @@ -398,8 +398,8 @@ def test_create2check_fields_in_initcode( storage={ 0: 0x3FF16480055C6CCC070257C61FA902448F4AE111, 1: 0, - 2: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, - 3: 0x3000000000000000000000000000000000000000, + 2: sender, + 3: contract_5, 4: 0, 5: 0, 6: 35, @@ -424,7 +424,7 @@ def test_create2check_fields_in_initcode( storage={ 0: 0x7CE21E3C16D63738CBBB697C919555C910504278, 1: 0, - 2: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, + 2: sender, 3: 0x9D25FBABDEB081B9ECD0645B9B6ABA8C7EB3821D, 4: 0, 5: 0, @@ -445,7 +445,7 @@ def test_create2check_fields_in_initcode( storage={ 0: 0xBB1B88EA45D33397F45583CA612ADEA3EB267318, 1: 0, - 2: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, + 2: sender, 3: 0x45DDE7FBF9F1CF09E18C4E584BA93C82E83C8898, 4: 0, 5: 0, diff --git a/tests/ported_static/stCreate2/test_returndatacopy_following_create.py b/tests/ported_static/stCreate2/test_returndatacopy_following_create.py index 8660d373803..323a9dda6c8 100644 --- a/tests/ported_static/stCreate2/test_returndatacopy_following_create.py +++ b/tests/ported_static/stCreate2/test_returndatacopy_following_create.py @@ -74,6 +74,7 @@ def test_returndatacopy_following_create( gas_limit=47244640256, ) + pre[sender] = Account(balance=0x6400000000) # Source: lll # { (CALL (GAS) (CALLDATALOAD 0) 0 0 0 0 0) } contract_0 = pre.deploy_contract( # noqa: F841 @@ -129,7 +130,6 @@ def test_returndatacopy_following_create( nonce=0, address=Address(0x1F572E5295C57F15886F9B263E2F6D2D6C7B5EC6), # noqa: E501 ) - pre[sender] = Account(balance=0x6400000000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stCreate2/test_returndatacopy_following_successful_create.py b/tests/ported_static/stCreate2/test_returndatacopy_following_successful_create.py index fae60ef6167..aa1c2c33f7a 100644 --- a/tests/ported_static/stCreate2/test_returndatacopy_following_successful_create.py +++ b/tests/ported_static/stCreate2/test_returndatacopy_following_successful_create.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -36,9 +35,7 @@ def test_returndatacopy_following_successful_create( """Returndatacopy_following_successful_create for CREATE2.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) contract_0 = Address(0x0F572E5295C57F15886F9B263E2F6D2D6C7B5EC6) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0x6400000000) env = Environment( fee_recipient=coinbase, @@ -64,9 +61,7 @@ def test_returndatacopy_following_successful_create( + Op.STOP * 2, storage={0: 2}, nonce=0, - address=Address(0x0F572E5295C57F15886F9B263E2F6D2D6C7B5EC6), # noqa: E501 ) - pre[sender] = Account(balance=0x6400000000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stCreateTest/test_create2_refund_ef.py b/tests/ported_static/stCreateTest/test_create2_refund_ef.py index e164c202495..f2b5c529ecc 100644 --- a/tests/ported_static/stCreateTest/test_create2_refund_ef.py +++ b/tests/ported_static/stCreateTest/test_create2_refund_ef.py @@ -92,7 +92,7 @@ def test_create2_refund_ef( + Op.POP( Op.CALL( gas=0xC350, - address=0x5EF94D, + address=contract_0, value=Op.DUP1, args_offset=Op.DUP1, args_size=Op.DUP1, diff --git a/tests/ported_static/stCreateTest/test_create_address_warm_after_fail.py b/tests/ported_static/stCreateTest/test_create_address_warm_after_fail.py index f37fd4efd34..56b4a02b6c9 100644 --- a/tests/ported_static/stCreateTest/test_create_address_warm_after_fail.py +++ b/tests/ported_static/stCreateTest/test_create_address_warm_after_fail.py @@ -256,46 +256,6 @@ def test_create_address_warm_after_fail( pre[sender] = Account(balance=0xE8D4A51001) # Source: yul - # london - # object "C" { - # code { - # let failType := calldataload(4) - # let initcode_size - # - # // The return values of various actions. Done twice to see if there is a difference # noqa: E501 - # let create_1 := 0 - # let call_created_1 := 2 - # let call_created_2 := 3 - # let call_empty_1 := 4 - # let call_empty_2 := 5 - # - # // The costs of those operations - # let create_1_cost := 10 - # let call_created_1_cost := 12 - # let call_created_2_cost := 13 - # let call_empty_1_cost := 14 - # let call_empty_2_cost := 15 - # - # // Make the storage cells we use here are warm - # sstore(create_1, 0xdead60A7) - # sstore(call_created_1, 0xdead60A7) - # sstore(call_created_2, 0xdead60A7) - # sstore(call_empty_1, 0xdead60A7) - # sstore(call_empty_2, 0xdead60A7) - # sstore(call_created_1_cost, 0xdead60A7) - # sstore(call_created_2_cost, 0xdead60A7) - # sstore(call_empty_1_cost, 0xdead60A7) - # sstore(call_empty_2_cost, 0xdead60A7) - # ... (173 more lines) - contract_0 = pre.deploy_contract( # noqa: F841 - code=bytes.fromhex( - "6004356000906002600390600493600593600c90600d96600e90600f9863dead60a7865563dead60a7875563dead60a7885563dead60a7825563dead60a7895563dead60a7855563dead60a7815563dead60a7835563dead60a78a5573d4e7ae083132925a4927c1f5816238ba17b82a00938060001461044c5780600a1461040e57806001146103dc5780600b146103a357806002146103715780600c1461033257806003146102f757806004146102bb578060051461027f5780600d146102435780600e1461020657806006146101d4578060101461019b5780600714610169576011146100ed57600080fd5b60009788808080809b9a819b9a829b73f7fef4b66b1570a057d7d5cec5c58846befa5b5c92615a1760058061049488398680f590555b5a825583808080348782f190555a81540390555a8755349082f190555a81540390555a825583808080348782f190555a81540390555a8755349082f190555a8154039055005b5060009788808080809b9a819b9a829b6000805160206104998339815191529260058061049487398580f09055610123565b5060009788808080809b9a819b9a829b73562d97e3e4d6d3c6e791ea64bb73d820871aa2199284600a8061048a83398180f59055610123565b5060009788808080809b9a819b9a829b60008051602061049983398151915292600a8061048a87398580f09055610123565b5060009788808080809b9a819b9a829b73d70df326038a3c7ca8fac785a99162bfe75ccc469284808080806420c0de100662010000f19055610123565b5060009788808080809b9a819b9a829b73d70df326038a3c7ca8fac785a99162bfe75ccc469284808080806420c0de1006617000f19055610123565b5060009788808080809b9a819b9a829b73b2050fc27ab6d6d42dc0ce6f7c0bf9481a4c3fc392848080808063c0deffff62010000f19055610123565b5060009788808080809b9a819b9a829b73a5a6a95fd9554f15ab6986a57519092be209512592848080808063c0de100662010000f19055610123565b5060009788808080809b9a819b9a829b73a5a6a95fd9554f15ab6986a57519092be209512592848080808063c0de1006617000f19055610123565b5060009788808080809b9a819b9a829b73a13d43586820e5d97a3fd1960625d537c86dc4e79284600665fe60106000f360d01b82528180f59055610123565b5060009788808080809b9a819b9a829b6000805160206104998339815191529260018061048987398580f09055610123565b5060009788808080809b9a819b9a829b73014001fdbede82315f4b8c2a7d45e980a8a4a12e928460068061048383398180f59055610123565b5060009788808080809b9a819b9a829b6000805160206104998339815191529260068061048387398580f09055610123565b5060009788808080809b9a819b9a829b7343255ee039968e0254887fc8c7172736983d878c928460056460006000fd60d81b82528180f59055610123565b5060009788808080809b9a819b9a829b6000805160206104998339815191529260048061047f87398580f0905561012356fe600080fd6160016000f3fe60ef60005360106000f360016000f3000000000000000000000000d4e7ae083132925a4927c1f5816238ba17b82a65" # noqa: E501 - ), - balance=4096, - nonce=0, - address=Address(0x00000000000000000000000000000000000C0DEC), # noqa: E501 - ) - # Source: yul # berlin # object "C" { # code { @@ -376,6 +336,46 @@ def test_create_address_warm_after_fail( nonce=18446744073709551615, address=Address(0x00000000000000000000000000000000C0DEFFFF), # noqa: E501 ) + # Source: yul + # london + # object "C" { + # code { + # let failType := calldataload(4) + # let initcode_size + # + # // The return values of various actions. Done twice to see if there is a difference # noqa: E501 + # let create_1 := 0 + # let call_created_1 := 2 + # let call_created_2 := 3 + # let call_empty_1 := 4 + # let call_empty_2 := 5 + # + # // The costs of those operations + # let create_1_cost := 10 + # let call_created_1_cost := 12 + # let call_created_2_cost := 13 + # let call_empty_1_cost := 14 + # let call_empty_2_cost := 15 + # + # // Make the storage cells we use here are warm + # sstore(create_1, 0xdead60A7) + # sstore(call_created_1, 0xdead60A7) + # sstore(call_created_2, 0xdead60A7) + # sstore(call_empty_1, 0xdead60A7) + # sstore(call_empty_2, 0xdead60A7) + # sstore(call_created_1_cost, 0xdead60A7) + # sstore(call_created_2_cost, 0xdead60A7) + # sstore(call_empty_1_cost, 0xdead60A7) + # sstore(call_empty_2_cost, 0xdead60A7) + # ... (173 more lines) + contract_0 = pre.deploy_contract( # noqa: F841 + code=bytes.fromhex( + "6004356000906002600390600493600593600c90600d96600e90600f9863dead60a7865563dead60a7875563dead60a7885563dead60a7825563dead60a7895563dead60a7855563dead60a7815563dead60a7835563dead60a78a5573d4e7ae083132925a4927c1f5816238ba17b82a00938060001461044c5780600a1461040e57806001146103dc5780600b146103a357806002146103715780600c1461033257806003146102f757806004146102bb578060051461027f5780600d146102435780600e1461020657806006146101d4578060101461019b5780600714610169576011146100ed57600080fd5b60009788808080809b9a819b9a829b73f7fef4b66b1570a057d7d5cec5c58846befa5b5c92615a1760058061049488398680f590555b5a825583808080348782f190555a81540390555a8755349082f190555a81540390555a825583808080348782f190555a81540390555a8755349082f190555a8154039055005b5060009788808080809b9a819b9a829b6000805160206104998339815191529260058061049487398580f09055610123565b5060009788808080809b9a819b9a829b73562d97e3e4d6d3c6e791ea64bb73d820871aa2199284600a8061048a83398180f59055610123565b5060009788808080809b9a819b9a829b60008051602061049983398151915292600a8061048a87398580f09055610123565b5060009788808080809b9a819b9a829b73d70df326038a3c7ca8fac785a99162bfe75ccc469284808080806420c0de100662010000f19055610123565b5060009788808080809b9a819b9a829b73d70df326038a3c7ca8fac785a99162bfe75ccc469284808080806420c0de1006617000f19055610123565b5060009788808080809b9a819b9a829b73b2050fc27ab6d6d42dc0ce6f7c0bf9481a4c3fc392848080808063c0deffff62010000f19055610123565b5060009788808080809b9a819b9a829b73a5a6a95fd9554f15ab6986a57519092be209512592848080808063c0de100662010000f19055610123565b5060009788808080809b9a819b9a829b73a5a6a95fd9554f15ab6986a57519092be209512592848080808063c0de1006617000f19055610123565b5060009788808080809b9a819b9a829b73a13d43586820e5d97a3fd1960625d537c86dc4e79284600665fe60106000f360d01b82528180f59055610123565b5060009788808080809b9a819b9a829b6000805160206104998339815191529260018061048987398580f09055610123565b5060009788808080809b9a819b9a829b73014001fdbede82315f4b8c2a7d45e980a8a4a12e928460068061048383398180f59055610123565b5060009788808080809b9a819b9a829b6000805160206104998339815191529260068061048387398580f09055610123565b5060009788808080809b9a819b9a829b7343255ee039968e0254887fc8c7172736983d878c928460056460006000fd60d81b82528180f59055610123565b5060009788808080809b9a819b9a829b6000805160206104998339815191529260048061047f87398580f0905561012356fe600080fd6160016000f3fe60ef60005360106000f360016000f3000000000000000000000000d4e7ae083132925a4927c1f5816238ba17b82a65" # noqa: E501 + ), + balance=4096, + nonce=0, + address=Address(0x00000000000000000000000000000000000C0DEC), # noqa: E501 + ) expect_entries_: list[dict] = [ { @@ -742,7 +742,7 @@ def test_create_address_warm_after_fail( sender: Account(nonce=1), contract_0: Account( storage={ - 0: 0xD4E7AE083132925A4927C1F5816238BA17B82A65, + 0: compute_create_address(address=contract_0, nonce=0), 2: 1, 3: 1, 4: 1, @@ -766,7 +766,7 @@ def test_create_address_warm_after_fail( sender: Account(nonce=1), contract_0: Account( storage={ - 0: 0xD4E7AE083132925A4927C1F5816238BA17B82A65, + 0: compute_create_address(address=contract_0, nonce=0), 2: 1, 3: 1, 4: 1, diff --git a/tests/ported_static/stCreateTest/test_create_contract_return_big_offset.py b/tests/ported_static/stCreateTest/test_create_contract_return_big_offset.py index a4993192b76..ceb298ae540 100644 --- a/tests/ported_static/stCreateTest/test_create_contract_return_big_offset.py +++ b/tests/ported_static/stCreateTest/test_create_contract_return_big_offset.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -56,7 +55,6 @@ ), ], ) -@pytest.mark.pre_alloc_mutable def test_create_contract_return_big_offset( state_test: StateTestFiller, pre: Alloc, @@ -67,9 +65,7 @@ def test_create_contract_return_big_offset( ) -> None: """Test_create_contract_return_big_offset.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0x9184E72A000) env = Environment( fee_recipient=coinbase, @@ -80,8 +76,6 @@ def test_create_contract_return_big_offset( gas_limit=89128960, ) - pre[sender] = Account(balance=0x9184E72A000) - tx_data = [ Op.RETURN(offset=0x74AC2, size=0x10000), Op.RETURN(offset=0x74AC2, size=0x51EB8), diff --git a/tests/ported_static/stCreateTest/test_create_e_contract_create_e_contract_in_init_tr.py b/tests/ported_static/stCreateTest/test_create_e_contract_create_e_contract_in_init_tr.py index 1e9a91225d0..d3288602010 100644 --- a/tests/ported_static/stCreateTest/test_create_e_contract_create_e_contract_in_init_tr.py +++ b/tests/ported_static/stCreateTest/test_create_e_contract_create_e_contract_in_init_tr.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -36,9 +35,7 @@ def test_create_e_contract_create_e_contract_in_init_tr( """Test_create_e_contract_create_e_contract_in_init_tr.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) contract_0 = Address(0xC94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -49,14 +46,12 @@ def test_create_e_contract_create_e_contract_in_init_tr( gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) # Source: lll # {[[1]]12} contract_0 = pre.deploy_contract( # noqa: F841 code=Op.SSTORE(key=0x1, value=0xC) + Op.STOP, balance=0xE8D4A51000, nonce=0, - address=Address(0xC94F5374FCE5EDBC8E2A8697C15331677E6EBF0B), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stCreateTest/test_create_e_contract_create_ne_contract_in_init_oog_tr.py b/tests/ported_static/stCreateTest/test_create_e_contract_create_ne_contract_in_init_oog_tr.py index 21592d31e33..c5b2fbd670f 100644 --- a/tests/ported_static/stCreateTest/test_create_e_contract_create_ne_contract_in_init_oog_tr.py +++ b/tests/ported_static/stCreateTest/test_create_e_contract_create_ne_contract_in_init_oog_tr.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -61,9 +60,7 @@ def test_create_e_contract_create_ne_contract_in_init_oog_tr( """Test_create_e_contract_create_ne_contract_in_init_oog_tr.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) contract_0 = Address(0xC94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -74,14 +71,12 @@ def test_create_e_contract_create_ne_contract_in_init_oog_tr( gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) # Source: lll # {[[1]]12} contract_0 = pre.deploy_contract( # noqa: F841 code=Op.SSTORE(key=0x1, value=0xC) + Op.STOP, balance=0xE8D4A51000, nonce=0, - address=Address(0xC94F5374FCE5EDBC8E2A8697C15331677E6EBF0B), # noqa: E501 ) expect_entries_: list[dict] = [ @@ -93,8 +88,9 @@ def test_create_e_contract_create_ne_contract_in_init_oog_tr( compute_create_address(address=sender, nonce=0): Account( nonce=2 ), - Address( - 0xA42676447B7CEDFA5FDE894D1D3DF24AAB362701 + compute_create_address( + address=compute_create_address(address=sender, nonce=0), + nonce=0, ): Account.NONEXISTENT, }, }, @@ -106,8 +102,9 @@ def test_create_e_contract_create_ne_contract_in_init_oog_tr( compute_create_address( address=sender, nonce=0 ): Account.NONEXISTENT, - Address( - 0xA42676447B7CEDFA5FDE894D1D3DF24AAB362701 + compute_create_address( + address=compute_create_address(address=sender, nonce=0), + nonce=0, ): Account.NONEXISTENT, }, }, diff --git a/tests/ported_static/stCreateTest/test_create_e_contract_create_ne_contract_in_init_tr.py b/tests/ported_static/stCreateTest/test_create_e_contract_create_ne_contract_in_init_tr.py index 0d015961f02..67efdc53a18 100644 --- a/tests/ported_static/stCreateTest/test_create_e_contract_create_ne_contract_in_init_tr.py +++ b/tests/ported_static/stCreateTest/test_create_e_contract_create_ne_contract_in_init_tr.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -36,9 +35,7 @@ def test_create_e_contract_create_ne_contract_in_init_tr( """Test_create_e_contract_create_ne_contract_in_init_tr.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) contract_0 = Address(0xC94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -49,14 +46,12 @@ def test_create_e_contract_create_ne_contract_in_init_tr( gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) # Source: lll # {[[1]]12} contract_0 = pre.deploy_contract( # noqa: F841 code=Op.SSTORE(key=0x1, value=0xC) + Op.STOP, balance=0xE8D4A51000, nonce=0, - address=Address(0xC94F5374FCE5EDBC8E2A8697C15331677E6EBF0B), # noqa: E501 ) tx = Transaction( @@ -81,9 +76,9 @@ def test_create_e_contract_create_ne_contract_in_init_tr( post = { contract_0: Account(storage={1: 12}), compute_create_address(address=sender, nonce=0): Account(nonce=2), - Address(0x64E2EBD6405AF8CB348AEC519084D3FFF42EBBA6): Account( - code=bytes.fromhex("600c600055") - ), + compute_create_address( + address=compute_create_address(address=sender, nonce=0), nonce=1 + ): Account(code=bytes.fromhex("600c600055")), } state_test(env=env, pre=pre, post=post, tx=tx) diff --git a/tests/ported_static/stCreateTest/test_create_e_contract_then_call_to_non_existent_acc.py b/tests/ported_static/stCreateTest/test_create_e_contract_then_call_to_non_existent_acc.py index 8ca5125d13c..f752c8b1f6b 100644 --- a/tests/ported_static/stCreateTest/test_create_e_contract_then_call_to_non_existent_acc.py +++ b/tests/ported_static/stCreateTest/test_create_e_contract_then_call_to_non_existent_acc.py @@ -86,7 +86,7 @@ def test_create_e_contract_then_call_to_non_existent_acc( contract_0: Account( storage={ 0: 0x8D5B6, - 1: 0xF1ECF98489FA9ED60A664FC4998DB699CFA39D40, + 1: compute_create_address(address=contract_0, nonce=0), 2: 0x7ABF8, 3: 1, 100: 0x6F50B, diff --git a/tests/ported_static/stCreateTest/test_create_empty000_createin_init_code_transaction.py b/tests/ported_static/stCreateTest/test_create_empty000_createin_init_code_transaction.py index 40e0530a282..6161631fc90 100644 --- a/tests/ported_static/stCreateTest/test_create_empty000_createin_init_code_transaction.py +++ b/tests/ported_static/stCreateTest/test_create_empty000_createin_init_code_transaction.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -36,9 +35,7 @@ def test_create_empty000_createin_init_code_transaction( """Test_create_empty000_createin_init_code_transaction.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) contract_0 = Address(0xC94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -49,14 +46,12 @@ def test_create_empty000_createin_init_code_transaction( gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) # Source: lll # {[[1]]12} contract_0 = pre.deploy_contract( # noqa: F841 code=Op.SSTORE(key=0x1, value=0xC) + Op.STOP, balance=0xE8D4A51000, nonce=0, - address=Address(0xC94F5374FCE5EDBC8E2A8697C15331677E6EBF0B), # noqa: E501 ) tx = Transaction( @@ -80,8 +75,8 @@ def test_create_empty000_createin_init_code_transaction( post = { contract_0: Account(storage={1: 12}), compute_create_address(address=sender, nonce=0): Account(nonce=2), - Address( - 0xA42676447B7CEDFA5FDE894D1D3DF24AAB362701 + compute_create_address( + address=compute_create_address(address=sender, nonce=0), nonce=0 ): Account.NONEXISTENT, } diff --git a/tests/ported_static/stCreateTest/test_create_empty_contract.py b/tests/ported_static/stCreateTest/test_create_empty_contract.py index 3c22a1e5e52..9790df29d6c 100644 --- a/tests/ported_static/stCreateTest/test_create_empty_contract.py +++ b/tests/ported_static/stCreateTest/test_create_empty_contract.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_create_empty_contract( """Test_create_empty_contract.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) contract_0 = Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -48,7 +45,6 @@ def test_create_empty_contract( gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) # Source: lll # { [[0]](GAS) [[1]] (CREATE 0 0 32) [[100]] (GAS) } contract_0 = pre.deploy_contract( # noqa: F841 @@ -57,7 +53,6 @@ def test_create_empty_contract( + Op.SSTORE(key=0x64, value=Op.GAS) + Op.STOP, nonce=0, - address=Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B), # noqa: E501 ) tx = Transaction( @@ -72,7 +67,7 @@ def test_create_empty_contract( contract_0: Account( storage={ 0: 0x8D5B6, - 1: 0xF1ECF98489FA9ED60A664FC4998DB699CFA39D40, + 1: compute_create_address(address=contract_0, nonce=0), 100: 0x7ABF8, }, ), diff --git a/tests/ported_static/stCreateTest/test_create_empty_contract_and_call_it_0wei.py b/tests/ported_static/stCreateTest/test_create_empty_contract_and_call_it_0wei.py index 8bad278c56e..b8efc72b9a5 100644 --- a/tests/ported_static/stCreateTest/test_create_empty_contract_and_call_it_0wei.py +++ b/tests/ported_static/stCreateTest/test_create_empty_contract_and_call_it_0wei.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_create_empty_contract_and_call_it_0wei( """Test_create_empty_contract_and_call_it_0wei.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) contract_0 = Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -48,7 +45,6 @@ def test_create_empty_contract_and_call_it_0wei( gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) # Source: lll # { [[0]](GAS) [[1]] (CREATE 0 0 32) [[2]](GAS) [[3]] (CALL 60000 (SLOAD 1) 0 0 0 0 0) [[100]] (GAS) } # noqa: E501 contract_0 = pre.deploy_contract( # noqa: F841 @@ -84,7 +80,7 @@ def test_create_empty_contract_and_call_it_0wei( contract_0: Account( storage={ 0: 0x8D5B6, - 1: 0xF1ECF98489FA9ED60A664FC4998DB699CFA39D40, + 1: compute_create_address(address=contract_0, nonce=0), 2: 0x7ABF8, 3: 1, 100: 0x6FE6B, diff --git a/tests/ported_static/stCreateTest/test_create_empty_contract_and_call_it_1wei.py b/tests/ported_static/stCreateTest/test_create_empty_contract_and_call_it_1wei.py index 14bf2963be4..1b35d16c1b5 100644 --- a/tests/ported_static/stCreateTest/test_create_empty_contract_and_call_it_1wei.py +++ b/tests/ported_static/stCreateTest/test_create_empty_contract_and_call_it_1wei.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_create_empty_contract_and_call_it_1wei( """Test_create_empty_contract_and_call_it_1wei.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) contract_0 = Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -48,7 +45,6 @@ def test_create_empty_contract_and_call_it_1wei( gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) # Source: lll # { [[0]](GAS) [[1]] (CREATE 0 0 32) [[2]](GAS) [[3]](CALL 60000 (SLOAD 1) 1 0 0 0 0) [[100]] (GAS) } # noqa: E501 contract_0 = pre.deploy_contract( # noqa: F841 @@ -85,7 +81,7 @@ def test_create_empty_contract_and_call_it_1wei( contract_0: Account( storage={ 0: 0x8D5B6, - 1: 0xF1ECF98489FA9ED60A664FC4998DB699CFA39D40, + 1: compute_create_address(address=contract_0, nonce=0), 2: 0x7ABF8, 3: 1, 100: 0x6E43F, diff --git a/tests/ported_static/stCreateTest/test_create_empty_contract_with_balance.py b/tests/ported_static/stCreateTest/test_create_empty_contract_with_balance.py index b87c0a3a6af..60862e9022b 100644 --- a/tests/ported_static/stCreateTest/test_create_empty_contract_with_balance.py +++ b/tests/ported_static/stCreateTest/test_create_empty_contract_with_balance.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_create_empty_contract_with_balance( """Test_create_empty_contract_with_balance.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) contract_0 = Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -48,7 +45,6 @@ def test_create_empty_contract_with_balance( gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) # Source: lll # { [[0]](GAS) [[1]] (CREATE 1 0 32) [[100]] (GAS) } contract_0 = pre.deploy_contract( # noqa: F841 @@ -58,7 +54,6 @@ def test_create_empty_contract_with_balance( + Op.STOP, balance=1, nonce=0, - address=Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B), # noqa: E501 ) tx = Transaction( @@ -72,7 +67,7 @@ def test_create_empty_contract_with_balance( contract_0: Account( storage={ 0: 0x8D5B6, - 1: 0xF1ECF98489FA9ED60A664FC4998DB699CFA39D40, + 1: compute_create_address(address=contract_0, nonce=0), 100: 0x7ABF8, }, ), diff --git a/tests/ported_static/stCreateTest/test_create_empty_contract_with_storage.py b/tests/ported_static/stCreateTest/test_create_empty_contract_with_storage.py index 0f4bd290243..9ca299282ef 100644 --- a/tests/ported_static/stCreateTest/test_create_empty_contract_with_storage.py +++ b/tests/ported_static/stCreateTest/test_create_empty_contract_with_storage.py @@ -88,7 +88,7 @@ def test_create_empty_contract_with_storage( contract_0: Account( storage={ 0: 0x8D5B6, - 1: 0xF1ECF98489FA9ED60A664FC4998DB699CFA39D40, + 1: compute_create_address(address=contract_0, nonce=0), 100: 0x6F4F0, }, ), diff --git a/tests/ported_static/stCreateTest/test_create_empty_contract_with_storage_and_call_it_0wei.py b/tests/ported_static/stCreateTest/test_create_empty_contract_with_storage_and_call_it_0wei.py index 177563f4064..d7940716427 100644 --- a/tests/ported_static/stCreateTest/test_create_empty_contract_with_storage_and_call_it_0wei.py +++ b/tests/ported_static/stCreateTest/test_create_empty_contract_with_storage_and_call_it_0wei.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -38,9 +37,7 @@ def test_create_empty_contract_with_storage_and_call_it_0wei( coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) contract_0 = Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) contract_1 = Address(0xC94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -51,7 +48,6 @@ def test_create_empty_contract_with_storage_and_call_it_0wei( gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) # Source: lll # { [[0]](GAS) (MSTORE 0 0x600c6000556000600060006000600073c94f5374fce5edbc8e2a8697c1533167) (MSTORE 32 0x7e6ebf0b61ea60f1000000000000000000000000000000000000000000000000) [[1]] (CREATE 0 0 64) [[2]] (GAS) [[3]] (CALL 60000 (SLOAD 1) 0 0 0 0 0) [[100]] (GAS) } # noqa: E501 contract_0 = pre.deploy_contract( # noqa: F841 @@ -103,7 +99,7 @@ def test_create_empty_contract_with_storage_and_call_it_0wei( contract_0: Account( storage={ 0: 0x8D5B6, - 1: 0xF1ECF98489FA9ED60A664FC4998DB699CFA39D40, + 1: compute_create_address(address=contract_0, nonce=0), 2: 0x6F4F0, 3: 1, 100: 0x64763, diff --git a/tests/ported_static/stCreateTest/test_create_empty_contract_with_storage_and_call_it_1wei.py b/tests/ported_static/stCreateTest/test_create_empty_contract_with_storage_and_call_it_1wei.py index 9fcff78541d..cbd15afeba3 100644 --- a/tests/ported_static/stCreateTest/test_create_empty_contract_with_storage_and_call_it_1wei.py +++ b/tests/ported_static/stCreateTest/test_create_empty_contract_with_storage_and_call_it_1wei.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -38,9 +37,7 @@ def test_create_empty_contract_with_storage_and_call_it_1wei( coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) contract_0 = Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) contract_1 = Address(0xC94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -51,7 +48,6 @@ def test_create_empty_contract_with_storage_and_call_it_1wei( gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) # Source: lll # { [[0]](GAS) (MSTORE 0 0x600c6000556000600060006000600073c94f5374fce5edbc8e2a8697c1533167) (MSTORE 32 0x7e6ebf0b61ea60f1000000000000000000000000000000000000000000000000) [[1]] (CREATE 0 0 64) [[2]] (GAS) [[3]] (CALL 60000 (SLOAD 1) 1 0 0 0 0) [[100]] (GAS) } # noqa: E501 contract_0 = pre.deploy_contract( # noqa: F841 @@ -104,7 +100,7 @@ def test_create_empty_contract_with_storage_and_call_it_1wei( contract_0: Account( storage={ 0: 0x8D5B6, - 1: 0xF1ECF98489FA9ED60A664FC4998DB699CFA39D40, + 1: compute_create_address(address=contract_0, nonce=0), 2: 0x6F4F0, 3: 1, 100: 0x62D37, diff --git a/tests/ported_static/stCreateTest/test_create_fail_result.py b/tests/ported_static/stCreateTest/test_create_fail_result.py index 9750c30d2b4..c87f3c0ec2d 100644 --- a/tests/ported_static/stCreateTest/test_create_fail_result.py +++ b/tests/ported_static/stCreateTest/test_create_fail_result.py @@ -16,6 +16,7 @@ Hash, StateTestFiller, Transaction, + compute_create_address, ) from execution_testing.forks import Fork from execution_testing.specs.static_state.expect_section import ( @@ -131,6 +132,7 @@ def test_create_fail_result( gas_limit=100000000, ) + pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE, nonce=1) # Source: yul # berlin # { @@ -161,18 +163,29 @@ def test_create_fail_result( nonce=1, address=Address(0x0000000000000000000000000000000000000BAD), # noqa: E501 ) - # Source: yul - # berlin - # { - # mstore(0, 0x600D) - # return(0, 0x20) - # } - contract_2 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x0, value=0x600D) - + Op.RETURN(offset=0x0, size=0x20), - balance=0xBA1A9CE0BA1A9CE, + # Source: raw + # 0x600100 + contract_6 = pre.deploy_contract( # noqa: F841 + code=Op.PUSH1[0x1] + Op.STOP, + balance=24589, nonce=1, - address=Address(0x000000000000000000000000000000000000600D), # noqa: E501 + address=Address(0xBB0237AB04970E3CF3E813C02064662ADC89336B), # noqa: E501 + ) + # Source: raw + # 0x600100 + contract_7 = pre.deploy_contract( # noqa: F841 + code=Op.PUSH1[0x1] + Op.STOP, + balance=24589, + nonce=1, + address=Address(0x13C950F8740FFAEA1869A88D70B029E8B0C9A8DA), # noqa: E501 + ) + # Source: raw + # 0x600100 + contract_9 = pre.deploy_contract( # noqa: F841 + code=Op.PUSH1[0x1] + Op.STOP, + balance=24589, + nonce=1, + address=Address(0xF9D1EA8EAB6963659EE85B3E0B4D8A57E7EDBA2B), # noqa: E501 ) # Source: yul # berlin @@ -183,7 +196,6 @@ def test_create_fail_result( # sstore(0x12, mload(0x100)) # sstore(0x13, mload(0x120)) # - # # // Read the constructor code from the appropriate contract # let srcAddr := calldataload(0) // either 600D or BAD # @@ -191,7 +203,7 @@ def test_create_fail_result( # extcodecopy(srcAddr, 0, 0, codeSize) # # // Create - # sstore(0,create(0, 0, codeSize)) + # sstore(0,create2(0, 0, codeSize, 0x5A17)) # # // If we have a returned buffer, see what it is # sstore(1,returndatasize()) @@ -199,12 +211,12 @@ def test_create_fail_result( # sstore(2, mload(0x200)) # sstore(3, mload(0x220)) # } - contract_3 = pre.deploy_contract( # noqa: F841 + contract_4 = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( key=0x10, value=Op.CALL( gas=Op.GAS, - address=0xDA7A, + address=contract_0, value=Op.DUP1, args_offset=Op.DUP1, args_size=0x0, @@ -215,6 +227,7 @@ def test_create_fail_result( + Op.SSTORE(key=0x11, value=Op.RETURNDATASIZE) + Op.SSTORE(key=0x12, value=Op.MLOAD(offset=0x100)) + Op.SSTORE(key=0x13, value=Op.MLOAD(offset=0x120)) + + Op.PUSH2[0x5A17] + Op.PUSH1[0x0] + Op.CALLDATALOAD(offset=Op.DUP1) + Op.DUP2 @@ -225,7 +238,7 @@ def test_create_fail_result( + Op.EXTCODECOPY + Op.PUSH1[0x0] + Op.DUP1 - + Op.SSTORE(key=0x0, value=Op.CREATE) + + Op.SSTORE(key=0x0, value=Op.CREATE2) + Op.SSTORE(key=0x1, value=Op.RETURNDATASIZE) + Op.RETURNDATACOPY( dest_offset=0x200, offset=0x0, size=Op.RETURNDATASIZE @@ -235,7 +248,7 @@ def test_create_fail_result( + Op.STOP, balance=0xBA1A9CE0BA1A9CE, nonce=1, - address=Address(0x0000000000000000000000000000000000C0DEF0), # noqa: E501 + address=Address(0x0000000000000000000000000000000000C0DEF5), # noqa: E501 ) # Source: yul # berlin @@ -253,7 +266,7 @@ def test_create_fail_result( # extcodecopy(srcAddr, 0, 0, codeSize) # # // Create - # sstore(0,create2(0, 0, codeSize, 0x5A17)) + # sstore(0,create(0, 0, codeSize)) # # // If we have a returned buffer, see what it is # sstore(1,returndatasize()) @@ -261,12 +274,12 @@ def test_create_fail_result( # sstore(2, mload(0x200)) # sstore(3, mload(0x220)) # } - contract_4 = pre.deploy_contract( # noqa: F841 + contract_8 = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( key=0x10, value=Op.CALL( gas=Op.GAS, - address=0xDA7A, + address=contract_0, value=Op.DUP1, args_offset=Op.DUP1, args_size=0x0, @@ -277,7 +290,6 @@ def test_create_fail_result( + Op.SSTORE(key=0x11, value=Op.RETURNDATASIZE) + Op.SSTORE(key=0x12, value=Op.MLOAD(offset=0x100)) + Op.SSTORE(key=0x13, value=Op.MLOAD(offset=0x120)) - + Op.PUSH2[0x5A17] + Op.PUSH1[0x0] + Op.CALLDATALOAD(offset=Op.DUP1) + Op.DUP2 @@ -288,7 +300,7 @@ def test_create_fail_result( + Op.EXTCODECOPY + Op.PUSH1[0x0] + Op.DUP1 - + Op.SSTORE(key=0x0, value=Op.CREATE2) + + Op.SSTORE(key=0x0, value=Op.CREATE) + Op.SSTORE(key=0x1, value=Op.RETURNDATASIZE) + Op.RETURNDATACOPY( dest_offset=0x200, offset=0x0, size=Op.RETURNDATASIZE @@ -298,7 +310,81 @@ def test_create_fail_result( + Op.STOP, balance=0xBA1A9CE0BA1A9CE, nonce=1, - address=Address(0x0000000000000000000000000000000000C0DEF5), # noqa: E501 + address=Address(0x0000000000000000000000000000000000C0DEEE), # noqa: E501 + ) + # Source: yul + # berlin + # { + # // The operation to run + # // F0 - CREATE + # // F5 - CREATE2 + # let oper := calldataload(0x04) + # + # // The condition for it + # // 0x0006 - OUT OF GAS + # // 0x0BAD - REVERT with data + # // 0x600D - Success + # let cond := calldataload(0x24) + # let addr := add(0xC0DE00, oper) + # + # + # + # // Before the main call, call DA7A to fill up the return buffer + # sstore(0x10, call(gas(), 0xDA7A, 0, 0, 0, 0x100, 0x40)) + # sstore(0x11, returndatasize()) + # sstore(0x12, mload(0x100)) + # sstore(0x13, mload(0x120)) + # + # + # let gasAmt := gas() + # + # // Out Of Gas, CREATE[2] always costs more than 32k in gas + # // but we need to also pay for the four SSTOREs that verify DA7A was + # // called correctly + # if eq(cond,0x0006) { gasAmt := add(30000,mul(22100,4)) } + # + # ... (14 more lines) + contract_10 = pre.deploy_contract( # noqa: F841 + code=Op.PUSH1[0x20] + + Op.PUSH2[0x200] + + Op.DUP2 + + Op.PUSH1[0x0] + + Op.DUP1 + + Op.ADD(Op.CALLDATALOAD(offset=0x4), 0xC0DE00) + + Op.CALLDATALOAD(offset=0x24) + + Op.SSTORE( + key=0x10, + value=Op.CALL( + gas=Op.GAS, + address=contract_0, + value=Op.DUP1, + args_offset=Op.DUP1, + args_size=Op.DUP5, + ret_offset=0x100, + ret_size=0x40, + ), + ) + + Op.SSTORE(key=0x11, value=Op.RETURNDATASIZE) + + Op.SSTORE(key=0x12, value=Op.MLOAD(offset=0x100)) + + Op.SSTORE(key=0x13, value=Op.MLOAD(offset=0x120)) + + Op.GAS + + Op.SWAP1 + + Op.JUMPI(pc=0x52, condition=Op.EQ(Op.DUP2, 0x6)) + + Op.JUMPDEST + + Op.DUP4 + + Op.MSTORE + + Op.SSTORE(key=0x0, value=Op.CALL) + + Op.SSTORE(key=0x1, value=Op.RETURNDATASIZE) + + Op.SSTORE(key=0x2, value=Op.MLOAD(offset=0x200)) + + Op.STOP + + Op.JUMPDEST + + Op.PUSH3[0x1CE80] + + Op.SWAP2 + + Op.POP + + Op.JUMP(pc=0x3F), + balance=0xBA1A9CE0BA1A9CE, + nonce=1, + address=Address(0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC), # noqa: E501 ) # Source: yul # berlin @@ -309,6 +395,7 @@ def test_create_fail_result( # sstore(0x12, mload(0x100)) # sstore(0x13, mload(0x120)) # + # # // Read the constructor code from the appropriate contract # let srcAddr := calldataload(0) // either 600D or BAD # @@ -316,7 +403,7 @@ def test_create_fail_result( # extcodecopy(srcAddr, 0, 0, codeSize) # # // Create - # sstore(0,create2(0, 0, codeSize, 0xBAD05A17)) + # sstore(0,create(0, 0, codeSize)) # # // If we have a returned buffer, see what it is # sstore(1,returndatasize()) @@ -324,12 +411,12 @@ def test_create_fail_result( # sstore(2, mload(0x200)) # sstore(3, mload(0x220)) # } - contract_5 = pre.deploy_contract( # noqa: F841 + contract_3 = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( key=0x10, value=Op.CALL( gas=Op.GAS, - address=0xDA7A, + address=contract_0, value=Op.DUP1, args_offset=Op.DUP1, args_size=0x0, @@ -340,7 +427,6 @@ def test_create_fail_result( + Op.SSTORE(key=0x11, value=Op.RETURNDATASIZE) + Op.SSTORE(key=0x12, value=Op.MLOAD(offset=0x100)) + Op.SSTORE(key=0x13, value=Op.MLOAD(offset=0x120)) - + Op.PUSH4[0xBAD05A17] + Op.PUSH1[0x0] + Op.CALLDATALOAD(offset=Op.DUP1) + Op.DUP2 @@ -351,7 +437,7 @@ def test_create_fail_result( + Op.EXTCODECOPY + Op.PUSH1[0x0] + Op.DUP1 - + Op.SSTORE(key=0x0, value=Op.CREATE2) + + Op.SSTORE(key=0x0, value=Op.CREATE) + Op.SSTORE(key=0x1, value=Op.RETURNDATASIZE) + Op.RETURNDATACOPY( dest_offset=0x200, offset=0x0, size=Op.RETURNDATASIZE @@ -361,23 +447,7 @@ def test_create_fail_result( + Op.STOP, balance=0xBA1A9CE0BA1A9CE, nonce=1, - address=Address(0x0000000000000000000000000000000000C0DEFF), # noqa: E501 - ) - # Source: raw - # 0x600100 - contract_6 = pre.deploy_contract( # noqa: F841 - code=Op.PUSH1[0x1] + Op.STOP, - balance=24589, - nonce=1, - address=Address(0xBB0237AB04970E3CF3E813C02064662ADC89336B), # noqa: E501 - ) - # Source: raw - # 0x600100 - contract_7 = pre.deploy_contract( # noqa: F841 - code=Op.PUSH1[0x1] + Op.STOP, - balance=24589, - nonce=1, - address=Address(0x13C950F8740FFAEA1869A88D70B029E8B0C9A8DA), # noqa: E501 + address=Address(0x0000000000000000000000000000000000C0DEF0), # noqa: E501 ) # Source: yul # berlin @@ -395,7 +465,7 @@ def test_create_fail_result( # extcodecopy(srcAddr, 0, 0, codeSize) # # // Create - # sstore(0,create(0, 0, codeSize)) + # sstore(0,create2(0, 0, codeSize, 0xBAD05A17)) # # // If we have a returned buffer, see what it is # sstore(1,returndatasize()) @@ -403,12 +473,12 @@ def test_create_fail_result( # sstore(2, mload(0x200)) # sstore(3, mload(0x220)) # } - contract_8 = pre.deploy_contract( # noqa: F841 + contract_5 = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( key=0x10, value=Op.CALL( gas=Op.GAS, - address=0xDA7A, + address=contract_0, value=Op.DUP1, args_offset=Op.DUP1, args_size=0x0, @@ -419,6 +489,7 @@ def test_create_fail_result( + Op.SSTORE(key=0x11, value=Op.RETURNDATASIZE) + Op.SSTORE(key=0x12, value=Op.MLOAD(offset=0x100)) + Op.SSTORE(key=0x13, value=Op.MLOAD(offset=0x120)) + + Op.PUSH4[0xBAD05A17] + Op.PUSH1[0x0] + Op.CALLDATALOAD(offset=Op.DUP1) + Op.DUP2 @@ -429,7 +500,7 @@ def test_create_fail_result( + Op.EXTCODECOPY + Op.PUSH1[0x0] + Op.DUP1 - + Op.SSTORE(key=0x0, value=Op.CREATE) + + Op.SSTORE(key=0x0, value=Op.CREATE2) + Op.SSTORE(key=0x1, value=Op.RETURNDATASIZE) + Op.RETURNDATACOPY( dest_offset=0x200, offset=0x0, size=Op.RETURNDATASIZE @@ -439,91 +510,21 @@ def test_create_fail_result( + Op.STOP, balance=0xBA1A9CE0BA1A9CE, nonce=1, - address=Address(0x0000000000000000000000000000000000C0DEEE), # noqa: E501 - ) - # Source: raw - # 0x600100 - contract_9 = pre.deploy_contract( # noqa: F841 - code=Op.PUSH1[0x1] + Op.STOP, - balance=24589, - nonce=1, - address=Address(0xF9D1EA8EAB6963659EE85B3E0B4D8A57E7EDBA2B), # noqa: E501 + address=Address(0x0000000000000000000000000000000000C0DEFF), # noqa: E501 ) # Source: yul # berlin # { - # // The operation to run - # // F0 - CREATE - # // F5 - CREATE2 - # let oper := calldataload(0x04) - # - # // The condition for it - # // 0x0006 - OUT OF GAS - # // 0x0BAD - REVERT with data - # // 0x600D - Success - # let cond := calldataload(0x24) - # let addr := add(0xC0DE00, oper) - # - # - # - # // Before the main call, call DA7A to fill up the return buffer - # sstore(0x10, call(gas(), 0xDA7A, 0, 0, 0, 0x100, 0x40)) - # sstore(0x11, returndatasize()) - # sstore(0x12, mload(0x100)) - # sstore(0x13, mload(0x120)) - # - # - # let gasAmt := gas() - # - # // Out Of Gas, CREATE[2] always costs more than 32k in gas - # // but we need to also pay for the four SSTOREs that verify DA7A was - # // called correctly - # if eq(cond,0x0006) { gasAmt := add(30000,mul(22100,4)) } - # - # ... (14 more lines) - contract_10 = pre.deploy_contract( # noqa: F841 - code=Op.PUSH1[0x20] - + Op.PUSH2[0x200] - + Op.DUP2 - + Op.PUSH1[0x0] - + Op.DUP1 - + Op.ADD(Op.CALLDATALOAD(offset=0x4), 0xC0DE00) - + Op.CALLDATALOAD(offset=0x24) - + Op.SSTORE( - key=0x10, - value=Op.CALL( - gas=Op.GAS, - address=0xDA7A, - value=Op.DUP1, - args_offset=Op.DUP1, - args_size=Op.DUP5, - ret_offset=0x100, - ret_size=0x40, - ), - ) - + Op.SSTORE(key=0x11, value=Op.RETURNDATASIZE) - + Op.SSTORE(key=0x12, value=Op.MLOAD(offset=0x100)) - + Op.SSTORE(key=0x13, value=Op.MLOAD(offset=0x120)) - + Op.GAS - + Op.SWAP1 - + Op.JUMPI(pc=0x52, condition=Op.EQ(Op.DUP2, 0x6)) - + Op.JUMPDEST - + Op.DUP4 - + Op.MSTORE - + Op.SSTORE(key=0x0, value=Op.CALL) - + Op.SSTORE(key=0x1, value=Op.RETURNDATASIZE) - + Op.SSTORE(key=0x2, value=Op.MLOAD(offset=0x200)) - + Op.STOP - + Op.JUMPDEST - + Op.PUSH3[0x1CE80] - + Op.SWAP2 - + Op.POP - + Op.JUMP(pc=0x3F), + # mstore(0, 0x600D) + # return(0, 0x20) + # } + contract_2 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x0, value=0x600D) + + Op.RETURN(offset=0x0, size=0x20), balance=0xBA1A9CE0BA1A9CE, nonce=1, - address=Address(0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC), # noqa: E501 + address=Address(0x000000000000000000000000000000000000600D), # noqa: E501 ) - pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE, nonce=1) expect_entries_: list[dict] = [ { @@ -549,7 +550,7 @@ def test_create_fail_result( "result": { contract_3: Account( storage={ - 0: 0xB44F2C88D3D4283CD1E54E418C4FF7E6A6C73202, + 0: compute_create_address(address=contract_3, nonce=1), 1: 0, 2: 0, 3: 0, diff --git a/tests/ported_static/stCreateTest/test_create_large_result.py b/tests/ported_static/stCreateTest/test_create_large_result.py index c64ed955641..936dde89a2a 100644 --- a/tests/ported_static/stCreateTest/test_create_large_result.py +++ b/tests/ported_static/stCreateTest/test_create_large_result.py @@ -16,6 +16,7 @@ Hash, StateTestFiller, Transaction, + compute_create_address, ) from execution_testing.forks import Fork from execution_testing.specs.static_state.expect_section import ( @@ -159,6 +160,7 @@ def test_create_large_result( gas_limit=100000000, ) + pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE, nonce=1) # Source: yul # london # { @@ -217,9 +219,9 @@ def test_create_large_result( + Op.CALLDATALOAD(offset=0x44) + Op.SWAP1 + Op.PUSH1[0x1] - + Op.EXTCODESIZE(address=0xC0DE) + + Op.EXTCODESIZE(address=contract_0) + Op.EXTCODECOPY( - address=0xC0DE, dest_offset=Op.DUP1, offset=0x0, size=Op.DUP1 + address=contract_0, dest_offset=Op.DUP1, offset=0x0, size=Op.DUP1 ) + Op.SUB + Op.MSTORE8 @@ -248,7 +250,6 @@ def test_create_large_result( nonce=1, address=Address(0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC), # noqa: E501 ) - pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE, nonce=1) expect_entries_: list[dict] = [ { @@ -257,7 +258,7 @@ def test_create_large_result( "result": { contract_1: Account( storage={ - 0: 0x553E6C30AF61E7A3576F31311EA8A620F80D047E, + 0: compute_create_address(address=contract_1, nonce=1), 1: 0x1777F, 2: 0xD956C0ABD597440481902014A37B733358EE7685461EB1B5916EEFD83381E6D9, # noqa: E501 }, @@ -293,7 +294,7 @@ def test_create_large_result( "result": { contract_1: Account( storage={ - 0: 0x553E6C30AF61E7A3576F31311EA8A620F80D047E, + 0: compute_create_address(address=contract_1, nonce=1), 1: 0x4BBCE4, 2: 0xDCBCC213F0C91B71D38DEDD06C95CCB99467B9B05F275BED536DE1044F5F18FA, # noqa: E501 }, diff --git a/tests/ported_static/stCreateTest/test_create_oo_gafter_init_code_returndata.py b/tests/ported_static/stCreateTest/test_create_oo_gafter_init_code_returndata.py index 0fd6daa2fbd..5b0054ddd8b 100644 --- a/tests/ported_static/stCreateTest/test_create_oo_gafter_init_code_returndata.py +++ b/tests/ported_static/stCreateTest/test_create_oo_gafter_init_code_returndata.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -57,9 +56,7 @@ def test_create_oo_gafter_init_code_returndata( """Call RETURNDATASIZE and RETURNDATACOPY after CREATE deploy a contract.""" # noqa: E501 coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) contract_0 = Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -70,7 +67,6 @@ def test_create_oo_gafter_init_code_returndata( gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) # Source: lll # { (MSTORE 0 0x6460016001556000526005601bf3) (CREATE 0 18 14) [[ 1 ]] (RETURNDATASIZE) (RETURNDATACOPY 0 0 32) [[ 2 ]] (MLOAD 0) } # noqa: E501 contract_0 = pre.deploy_contract( # noqa: F841 @@ -81,7 +77,6 @@ def test_create_oo_gafter_init_code_returndata( + Op.SSTORE(key=0x2, value=Op.MLOAD(offset=0x0)) + Op.STOP, nonce=0, - address=Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B), # noqa: E501 ) tx_data = [ diff --git a/tests/ported_static/stCreateTest/test_create_oo_gafter_init_code_returndata3.py b/tests/ported_static/stCreateTest/test_create_oo_gafter_init_code_returndata3.py index 7aba3a6ffbf..f7506f2dde7 100644 --- a/tests/ported_static/stCreateTest/test_create_oo_gafter_init_code_returndata3.py +++ b/tests/ported_static/stCreateTest/test_create_oo_gafter_init_code_returndata3.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -36,9 +35,7 @@ def test_create_oo_gafter_init_code_returndata3( coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) contract_0 = Address(0xC94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) contract_1 = Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -49,14 +46,21 @@ def test_create_oo_gafter_init_code_returndata3( gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) + # Source: lll + # { (MSTORE 0 0x6460016001556000526005601bf3) (CREATE 0 18 14) } + contract_1 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x0, value=0x6460016001556000526005601BF3) + + Op.CREATE(value=0x0, offset=0x12, size=0xE) + + Op.STOP, + nonce=0, + ) # Source: lll # { (CALLCODE (GAS) 0xb94f5374fce5edbc8e2a8697c15331677e6ebf0b 0 0 0 0 32) (RETURNDATACOPY 0 0 32) [[ 1 ]] (MLOAD 0) } # noqa: E501 contract_0 = pre.deploy_contract( # noqa: F841 code=Op.POP( Op.CALLCODE( gas=Op.GAS, - address=0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, + address=contract_1, value=0x0, args_offset=0x0, args_size=0x0, @@ -68,16 +72,6 @@ def test_create_oo_gafter_init_code_returndata3( + Op.SSTORE(key=0x1, value=Op.MLOAD(offset=0x0)) + Op.STOP, nonce=0, - address=Address(0xC94F5374FCE5EDBC8E2A8697C15331677E6EBF0B), # noqa: E501 - ) - # Source: lll - # { (MSTORE 0 0x6460016001556000526005601bf3) (CREATE 0 18 14) } - contract_1 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x0, value=0x6460016001556000526005601BF3) - + Op.CREATE(value=0x0, offset=0x12, size=0xE) - + Op.STOP, - nonce=0, - address=Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stCreateTest/test_create_oo_gafter_init_code_returndata_size.py b/tests/ported_static/stCreateTest/test_create_oo_gafter_init_code_returndata_size.py index ddb8a1557dc..6f458740e9d 100644 --- a/tests/ported_static/stCreateTest/test_create_oo_gafter_init_code_returndata_size.py +++ b/tests/ported_static/stCreateTest/test_create_oo_gafter_init_code_returndata_size.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -37,9 +36,7 @@ def test_create_oo_gafter_init_code_returndata_size( """Calls a contract that runs CREATE which deploy a code.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) contract_0 = Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -50,7 +47,6 @@ def test_create_oo_gafter_init_code_returndata_size( gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) # Source: lll # { (MSTORE 0 0x6960016001556001600255600052600a6016f3) (CREATE 0 13 19) (EXP 2 (RETURNDATASIZE)) } # noqa: E501 contract_0 = pre.deploy_contract( # noqa: F841 @@ -61,7 +57,6 @@ def test_create_oo_gafter_init_code_returndata_size( + Op.EXP(0x2, Op.RETURNDATASIZE) + Op.STOP, nonce=0, - address=Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stCreateTest/test_create_oo_gafter_init_code_revert.py b/tests/ported_static/stCreateTest/test_create_oo_gafter_init_code_revert.py index 17c72824f33..5efacdc166e 100644 --- a/tests/ported_static/stCreateTest/test_create_oo_gafter_init_code_revert.py +++ b/tests/ported_static/stCreateTest/test_create_oo_gafter_init_code_revert.py @@ -52,23 +52,11 @@ def test_create_oo_gafter_init_code_revert( pre[sender] = Account(balance=0xE8D4A51000) # Source: lll - # { (CALL (GAS) 0xb94f5374fce5edbc8e2a8697c15331677e6ebf0b 0 0 0 0 32) [[ 1 ]] (MLOAD 0) } # noqa: E501 - contract_0 = pre.deploy_contract( # noqa: F841 - code=Op.POP( - Op.CALL( - gas=Op.GAS, - address=0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, - value=0x0, - args_offset=0x0, - args_size=0x0, - ret_offset=0x0, - ret_size=0x20, - ) - ) - + Op.SSTORE(key=0x1, value=Op.MLOAD(offset=0x0)) - + Op.STOP, + # { (KECCAK256 0x00 0x2fffff) } + contract_2 = pre.deploy_contract( # noqa: F841 + code=Op.SHA3(offset=0x0, size=0x2FFFFF) + Op.STOP, nonce=0, - address=Address(0xC94F5374FCE5EDBC8E2A8697C15331677E6EBF0B), # noqa: E501 + address=Address(0x094F5374FCE5EDBC8E2A8697C15331677E6EBF0B), # noqa: E501 ) # Source: lll # { (MSTORE 0 0x6460016001556000526005601bf3) (CREATE 0 18 14) (CALLCODE 10000 0x094f5374fce5edbc8e2a8697c15331677e6ebf0b 0 0 0 0 0) (REVERT 0 32) } # noqa: E501 @@ -78,7 +66,7 @@ def test_create_oo_gafter_init_code_revert( + Op.POP( Op.CALLCODE( gas=0x2710, - address=0x94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, + address=contract_2, value=0x0, args_offset=0x0, args_size=0x0, @@ -92,11 +80,23 @@ def test_create_oo_gafter_init_code_revert( address=Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B), # noqa: E501 ) # Source: lll - # { (KECCAK256 0x00 0x2fffff) } - contract_2 = pre.deploy_contract( # noqa: F841 - code=Op.SHA3(offset=0x0, size=0x2FFFFF) + Op.STOP, + # { (CALL (GAS) 0xb94f5374fce5edbc8e2a8697c15331677e6ebf0b 0 0 0 0 32) [[ 1 ]] (MLOAD 0) } # noqa: E501 + contract_0 = pre.deploy_contract( # noqa: F841 + code=Op.POP( + Op.CALL( + gas=Op.GAS, + address=contract_1, + value=0x0, + args_offset=0x0, + args_size=0x0, + ret_offset=0x0, + ret_size=0x20, + ) + ) + + Op.SSTORE(key=0x1, value=Op.MLOAD(offset=0x0)) + + Op.STOP, nonce=0, - address=Address(0x094F5374FCE5EDBC8E2A8697C15331677E6EBF0B), # noqa: E501 + address=Address(0xC94F5374FCE5EDBC8E2A8697C15331677E6EBF0B), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stCreateTest/test_create_oo_gafter_max_codesize.py b/tests/ported_static/stCreateTest/test_create_oo_gafter_max_codesize.py index e127e62553d..4cd22b226bc 100644 --- a/tests/ported_static/stCreateTest/test_create_oo_gafter_max_codesize.py +++ b/tests/ported_static/stCreateTest/test_create_oo_gafter_max_codesize.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -90,9 +89,7 @@ def test_create_oo_gafter_max_codesize( contract_1 = Address(0x00000000000000000000000000000000000C0DE1) contract_2 = Address(0x00000000000000000000000000000000000C0DEB) contract_3 = Address(0x00000000000000000000000000000000000C0DEA) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0xBA1A9CE0BA1A9CE) env = Environment( fee_recipient=coinbase, @@ -315,9 +312,7 @@ def test_create_oo_gafter_max_codesize( + Op.JUMPDEST + Op.REVERT(offset=Op.DUP1, size=0x0), nonce=1, - address=Address(0x00000000000000000000000000000000000C0DEA), # noqa: E501 ) - pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stCreateTest/test_create_transaction_call_data.py b/tests/ported_static/stCreateTest/test_create_transaction_call_data.py index c5b75faf700..e30600d6af6 100644 --- a/tests/ported_static/stCreateTest/test_create_transaction_call_data.py +++ b/tests/ported_static/stCreateTest/test_create_transaction_call_data.py @@ -9,7 +9,6 @@ import pytest from execution_testing import ( - EOA, Account, Alloc, Environment, @@ -64,9 +63,7 @@ def test_create_transaction_call_data( v: int, ) -> None: """Tests if CALLDATALOAD, CALLDATACOPY, CODECOPY and CODESIZE work...""" - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0x5AF3107A4000) env = Environment( fee_recipient=sender, @@ -77,8 +74,6 @@ def test_create_transaction_call_data( gas_limit=1000000, ) - pre[sender] = Account(balance=0x5AF3107A4000) - expect_entries_: list[dict] = [ { "indexes": {"data": [0, 1], "gas": -1, "value": -1}, diff --git a/tests/ported_static/stCreateTest/test_create_transaction_high_nonce.py b/tests/ported_static/stCreateTest/test_create_transaction_high_nonce.py index c7d88161164..6ba82dc452b 100644 --- a/tests/ported_static/stCreateTest/test_create_transaction_high_nonce.py +++ b/tests/ported_static/stCreateTest/test_create_transaction_high_nonce.py @@ -9,8 +9,6 @@ import pytest from execution_testing import ( - EOA, - Account, Alloc, Environment, StateTestFiller, @@ -60,9 +58,7 @@ def test_create_transaction_high_nonce( v: int, ) -> None: """The test check if the create transaction is reject if the origin's...""" - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0x5AF3107A4000, nonce=18446744073709551615) env = Environment( fee_recipient=sender, @@ -73,8 +69,6 @@ def test_create_transaction_high_nonce( gas_limit=1000000, ) - pre[sender] = Account(balance=0x5AF3107A4000, nonce=18446744073709551615) - expect_entries_: list[dict] = [ { "indexes": {"data": -1, "gas": -1, "value": -1}, diff --git a/tests/ported_static/stDelegatecallTestHomestead/test_call1024_balance_too_low.py b/tests/ported_static/stDelegatecallTestHomestead/test_call1024_balance_too_low.py index 4aa2d08d313..ea046c78c62 100644 --- a/tests/ported_static/stDelegatecallTestHomestead/test_call1024_balance_too_low.py +++ b/tests/ported_static/stDelegatecallTestHomestead/test_call1024_balance_too_low.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -36,10 +35,7 @@ def test_call1024_balance_too_low( ) -> None: """Test_call1024_balance_too_low.""" coinbase = Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) - addr = Address(0xD9B97C712EBCE43F3C19179BBEF44B550F9E8BC0) - sender = EOA( - key=0xE7C72B378297589ACEE4E0BA3272841BCFC5E220F86DE253F890274CFEE9E474 - ) + sender = pre.fund_eoa(amount=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) env = Environment( fee_recipient=coinbase, @@ -50,8 +46,7 @@ def test_call1024_balance_too_low( gas_limit=9223372036854775807, ) - pre[sender] = Account(balance=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) - pre[addr] = Account(balance=7000) + addr = pre.fund_eoa(amount=7000) # noqa: F841 # Source: lll # { [[ 0 ]] (ADD @@0 1) [[ 1 ]] (DELEGATECALL 0xfffffffffff 0 0 0 0) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 diff --git a/tests/ported_static/stDelegatecallTestHomestead/test_call1024_oog.py b/tests/ported_static/stDelegatecallTestHomestead/test_call1024_oog.py index d2b7489c66b..2eb7e09753e 100644 --- a/tests/ported_static/stDelegatecallTestHomestead/test_call1024_oog.py +++ b/tests/ported_static/stDelegatecallTestHomestead/test_call1024_oog.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -58,10 +57,7 @@ def test_call1024_oog( ) -> None: """Test_call1024_oog.""" coinbase = Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) - addr = Address(0xD9B97C712EBCE43F3C19179BBEF44B550F9E8BC0) - sender = EOA( - key=0xE7C72B378297589ACEE4E0BA3272841BCFC5E220F86DE253F890274CFEE9E474 - ) + sender = pre.fund_eoa(amount=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) env = Environment( fee_recipient=coinbase, @@ -72,8 +68,7 @@ def test_call1024_oog( gas_limit=9223372036854775807, ) - pre[sender] = Account(balance=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) - pre[addr] = Account(balance=7000) + addr = pre.fund_eoa(amount=7000) # noqa: F841 # Source: lll # { [[ 0 ]] (ADD @@0 1) [[ 1 ]] (DELEGATECALL (MUL (SUB (GAS) 10000) (SUB 1 (DIV @@0 1025))) 0 0 0 0) [[ 2 ]] (ADD 1(MUL @@0 1000)) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 diff --git a/tests/ported_static/stDelegatecallTestHomestead/test_call_output1.py b/tests/ported_static/stDelegatecallTestHomestead/test_call_output1.py index a34e21f9c05..e5ab00975ff 100644 --- a/tests/ported_static/stDelegatecallTestHomestead/test_call_output1.py +++ b/tests/ported_static/stDelegatecallTestHomestead/test_call_output1.py @@ -46,6 +46,15 @@ def test_call_output1( gas_limit=1000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: raw + # 0x6001600101600055 + addr = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x0, value=Op.ADD(0x1, 0x1)), + balance=0xDE0B6B3A7640000, + nonce=0, + address=Address(0xBCC1197CCD23A97607F2F96D031F3432E0D16A02), # noqa: E501 + ) # Source: lll # { (MSTORE 0 0x5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6) (DELEGATECALL 50000 0 0 0 0) [[ 0 ]] (MLOAD 0) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -56,7 +65,7 @@ def test_call_output1( + Op.POP( Op.DELEGATECALL( gas=0xC350, - address=0xBCC1197CCD23A97607F2F96D031F3432E0D16A02, + address=addr, args_offset=0x0, args_size=0x0, ret_offset=0x0, @@ -69,15 +78,6 @@ def test_call_output1( nonce=0, address=Address(0x79ACCF3A3F2D0E87BEB2D0F72039A5AA27D46426), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) - # Source: raw - # 0x6001600101600055 - addr = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x0, value=Op.ADD(0x1, 0x1)), - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0xBCC1197CCD23A97607F2F96D031F3432E0D16A02), # noqa: E501 - ) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stDelegatecallTestHomestead/test_call_output2.py b/tests/ported_static/stDelegatecallTestHomestead/test_call_output2.py index d50c8cfcb67..40d1f6758af 100644 --- a/tests/ported_static/stDelegatecallTestHomestead/test_call_output2.py +++ b/tests/ported_static/stDelegatecallTestHomestead/test_call_output2.py @@ -46,6 +46,15 @@ def test_call_output2( gas_limit=1000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: raw + # 0x6001600101600055 + addr = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x0, value=Op.ADD(0x1, 0x1)), + balance=0xDE0B6B3A7640000, + nonce=0, + address=Address(0xBCC1197CCD23A97607F2F96D031F3432E0D16A02), # noqa: E501 + ) # Source: lll # { (MSTORE 0 0x5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6) (DELEGATECALL 50000 0 32 0 0) [[ 0 ]] (MLOAD 0)} # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -56,7 +65,7 @@ def test_call_output2( + Op.POP( Op.DELEGATECALL( gas=0xC350, - address=0xBCC1197CCD23A97607F2F96D031F3432E0D16A02, + address=addr, args_offset=0x0, args_size=0x20, ret_offset=0x0, @@ -69,15 +78,6 @@ def test_call_output2( nonce=0, address=Address(0x6F04A8BA354531ECD357E2CD4DDB43140F1E5FC9), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) - # Source: raw - # 0x6001600101600055 - addr = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x0, value=Op.ADD(0x1, 0x1)), - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0xBCC1197CCD23A97607F2F96D031F3432E0D16A02), # noqa: E501 - ) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stDelegatecallTestHomestead/test_call_output3.py b/tests/ported_static/stDelegatecallTestHomestead/test_call_output3.py index 038fab4be3b..dd3cd83e332 100644 --- a/tests/ported_static/stDelegatecallTestHomestead/test_call_output3.py +++ b/tests/ported_static/stDelegatecallTestHomestead/test_call_output3.py @@ -46,6 +46,15 @@ def test_call_output3( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: raw + # 0x6001600101600055 + addr = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x0, value=Op.ADD(0x1, 0x1)), + balance=0xDE0B6B3A7640000, + nonce=0, + address=Address(0xBCC1197CCD23A97607F2F96D031F3432E0D16A02), # noqa: E501 + ) # Source: lll # { (MSTORE 0 0x5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6) (DELEGATECALL 50000 0 0 0 32) [[ 0 ]] (MLOAD 0)} # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -56,7 +65,7 @@ def test_call_output3( + Op.POP( Op.DELEGATECALL( gas=0xC350, - address=0xBCC1197CCD23A97607F2F96D031F3432E0D16A02, + address=addr, args_offset=0x0, args_size=0x0, ret_offset=0x0, @@ -69,15 +78,6 @@ def test_call_output3( nonce=0, address=Address(0x4E40004DEDFDAD4927C60DE1289AB14535F5121A), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) - # Source: raw - # 0x6001600101600055 - addr = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x0, value=Op.ADD(0x1, 0x1)), - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0xBCC1197CCD23A97607F2F96D031F3432E0D16A02), # noqa: E501 - ) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stDelegatecallTestHomestead/test_call_output3partial.py b/tests/ported_static/stDelegatecallTestHomestead/test_call_output3partial.py index 876cf5a8de2..2f4902b73d1 100644 --- a/tests/ported_static/stDelegatecallTestHomestead/test_call_output3partial.py +++ b/tests/ported_static/stDelegatecallTestHomestead/test_call_output3partial.py @@ -46,6 +46,15 @@ def test_call_output3partial( gas_limit=1000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: raw + # 0x6001600101600055 + addr = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x0, value=Op.ADD(0x1, 0x1)), + balance=0xDE0B6B3A7640000, + nonce=0, + address=Address(0xBCC1197CCD23A97607F2F96D031F3432E0D16A02), # noqa: E501 + ) # Source: lll # { (MSTORE 0 0x5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6) (DELEGATECALL 50000 0 0 0 10) [[ 0 ]] (MLOAD 0)} # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -56,7 +65,7 @@ def test_call_output3partial( + Op.POP( Op.DELEGATECALL( gas=0xC350, - address=0xBCC1197CCD23A97607F2F96D031F3432E0D16A02, + address=addr, args_offset=0x0, args_size=0x0, ret_offset=0x0, @@ -69,15 +78,6 @@ def test_call_output3partial( nonce=0, address=Address(0xEFB6356473F53E06A8627E7AC82AB3AB3D24E68A), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) - # Source: raw - # 0x6001600101600055 - addr = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x0, value=Op.ADD(0x1, 0x1)), - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0xBCC1197CCD23A97607F2F96D031F3432E0D16A02), # noqa: E501 - ) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stDelegatecallTestHomestead/test_call_output3partial_fail.py b/tests/ported_static/stDelegatecallTestHomestead/test_call_output3partial_fail.py index 2fd02853949..e7f0b8e4810 100644 --- a/tests/ported_static/stDelegatecallTestHomestead/test_call_output3partial_fail.py +++ b/tests/ported_static/stDelegatecallTestHomestead/test_call_output3partial_fail.py @@ -48,6 +48,15 @@ def test_call_output3partial_fail( gas_limit=1000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: raw + # 0x016001600101600055 + addr = pre.deploy_contract( # noqa: F841 + code=Op.ADD + Op.SSTORE(key=0x0, value=Op.ADD(0x1, 0x1)), + balance=0xDE0B6B3A7640000, + nonce=0, + address=Address(0x834ABC2C68C5F44EA9AE82B67AAF92044901CDC6), # noqa: E501 + ) # Source: lll # { (MSTORE 0 0x5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6) (DELEGATECALL 50000 0 0 0 10) [[ 0 ]] (MLOAD 0)} # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -58,7 +67,7 @@ def test_call_output3partial_fail( + Op.POP( Op.DELEGATECALL( gas=0xC350, - address=0x834ABC2C68C5F44EA9AE82B67AAF92044901CDC6, + address=addr, args_offset=0x0, args_size=0x0, ret_offset=0x0, @@ -71,15 +80,6 @@ def test_call_output3partial_fail( nonce=0, address=Address(0xEFB6356473F53E06A8627E7AC82AB3AB3D24E68A), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) - # Source: raw - # 0x016001600101600055 - addr = pre.deploy_contract( # noqa: F841 - code=Op.ADD + Op.SSTORE(key=0x0, value=Op.ADD(0x1, 0x1)), - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0x834ABC2C68C5F44EA9AE82B67AAF92044901CDC6), # noqa: E501 - ) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stDelegatecallTestHomestead/test_call_recursive_bomb_pre_call.py b/tests/ported_static/stDelegatecallTestHomestead/test_call_recursive_bomb_pre_call.py index eb37a533df6..6460d6ad306 100644 --- a/tests/ported_static/stDelegatecallTestHomestead/test_call_recursive_bomb_pre_call.py +++ b/tests/ported_static/stDelegatecallTestHomestead/test_call_recursive_bomb_pre_call.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -36,9 +35,7 @@ def test_call_recursive_bomb_pre_call( ) -> None: """Test_call_recursive_bomb_pre_call.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x77F65B71F1F16A75476F469F7106D1B60BFEC266AE25B8DA16A9091D223AA24A - ) + sender = pre.fund_eoa(amount=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) env = Environment( fee_recipient=coinbase, @@ -97,7 +94,6 @@ def test_call_recursive_bomb_pre_call( nonce=0, address=Address(0x3046257C307A51F1A8AE73F6F6360937DD21138E), # noqa: E501 ) - pre[sender] = Account(balance=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stDelegatecallTestHomestead/test_call_with_high_value_and_gas_oog.py b/tests/ported_static/stDelegatecallTestHomestead/test_call_with_high_value_and_gas_oog.py index 52223519a53..10228549068 100644 --- a/tests/ported_static/stDelegatecallTestHomestead/test_call_with_high_value_and_gas_oog.py +++ b/tests/ported_static/stDelegatecallTestHomestead/test_call_with_high_value_and_gas_oog.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_call_with_high_value_and_gas_oog( ) -> None: """Test_call_with_high_value_and_gas_oog.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -48,6 +45,15 @@ def test_call_with_high_value_and_gas_oog( gas_limit=30000000, ) + # Source: raw + # 0x6001600155603760005360026000f3 + addr = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x1, value=0x1) + + Op.MSTORE8(offset=0x0, value=0x37) + + Op.RETURN(offset=0x0, size=0x2), + balance=23, + nonce=0, + ) # Source: lll # { (MSTORE 0 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) (MSTORE 32 0xaaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa ) [[ 0 ]] (DELEGATECALL 0xffffffffffffffffffffffff 0 64 0 2 ) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -63,7 +69,7 @@ def test_call_with_high_value_and_gas_oog( key=0x0, value=Op.DELEGATECALL( gas=0xFFFFFFFFFFFFFFFFFFFFFFFF, - address=0x896F13E800125C0CCEC44F3C434335F0A97BC1B, + address=addr, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -73,19 +79,7 @@ def test_call_with_high_value_and_gas_oog( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xA7465A0005567E06FBAA3AE783E57F22419C5A0A), # noqa: E501 - ) - # Source: raw - # 0x6001600155603760005360026000f3 - addr = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x1, value=0x1) - + Op.MSTORE8(offset=0x0, value=0x37) - + Op.RETURN(offset=0x0, size=0x2), - balance=23, - nonce=0, - address=Address(0x0896F13E800125C0CCEC44F3C434335F0A97BC1B), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stDelegatecallTestHomestead/test_callcode_output3.py b/tests/ported_static/stDelegatecallTestHomestead/test_callcode_output3.py index ed42703b0fa..c90119c6d77 100644 --- a/tests/ported_static/stDelegatecallTestHomestead/test_callcode_output3.py +++ b/tests/ported_static/stDelegatecallTestHomestead/test_callcode_output3.py @@ -46,6 +46,15 @@ def test_callcode_output3( gas_limit=1000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: raw + # 0x6001600101600055 + addr = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x0, value=Op.ADD(0x1, 0x1)), + balance=0xDE0B6B3A7640000, + nonce=0, + address=Address(0xBCC1197CCD23A97607F2F96D031F3432E0D16A02), # noqa: E501 + ) # Source: lll # { (MSTORE 0 0x5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6) (DELEGATECALL 50000 0 0 0 32) [[ 0 ]] (MLOAD 0)} # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -56,7 +65,7 @@ def test_callcode_output3( + Op.POP( Op.DELEGATECALL( gas=0xC350, - address=0xBCC1197CCD23A97607F2F96D031F3432E0D16A02, + address=addr, args_offset=0x0, args_size=0x0, ret_offset=0x0, @@ -69,15 +78,6 @@ def test_callcode_output3( nonce=0, address=Address(0x4E40004DEDFDAD4927C60DE1289AB14535F5121A), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) - # Source: raw - # 0x6001600101600055 - addr = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x0, value=Op.ADD(0x1, 0x1)), - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0xBCC1197CCD23A97607F2F96D031F3432E0D16A02), # noqa: E501 - ) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stDelegatecallTestHomestead/test_callcode_with_high_value_and_gas_oog.py b/tests/ported_static/stDelegatecallTestHomestead/test_callcode_with_high_value_and_gas_oog.py index 842f5448d2e..3d9988dab1b 100644 --- a/tests/ported_static/stDelegatecallTestHomestead/test_callcode_with_high_value_and_gas_oog.py +++ b/tests/ported_static/stDelegatecallTestHomestead/test_callcode_with_high_value_and_gas_oog.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcode_with_high_value_and_gas_oog( ) -> None: """Test_callcode_with_high_value_and_gas_oog.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -48,6 +45,15 @@ def test_callcode_with_high_value_and_gas_oog( gas_limit=30000000, ) + # Source: raw + # 0x6001600155603760005360026000f3 + addr = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x1, value=0x1) + + Op.MSTORE8(offset=0x0, value=0x37) + + Op.RETURN(offset=0x0, size=0x2), + balance=23, + nonce=0, + ) # Source: lll # { (MSTORE 0 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) (MSTORE 32 0xaaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa ) [[ 0 ]] (DELEGATECALL 0xffffffffffffffffffffffff 0 64 0 2 ) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -63,7 +69,7 @@ def test_callcode_with_high_value_and_gas_oog( key=0x0, value=Op.DELEGATECALL( gas=0xFFFFFFFFFFFFFFFFFFFFFFFF, - address=0x896F13E800125C0CCEC44F3C434335F0A97BC1B, + address=addr, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -73,19 +79,7 @@ def test_callcode_with_high_value_and_gas_oog( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xA7465A0005567E06FBAA3AE783E57F22419C5A0A), # noqa: E501 - ) - # Source: raw - # 0x6001600155603760005360026000f3 - addr = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x1, value=0x1) - + Op.MSTORE8(offset=0x0, value=0x37) - + Op.RETURN(offset=0x0, size=0x2), - balance=23, - nonce=0, - address=Address(0x0896F13E800125C0CCEC44F3C434335F0A97BC1B), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stDelegatecallTestHomestead/test_deleagate_call_after_value_transfer.py b/tests/ported_static/stDelegatecallTestHomestead/test_deleagate_call_after_value_transfer.py index d413b7f60ff..a17a34fd41e 100644 --- a/tests/ported_static/stDelegatecallTestHomestead/test_deleagate_call_after_value_transfer.py +++ b/tests/ported_static/stDelegatecallTestHomestead/test_deleagate_call_after_value_transfer.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_deleagate_call_after_value_transfer( ) -> None: """Test_deleagate_call_after_value_transfer.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x3722FAAB4D25B944622D559EA4BCF38B4BCF3CAF07A6D2C6FD99321C1A66C974 - ) + sender = pre.fund_eoa(amount=0x2386F26FC10000) env = Environment( fee_recipient=coinbase, @@ -48,13 +45,22 @@ def test_deleagate_call_after_value_transfer( gas_limit=1000000, ) + # Source: lll + # { (SSTORE 0 (CALLVALUE)) (SSTORE 1 (CALLER)) (SSTORE 2 (CALLDATALOAD 0)) } # noqa: E501 + addr = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x0, value=Op.CALLVALUE) + + Op.SSTORE(key=0x1, value=Op.CALLER) + + Op.SSTORE(key=0x2, value=Op.CALLDATALOAD(offset=0x0)) + + Op.STOP, + nonce=0, + ) # Source: lll # { (MSTORE 0 0x01) (DELEGATECALL 100000 0 64 0 64) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 code=Op.MSTORE(offset=0x0, value=0x1) + Op.DELEGATECALL( gas=0x186A0, - address=0x346AA231CB52F55DDF201DC19CA469CC73E6495, + address=addr, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -63,19 +69,7 @@ def test_deleagate_call_after_value_transfer( + Op.STOP, balance=0x10C8E0, nonce=0, - address=Address(0xDD657898B318B3D967472EAA82BB75C4141B6735), # noqa: E501 - ) - # Source: lll - # { (SSTORE 0 (CALLVALUE)) (SSTORE 1 (CALLER)) (SSTORE 2 (CALLDATALOAD 0)) } # noqa: E501 - addr = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x0, value=Op.CALLVALUE) - + Op.SSTORE(key=0x1, value=Op.CALLER) - + Op.SSTORE(key=0x2, value=Op.CALLDATALOAD(offset=0x0)) - + Op.STOP, - nonce=0, - address=Address(0x0346AA231CB52F55DDF201DC19CA469CC73E6495), # noqa: E501 ) - pre[sender] = Account(balance=0x2386F26FC10000) tx = Transaction( sender=sender, @@ -85,13 +79,7 @@ def test_deleagate_call_after_value_transfer( ) post = { - target: Account( - storage={ - 0: 0, - 1: 0x6FDA566D1950D7E0A4DAC1DE87109B2CA7D12DA4, - 2: 1, - }, - ), + target: Account(storage={0: 0, 1: sender, 2: 1}), addr: Account(storage={0: 0, 1: 0, 2: 0}), } diff --git a/tests/ported_static/stDelegatecallTestHomestead/test_delegatecall1024.py b/tests/ported_static/stDelegatecallTestHomestead/test_delegatecall1024.py index 21c52e64dd9..fc95b4c8ca8 100644 --- a/tests/ported_static/stDelegatecallTestHomestead/test_delegatecall1024.py +++ b/tests/ported_static/stDelegatecallTestHomestead/test_delegatecall1024.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,10 +33,7 @@ def test_delegatecall1024( ) -> None: """Test_delegatecall1024.""" coinbase = Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) - addr = Address(0xD9B97C712EBCE43F3C19179BBEF44B550F9E8BC0) - sender = EOA( - key=0xE7C72B378297589ACEE4E0BA3272841BCFC5E220F86DE253F890274CFEE9E474 - ) + sender = pre.fund_eoa(amount=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) env = Environment( fee_recipient=coinbase, @@ -48,8 +44,7 @@ def test_delegatecall1024( gas_limit=9223372036854775807, ) - pre[sender] = Account(balance=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) - pre[addr] = Account(balance=7000) + addr = pre.fund_eoa(amount=7000) # noqa: F841 # Source: lll # { [[ 0 ]] (ADD @@0 1) [[ 1 ]] (DELEGATECALL 0xfffffffffff 0 0 0 0) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 diff --git a/tests/ported_static/stDelegatecallTestHomestead/test_delegatecall1024_oog.py b/tests/ported_static/stDelegatecallTestHomestead/test_delegatecall1024_oog.py index 8abb223e58d..42959c58111 100644 --- a/tests/ported_static/stDelegatecallTestHomestead/test_delegatecall1024_oog.py +++ b/tests/ported_static/stDelegatecallTestHomestead/test_delegatecall1024_oog.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,10 +32,7 @@ def test_delegatecall1024_oog( ) -> None: """Test_delegatecall1024_oog.""" coinbase = Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) - addr = Address(0xD9B97C712EBCE43F3C19179BBEF44B550F9E8BC0) - sender = EOA( - key=0xE7C72B378297589ACEE4E0BA3272841BCFC5E220F86DE253F890274CFEE9E474 - ) + sender = pre.fund_eoa(amount=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) env = Environment( fee_recipient=coinbase, @@ -47,8 +43,7 @@ def test_delegatecall1024_oog( gas_limit=9223372036854775807, ) - pre[sender] = Account(balance=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) - pre[addr] = Account(balance=7000) + addr = pre.fund_eoa(amount=7000) # noqa: F841 # Source: lll # { [[ 0 ]] (ADD @@0 1) [[ 1 ]] (DELEGATECALL (MUL (SUB (GAS) 10000) (SUB 1 (DIV @@0 1025))) 0 0 0 0) [[ 2 ]] (ADD 1(MUL @@0 1000)) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 diff --git a/tests/ported_static/stDelegatecallTestHomestead/test_delegatecall_and_oo_gat_tx_level.py b/tests/ported_static/stDelegatecallTestHomestead/test_delegatecall_and_oo_gat_tx_level.py index 6ccacffd7df..8b5a6413104 100644 --- a/tests/ported_static/stDelegatecallTestHomestead/test_delegatecall_and_oo_gat_tx_level.py +++ b/tests/ported_static/stDelegatecallTestHomestead/test_delegatecall_and_oo_gat_tx_level.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_delegatecall_and_oo_gat_tx_level( ) -> None: """Test_delegatecall_and_oo_gat_tx_level.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -48,6 +45,15 @@ def test_delegatecall_and_oo_gat_tx_level( gas_limit=30000000, ) + # Source: raw + # 0x6001600155603760005360026000f3 + addr = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x1, value=0x1) + + Op.MSTORE8(offset=0x0, value=0x37) + + Op.RETURN(offset=0x0, size=0x2), + balance=23, + nonce=0, + ) # Source: lll # { [[ 0 ]] (DELEGATECALL 3000001 0 0 0 0 ) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -55,7 +61,7 @@ def test_delegatecall_and_oo_gat_tx_level( key=0x0, value=Op.DELEGATECALL( gas=0x2DC6C1, - address=0x896F13E800125C0CCEC44F3C434335F0A97BC1B, + address=addr, args_offset=0x0, args_size=0x0, ret_offset=0x0, @@ -65,19 +71,7 @@ def test_delegatecall_and_oo_gat_tx_level( + Op.STOP, balance=0x186A0, nonce=0, - address=Address(0x830AB9AD91366BFB2BB745E4A637F97B25087928), # noqa: E501 - ) - # Source: raw - # 0x6001600155603760005360026000f3 - addr = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x1, value=0x1) - + Op.MSTORE8(offset=0x0, value=0x37) - + Op.RETURN(offset=0x0, size=0x2), - balance=23, - nonce=0, - address=Address(0x0896F13E800125C0CCEC44F3C434335F0A97BC1B), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stDelegatecallTestHomestead/test_delegatecall_basic.py b/tests/ported_static/stDelegatecallTestHomestead/test_delegatecall_basic.py index 79d25d26e1b..9ff0b5b6fce 100644 --- a/tests/ported_static/stDelegatecallTestHomestead/test_delegatecall_basic.py +++ b/tests/ported_static/stDelegatecallTestHomestead/test_delegatecall_basic.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_delegatecall_basic( ) -> None: """Test_delegatecall_basic.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,6 +43,15 @@ def test_delegatecall_basic( gas_limit=30000000, ) + # Source: raw + # 0x6001600155603760005360026000f3 + addr = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x1, value=0x1) + + Op.MSTORE8(offset=0x0, value=0x37) + + Op.RETURN(offset=0x0, size=0x2), + balance=23, + nonce=0, + ) # Source: lll # { [[ 0 ]] (DELEGATECALL 500000 0 64 0 2 ) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -53,7 +59,7 @@ def test_delegatecall_basic( key=0x0, value=Op.DELEGATECALL( gas=0x7A120, - address=0x896F13E800125C0CCEC44F3C434335F0A97BC1B, + address=addr, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -63,19 +69,7 @@ def test_delegatecall_basic( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x55BB8A8658B848EBBBB73CBF6AC9D59D715AEC58), # noqa: E501 - ) - # Source: raw - # 0x6001600155603760005360026000f3 - addr = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x1, value=0x1) - + Op.MSTORE8(offset=0x0, value=0x37) - + Op.RETURN(offset=0x0, size=0x2), - balance=23, - nonce=0, - address=Address(0x0896F13E800125C0CCEC44F3C434335F0A97BC1B), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stDelegatecallTestHomestead/test_delegatecall_emptycontract.py b/tests/ported_static/stDelegatecallTestHomestead/test_delegatecall_emptycontract.py index 1e09d014260..60b0410f6c4 100644 --- a/tests/ported_static/stDelegatecallTestHomestead/test_delegatecall_emptycontract.py +++ b/tests/ported_static/stDelegatecallTestHomestead/test_delegatecall_emptycontract.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_delegatecall_emptycontract( ) -> None: """Test_delegatecall_emptycontract.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x11489F9B076D3F3185EBE5C6E2DBEDBE9E283A6CE75895780134252B3DD5DBCC - ) + sender = pre.fund_eoa(amount=0x10C8E0) env = Environment( fee_recipient=coinbase, @@ -65,9 +62,7 @@ def test_delegatecall_emptycontract( + Op.STOP, balance=1000, nonce=0, - address=Address(0x4A88CF3B3F1DABDD27E62FCB5DF86D7D685E0044), # noqa: E501 ) - pre[sender] = Account(balance=0x10C8E0) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stDelegatecallTestHomestead/test_delegatecall_in_initcode_to_empty_contract.py b/tests/ported_static/stDelegatecallTestHomestead/test_delegatecall_in_initcode_to_empty_contract.py index 853a44901bd..1cac7ff8c76 100644 --- a/tests/ported_static/stDelegatecallTestHomestead/test_delegatecall_in_initcode_to_empty_contract.py +++ b/tests/ported_static/stDelegatecallTestHomestead/test_delegatecall_in_initcode_to_empty_contract.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -37,9 +36,7 @@ def test_delegatecall_in_initcode_to_empty_contract( """Test_delegatecall_in_initcode_to_empty_contract.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) contract_0 = Address(0x1000000000000000000000000000000000000000) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0x2386F26FC10000) env = Environment( fee_recipient=coinbase, @@ -65,9 +62,7 @@ def test_delegatecall_in_initcode_to_empty_contract( + Op.STOP, balance=10000, nonce=0, - address=Address(0x1000000000000000000000000000000000000000), # noqa: E501 ) - pre[sender] = Account(balance=0x2386F26FC10000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stDelegatecallTestHomestead/test_delegatecall_in_initcode_to_existing_contract.py b/tests/ported_static/stDelegatecallTestHomestead/test_delegatecall_in_initcode_to_existing_contract.py index 2064cc786a3..e20c162ae59 100644 --- a/tests/ported_static/stDelegatecallTestHomestead/test_delegatecall_in_initcode_to_existing_contract.py +++ b/tests/ported_static/stDelegatecallTestHomestead/test_delegatecall_in_initcode_to_existing_contract.py @@ -52,6 +52,7 @@ def test_delegatecall_in_initcode_to_existing_contract( gas_limit=1000000, ) + pre[sender] = Account(balance=0x2386F26FC10000) # Source: lll # { (MSTORE 0 0x604060006040600073945304eb96065b2a98b57a48a06ae28d285a71b5620186) (MSTORE 32 0xa0f4600055336001550000000000000000000000000000000000000000000000) (CREATE 1 0 64) } # noqa: E501 contract_0 = pre.deploy_contract( # noqa: F841 @@ -88,7 +89,6 @@ def test_delegatecall_in_initcode_to_existing_contract( nonce=0, address=Address(0x945304EB96065B2A98B57A48A06AE28D285A71B5), # noqa: E501 ) - pre[sender] = Account(balance=0x2386F26FC10000) tx = Transaction( sender=sender, @@ -99,12 +99,7 @@ def test_delegatecall_in_initcode_to_existing_contract( post = { compute_create_address(address=contract_0, nonce=0): Account( - storage={ - 0: 1, - 1: 0x1000000000000000000000000000000000000000, - 2: 1, - 11: 0x1000000000000000000000000000000000000000, - }, + storage={0: 1, 1: contract_0, 2: 1, 11: contract_0}, balance=1, ), } diff --git a/tests/ported_static/stDelegatecallTestHomestead/test_delegatecall_sender_check.py b/tests/ported_static/stDelegatecallTestHomestead/test_delegatecall_sender_check.py index 24ad9900bc6..1a8518db75f 100644 --- a/tests/ported_static/stDelegatecallTestHomestead/test_delegatecall_sender_check.py +++ b/tests/ported_static/stDelegatecallTestHomestead/test_delegatecall_sender_check.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_delegatecall_sender_check( ) -> None: """Test_delegatecall_sender_check.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -48,6 +45,13 @@ def test_delegatecall_sender_check( gas_limit=30000000, ) + # Source: lll + # {[[ 1 ]] (CALLER)} + addr = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x1, value=Op.CALLER) + Op.STOP, + balance=23, + nonce=0, + ) # Source: lll # { [[ 0 ]] (DELEGATECALL 500000 0 64 0 2 ) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -55,7 +59,7 @@ def test_delegatecall_sender_check( key=0x0, value=Op.DELEGATECALL( gas=0x7A120, - address=0x7607CC240D38CCF9B55D1EEB1DF0C187F8EC28C1, + address=addr, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -65,17 +69,7 @@ def test_delegatecall_sender_check( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x55BB8A8658B848EBBBB73CBF6AC9D59D715AEC58), # noqa: E501 - ) - # Source: lll - # {[[ 1 ]] (CALLER)} - addr = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x1, value=Op.CALLER) + Op.STOP, - balance=23, - nonce=0, - address=Address(0x7607CC240D38CCF9B55D1EEB1DF0C187F8EC28C1), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, @@ -84,13 +78,6 @@ def test_delegatecall_sender_check( gas_limit=3000000, ) - post = { - target: Account( - storage={ - 0: 1, - 1: 0xEBAF50DEBF10E08302FE4280C32DF010463CA297, - }, - ), - } + post = {target: Account(storage={0: 1, 1: sender})} state_test(env=env, pre=pre, post=post, tx=tx) diff --git a/tests/ported_static/stDelegatecallTestHomestead/test_delegatecall_value_check.py b/tests/ported_static/stDelegatecallTestHomestead/test_delegatecall_value_check.py index 8c7005b3242..9d544dbdff8 100644 --- a/tests/ported_static/stDelegatecallTestHomestead/test_delegatecall_value_check.py +++ b/tests/ported_static/stDelegatecallTestHomestead/test_delegatecall_value_check.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_delegatecall_value_check( ) -> None: """Test_delegatecall_value_check.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -48,6 +45,13 @@ def test_delegatecall_value_check( gas_limit=30000000, ) + # Source: lll + # {[[ 1 ]] (CALLVALUE) } + addr = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x1, value=Op.CALLVALUE) + Op.STOP, + balance=23, + nonce=0, + ) # Source: lll # { [[ 0 ]] (DELEGATECALL 500000 0 64 0 2 ) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -55,7 +59,7 @@ def test_delegatecall_value_check( key=0x0, value=Op.DELEGATECALL( gas=0x7A120, - address=0x5D25AD2A26F849E9400D6B65244F26F4EEA11ADF, + address=addr, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -65,17 +69,7 @@ def test_delegatecall_value_check( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x55BB8A8658B848EBBBB73CBF6AC9D59D715AEC58), # noqa: E501 - ) - # Source: lll - # {[[ 1 ]] (CALLVALUE) } - addr = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x1, value=Op.CALLVALUE) + Op.STOP, - balance=23, - nonce=0, - address=Address(0x5D25AD2A26F849E9400D6B65244F26F4EEA11ADF), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stDelegatecallTestHomestead/test_delegatecode_dynamic_code.py b/tests/ported_static/stDelegatecallTestHomestead/test_delegatecode_dynamic_code.py index e1cda9b2948..13cf2e5404a 100644 --- a/tests/ported_static/stDelegatecallTestHomestead/test_delegatecode_dynamic_code.py +++ b/tests/ported_static/stDelegatecallTestHomestead/test_delegatecode_dynamic_code.py @@ -50,6 +50,7 @@ def test_delegatecode_dynamic_code( gas_limit=1000000, ) + pre[sender] = Account(balance=0x2386F26FC10000) # Source: lll # { (MSTORE 0 0x716860016000553360145560005260096017f36000526012600e6001f0600a55) (MSTORE 32 0x604060006040600073ffe4ebd2a68c02d9dcb0a17283d13346beb2d8b6620186) (MSTORE 64 0xa0f4600b55000000000000000000000000000000000000000000000000000000) (CREATE 1 0 96) } # noqa: E501 contract_0 = pre.deploy_contract( # noqa: F841 @@ -71,7 +72,6 @@ def test_delegatecode_dynamic_code( nonce=0, address=Address(0x1000000000000000000000000000000000000000), # noqa: E501 ) - pre[sender] = Account(balance=0x2386F26FC10000) tx = Transaction( sender=sender, @@ -81,8 +81,9 @@ def test_delegatecode_dynamic_code( ) post = { - Address( - 0xFFE4EBD2A68C02D9DCB0A17283D13346BEB2D8B6 + compute_create_address( + address=compute_create_address(address=contract_0, nonce=0), + nonce=0, ): Account.NONEXISTENT, compute_create_address(address=contract_0, nonce=0): Account( storage={ diff --git a/tests/ported_static/stDelegatecallTestHomestead/test_delegatecode_dynamic_code2_self_call.py b/tests/ported_static/stDelegatecallTestHomestead/test_delegatecode_dynamic_code2_self_call.py index 9b084d3e8a5..dafe15bd0c0 100644 --- a/tests/ported_static/stDelegatecallTestHomestead/test_delegatecode_dynamic_code2_self_call.py +++ b/tests/ported_static/stDelegatecallTestHomestead/test_delegatecode_dynamic_code2_self_call.py @@ -50,6 +50,7 @@ def test_delegatecode_dynamic_code2_self_call( gas_limit=1000000, ) + pre[sender] = Account(balance=0x2386F26FC10000) # Source: lll # {(MSTORE 0 0x60406000604060007313136008b64ff592819b2fa6d43f2835c452020e620186) (MSTORE 32 0xa0f4600b5533600c550000000000000000000000000000000000000000000000) (CREATE 1 0 64) } # noqa: E501 contract_0 = pre.deploy_contract( # noqa: F841 @@ -67,7 +68,6 @@ def test_delegatecode_dynamic_code2_self_call( nonce=0, address=Address(0x1000000000000000000000000000000000000000), # noqa: E501 ) - pre[sender] = Account(balance=0x2386F26FC10000) tx = Transaction( sender=sender, @@ -78,11 +78,7 @@ def test_delegatecode_dynamic_code2_self_call( post = { compute_create_address(address=contract_0, nonce=0): Account( - storage={ - 11: 1, - 12: 0x1000000000000000000000000000000000000000, - }, - balance=1, + storage={11: 1, 12: contract_0}, balance=1 ), } diff --git a/tests/ported_static/stEIP1153_transientStorage/test_trans_storage_ok.py b/tests/ported_static/stEIP1153_transientStorage/test_trans_storage_ok.py index c0dbd690ffd..818e6e4d756 100644 --- a/tests/ported_static/stEIP1153_transientStorage/test_trans_storage_ok.py +++ b/tests/ported_static/stEIP1153_transientStorage/test_trans_storage_ok.py @@ -168,6 +168,7 @@ def test_trans_storage_ok( gas_limit=100000000, ) + pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE, nonce=1) # Source: yul # { # // These two functions use transient storage. @@ -557,117 +558,6 @@ def test_trans_storage_ok( # verbatim_2i_0o(hex"5D", loc, val) # } # - # // If we are called by 0xca11bacc, this is part of the loop - # if eq(caller(), 0xca11bacc) { - # let counter := tload_temp(0) - # - # // If the counter is equal to zero, we're done - return. - # if eq(counter,0) { - # return(0,0) - # } - # - # // If counter isn't zero, add counter to Trans[1] and do recursion - # tstore_temp(1, add(tload_temp(1), counter)) - # - # // Change the loop variable and call 0xca11bacc, which calls us back. # noqa: E501 - # tstore_temp(0, sub(counter, 1)) - # let res := call(gas(), 0xca11bacc, 0, 0,0, 0,0) - # if iszero(res) { // If the call failed, fail too - # revert(0,0) - # } - # } - # - # // If called by a different address from 0xca11bacc, we are the first - # ... (12 more lines) - contract_4 = pre.deploy_contract( # noqa: F841 - code=Op.JUMPI(pc=0x3F, condition=Op.EQ(Op.CALLER, 0xCA11BACC)) - + Op.JUMPDEST - + Op.JUMPI(pc=0x16, condition=Op.SUB(Op.CALLER, 0xCA11BACC)) - + Op.STOP - + Op.JUMPDEST - + Op.PUSH1[0x23] - + Op.CALLDATALOAD(offset=Op.PUSH0) - + Op.SSTORE(key=0x1, value=Op.DUP1) - + Op.PUSH0 - + Op.JUMP(pc=0x7F) - + Op.JUMPDEST - + Op.SSTORE( - key=0x2, - value=Op.CALL( - gas=Op.GAS, - address=0xCA11BACC, - value=Op.DUP1, - args_offset=Op.DUP1, - args_size=Op.DUP1, - ret_offset=Op.DUP1, - ret_size=Op.PUSH0, - ), - ) - + Op.PUSH1[0x3A] - + Op.PUSH1[0x1] - + Op.JUMP(pc=0x7B) - + Op.JUMPDEST - + Op.PUSH1[0x3] - + Op.SSTORE - + Op.STOP - + Op.JUMPDEST - + Op.PUSH1[0x46] - + Op.PUSH0 - + Op.JUMP(pc=0x7B) - + Op.JUMPDEST - + Op.JUMPI(pc=0x79, condition=Op.ISZERO(Op.DUP1)) - + Op.PUSH1[0x1] - + Op.DUP2 - + Op.PUSH1[0x60] - + Op.PUSH1[0x66] - + Op.SWAP4 - + Op.PUSH1[0x5A] - + Op.DUP5 - + Op.JUMP(pc=0x7B) - + Op.JUMPDEST - + Op.ADD - + Op.DUP4 - + Op.JUMP(pc=0x7F) - + Op.JUMPDEST - + Op.SUB - + Op.PUSH0 - + Op.JUMP(pc=0x7F) - + Op.JUMPDEST - + Op.JUMPI( - pc=0xA, - condition=Op.CALL( - gas=Op.GAS, - address=0xCA11BACC, - value=Op.DUP1, - args_offset=Op.DUP1, - args_size=Op.DUP1, - ret_offset=Op.DUP1, - ret_size=Op.PUSH0, - ), - ) - + Op.REVERT(offset=Op.DUP1, size=Op.PUSH0) - + Op.JUMPDEST - + Op.STOP - + Op.JUMPDEST - + Op.TLOAD - + Op.SWAP1 - + Op.JUMP - + Op.JUMPDEST - + Op.TSTORE - + Op.JUMP, - nonce=1, - address=Address(0x000000000000000000000000000000005114E2C8), # noqa: E501 - ) - # Source: yul - # { - # function tload_temp(loc) -> val { - # val := verbatim_1i_1o(hex"5C", loc) - # } - # - # function tstore_temp(loc, val) { - # verbatim_2i_0o(hex"5D", loc, val) - # } - # # // We are inside the loop # if eq(caller(), address()) { # let counter := tload_temp(0) @@ -969,101 +859,6 @@ def test_trans_storage_ok( # verbatim_2i_0o(hex"5D", loc, val) # } # - # // The initial value of the counter is zero - # sstore(0, tload_temp(0)) - # - # // CALLCODE increments our Trans[0] - # sstore(0x11, callcode(gas(), 0xadd1, 0, 0,0, 0,0)) - # sstore(1, tload_temp(0)) - # - # // DELEGATECALL increments our Trans[0] - # sstore(0x12, delegatecall(gas(), 0xadd1, 0,0, 0,0)) - # sstore(2, tload_temp(0)) - # - # // CALL does not increment our Trans[0], it means a different - # // transient storage - # sstore(0x13, call(gas(), 0xadd1, 0, 0,0, 0,0)) - # sstore(3, tload_temp(0)) - # } - contract_8 = pre.deploy_contract( # noqa: F841 - code=Op.PUSH1[0x6] - + Op.PUSH0 - + Op.JUMP(pc=0x4E) - + Op.JUMPDEST - + Op.PUSH0 - + Op.SSTORE - + Op.SSTORE( - key=0x11, - value=Op.CALLCODE( - gas=Op.GAS, - address=0xADD1, - value=Op.DUP1, - args_offset=Op.DUP1, - args_size=Op.DUP1, - ret_offset=Op.DUP1, - ret_size=Op.PUSH0, - ), - ) - + Op.PUSH1[0x1C] - + Op.PUSH0 - + Op.JUMP(pc=0x4E) - + Op.JUMPDEST - + Op.PUSH1[0x1] - + Op.SSTORE - + Op.SSTORE( - key=0x12, - value=Op.DELEGATECALL( - gas=Op.GAS, - address=0xADD1, - args_offset=Op.DUP1, - args_size=Op.DUP1, - ret_offset=Op.DUP1, - ret_size=Op.PUSH0, - ), - ) - + Op.PUSH1[0x32] - + Op.PUSH0 - + Op.JUMP(pc=0x4E) - + Op.JUMPDEST - + Op.PUSH1[0x2] - + Op.SSTORE - + Op.SSTORE( - key=0x13, - value=Op.CALL( - gas=Op.GAS, - address=0xADD1, - value=Op.DUP1, - args_offset=Op.DUP1, - args_size=Op.DUP1, - ret_offset=Op.DUP1, - ret_size=Op.PUSH0, - ), - ) - + Op.PUSH1[0x49] - + Op.PUSH0 - + Op.JUMP(pc=0x4E) - + Op.JUMPDEST - + Op.PUSH1[0x3] - + Op.SSTORE - + Op.STOP - + Op.JUMPDEST - + Op.TLOAD - + Op.SWAP1 - + Op.JUMP, - storage={0: 24743}, - nonce=1, - address=Address(0x000000000000000000000000000000007F9317BD), # noqa: E501 - ) - # Source: yul - # { - # function tload_temp(loc) -> val { - # val := verbatim_1i_1o(hex"5C", loc) - # } - # - # function tstore_temp(loc, val) { - # verbatim_2i_0o(hex"5D", loc, val) - # } - # # // If we are at the bottom of the call stack, increment # // the counter and return # if eq(calldatasize(), 0) { @@ -1227,6 +1022,237 @@ def test_trans_storage_ok( ) # Source: yul # { + # let func := shr(224, calldataload(0)) + # let param := calldataload(4) + # sstore(0, func) + # mstore(0, param) + # sstore(1, call(gas(), func, 0, 0,32, 0,0)) + # } + target = pre.deploy_contract( # noqa: F841 + code=Op.PUSH0 + + Op.DUP1 + + Op.PUSH1[0x20] + + Op.DUP2 + + Op.DUP1 + + Op.SHR(0xE0, Op.CALLDATALOAD(offset=Op.DUP1)) + + Op.CALLDATALOAD(offset=0x4) + + Op.SSTORE(key=Op.DUP4, value=Op.DUP2) + + Op.DUP3 + + Op.MSTORE + + Op.GAS + + Op.SSTORE(key=0x1, value=Op.CALL) + + Op.STOP, + nonce=1, + address=Address(0xDD53B677A6FD4E871A6355F283B1BD7CEB95A95E), # noqa: E501 + ) + # Source: yul + # { + # function tload_temp(loc) -> val { + # val := verbatim_1i_1o(hex"5C", loc) + # } + # + # function tstore_temp(loc, val) { + # verbatim_2i_0o(hex"5D", loc, val) + # } + # + # // If we are called by 0xca11bacc, this is part of the loop + # if eq(caller(), 0xca11bacc) { + # let counter := tload_temp(0) + # + # // If the counter is equal to zero, we're done - return. + # if eq(counter,0) { + # return(0,0) + # } + # + # // If counter isn't zero, add counter to Trans[1] and do recursion + # tstore_temp(1, add(tload_temp(1), counter)) + # + # // Change the loop variable and call 0xca11bacc, which calls us back. # noqa: E501 + # tstore_temp(0, sub(counter, 1)) + # let res := call(gas(), 0xca11bacc, 0, 0,0, 0,0) + # if iszero(res) { // If the call failed, fail too + # revert(0,0) + # } + # } + # + # // If called by a different address from 0xca11bacc, we are the first + # ... (12 more lines) + contract_4 = pre.deploy_contract( # noqa: F841 + code=Op.JUMPI(pc=0x3F, condition=Op.EQ(Op.CALLER, 0xCA11BACC)) + + Op.JUMPDEST + + Op.JUMPI(pc=0x16, condition=Op.SUB(Op.CALLER, 0xCA11BACC)) + + Op.STOP + + Op.JUMPDEST + + Op.PUSH1[0x23] + + Op.CALLDATALOAD(offset=Op.PUSH0) + + Op.SSTORE(key=0x1, value=Op.DUP1) + + Op.PUSH0 + + Op.JUMP(pc=0x7F) + + Op.JUMPDEST + + Op.SSTORE( + key=0x2, + value=Op.CALL( + gas=Op.GAS, + address=0xCA11BACC, + value=Op.DUP1, + args_offset=Op.DUP1, + args_size=Op.DUP1, + ret_offset=Op.DUP1, + ret_size=Op.PUSH0, + ), + ) + + Op.PUSH1[0x3A] + + Op.PUSH1[0x1] + + Op.JUMP(pc=0x7B) + + Op.JUMPDEST + + Op.PUSH1[0x3] + + Op.SSTORE + + Op.STOP + + Op.JUMPDEST + + Op.PUSH1[0x46] + + Op.PUSH0 + + Op.JUMP(pc=0x7B) + + Op.JUMPDEST + + Op.JUMPI(pc=0x79, condition=Op.ISZERO(Op.DUP1)) + + Op.PUSH1[0x1] + + Op.DUP2 + + Op.PUSH1[0x60] + + Op.PUSH1[0x66] + + Op.SWAP4 + + Op.PUSH1[0x5A] + + Op.DUP5 + + Op.JUMP(pc=0x7B) + + Op.JUMPDEST + + Op.ADD + + Op.DUP4 + + Op.JUMP(pc=0x7F) + + Op.JUMPDEST + + Op.SUB + + Op.PUSH0 + + Op.JUMP(pc=0x7F) + + Op.JUMPDEST + + Op.JUMPI( + pc=0xA, + condition=Op.CALL( + gas=Op.GAS, + address=0xCA11BACC, + value=Op.DUP1, + args_offset=Op.DUP1, + args_size=Op.DUP1, + ret_offset=Op.DUP1, + ret_size=Op.PUSH0, + ), + ) + + Op.REVERT(offset=Op.DUP1, size=Op.PUSH0) + + Op.JUMPDEST + + Op.STOP + + Op.JUMPDEST + + Op.TLOAD + + Op.SWAP1 + + Op.JUMP + + Op.JUMPDEST + + Op.TSTORE + + Op.JUMP, + nonce=1, + address=Address(0x000000000000000000000000000000005114E2C8), # noqa: E501 + ) + # Source: yul + # { + # function tload_temp(loc) -> val { + # val := verbatim_1i_1o(hex"5C", loc) + # } + # + # function tstore_temp(loc, val) { + # verbatim_2i_0o(hex"5D", loc, val) + # } + # + # // The initial value of the counter is zero + # sstore(0, tload_temp(0)) + # + # // CALLCODE increments our Trans[0] + # sstore(0x11, callcode(gas(), 0xadd1, 0, 0,0, 0,0)) + # sstore(1, tload_temp(0)) + # + # // DELEGATECALL increments our Trans[0] + # sstore(0x12, delegatecall(gas(), 0xadd1, 0,0, 0,0)) + # sstore(2, tload_temp(0)) + # + # // CALL does not increment our Trans[0], it means a different + # // transient storage + # sstore(0x13, call(gas(), 0xadd1, 0, 0,0, 0,0)) + # sstore(3, tload_temp(0)) + # } + contract_8 = pre.deploy_contract( # noqa: F841 + code=Op.PUSH1[0x6] + + Op.PUSH0 + + Op.JUMP(pc=0x4E) + + Op.JUMPDEST + + Op.PUSH0 + + Op.SSTORE + + Op.SSTORE( + key=0x11, + value=Op.CALLCODE( + gas=Op.GAS, + address=0xADD1, + value=Op.DUP1, + args_offset=Op.DUP1, + args_size=Op.DUP1, + ret_offset=Op.DUP1, + ret_size=Op.PUSH0, + ), + ) + + Op.PUSH1[0x1C] + + Op.PUSH0 + + Op.JUMP(pc=0x4E) + + Op.JUMPDEST + + Op.PUSH1[0x1] + + Op.SSTORE + + Op.SSTORE( + key=0x12, + value=Op.DELEGATECALL( + gas=Op.GAS, + address=0xADD1, + args_offset=Op.DUP1, + args_size=Op.DUP1, + ret_offset=Op.DUP1, + ret_size=Op.PUSH0, + ), + ) + + Op.PUSH1[0x32] + + Op.PUSH0 + + Op.JUMP(pc=0x4E) + + Op.JUMPDEST + + Op.PUSH1[0x2] + + Op.SSTORE + + Op.SSTORE( + key=0x13, + value=Op.CALL( + gas=Op.GAS, + address=0xADD1, + value=Op.DUP1, + args_offset=Op.DUP1, + args_size=Op.DUP1, + ret_offset=Op.DUP1, + ret_size=Op.PUSH0, + ), + ) + + Op.PUSH1[0x49] + + Op.PUSH0 + + Op.JUMP(pc=0x4E) + + Op.JUMPDEST + + Op.PUSH1[0x3] + + Op.SSTORE + + Op.STOP + + Op.JUMPDEST + + Op.TLOAD + + Op.SWAP1 + + Op.JUMP, + storage={0: 24743}, + nonce=1, + address=Address(0x000000000000000000000000000000007F9317BD), # noqa: E501 + ) + # Source: yul + # { # // Set up Trans[0] with a regular call. # sstore(0x10,call(gas(), 0x57A7, 0, 0,1, 0,32)) # sstore(0, mload(0)) @@ -1286,39 +1312,13 @@ def test_trans_storage_ok( nonce=1, address=Address(0x000000000000000000000000000000005D7935DF), # noqa: E501 ) - # Source: yul - # { - # let func := shr(224, calldataload(0)) - # let param := calldataload(4) - # sstore(0, func) - # mstore(0, param) - # sstore(1, call(gas(), func, 0, 0,32, 0,0)) - # } - target = pre.deploy_contract( # noqa: F841 - code=Op.PUSH0 - + Op.DUP1 - + Op.PUSH1[0x20] - + Op.DUP2 - + Op.DUP1 - + Op.SHR(0xE0, Op.CALLDATALOAD(offset=Op.DUP1)) - + Op.CALLDATALOAD(offset=0x4) - + Op.SSTORE(key=Op.DUP4, value=Op.DUP2) - + Op.DUP3 - + Op.MSTORE - + Op.GAS - + Op.SSTORE(key=0x1, value=Op.CALL) - + Op.STOP, - nonce=1, - address=Address(0xDD53B677A6FD4E871A6355F283B1BD7CEB95A95E), # noqa: E501 - ) - pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE, nonce=1) expect_entries_: list[dict] = [ { "indexes": {"data": [0], "gas": -1, "value": -1}, "network": [">=Cancun"], "result": { - target: Account(storage={0: 0xEBD141D5, 1: 1}), + target: Account(storage={0: contract_0, 1: 1}), contract_0: Account(storage={1: 16, 2: 1, 3: 136}), }, }, @@ -1326,7 +1326,7 @@ def test_trans_storage_ok( "indexes": {"data": [1], "gas": -1, "value": -1}, "network": [">=Cancun"], "result": { - target: Account(storage={0: 0x6E3A7204, 1: 1}), + target: Account(storage={0: contract_1, 1: 1}), contract_1: Account(storage={1: 16, 2: 1, 3: 136}), }, }, @@ -1334,7 +1334,7 @@ def test_trans_storage_ok( "indexes": {"data": [2], "gas": -1, "value": -1}, "network": [">=Cancun"], "result": { - target: Account(storage={0: 0xC1C922F1, 1: 1}), + target: Account(storage={0: contract_2, 1: 1}), contract_2: Account(storage={1: 16, 2: 1, 3: 136}), }, }, @@ -1342,7 +1342,7 @@ def test_trans_storage_ok( "indexes": {"data": [3], "gas": -1, "value": -1}, "network": [">=Cancun"], "result": { - target: Account(storage={0: 0xEBD141D5, 1: 1}), + target: Account(storage={0: contract_0, 1: 1}), contract_0: Account(storage={1: 256, 2: 1, 3: 32896}), }, }, @@ -1350,7 +1350,7 @@ def test_trans_storage_ok( "indexes": {"data": [4], "gas": -1, "value": -1}, "network": [">=Cancun"], "result": { - target: Account(storage={0: 0x5114E2C8, 1: 1}), + target: Account(storage={0: contract_4, 1: 1}), contract_4: Account(storage={1: 10, 2: 1, 3: 55}), contract_3: Account(storage={0: 0, 1: 0}), }, @@ -1359,7 +1359,7 @@ def test_trans_storage_ok( "indexes": {"data": [5], "gas": -1, "value": -1}, "network": [">=Cancun"], "result": { - target: Account(storage={0: 0x5114E2C8, 1: 1}), + target: Account(storage={0: contract_4, 1: 1}), contract_4: Account(storage={1: 50, 2: 1, 3: 1275}), contract_3: Account(storage={0: 0, 1: 0}), }, @@ -1368,7 +1368,7 @@ def test_trans_storage_ok( "indexes": {"data": [6], "gas": -1, "value": -1}, "network": [">=Cancun"], "result": { - target: Account(storage={0: 0x264BB86A, 1: 1}), + target: Account(storage={0: contract_5, 1: 1}), contract_5: Account(storage={1: 6, 2: 1, 3: 63}), }, }, @@ -1376,7 +1376,7 @@ def test_trans_storage_ok( "indexes": {"data": [7], "gas": -1, "value": -1}, "network": [">=Cancun"], "result": { - target: Account(storage={0: 0x7074A486, 1: 1}), + target: Account(storage={0: contract_6, 1: 1}), contract_6: Account(storage={1: 6, 2: 1, 3: 63}), }, }, @@ -1384,7 +1384,7 @@ def test_trans_storage_ok( "indexes": {"data": [8], "gas": -1, "value": -1}, "network": [">=Cancun"], "result": { - target: Account(storage={0: 0x7F9317BD, 1: 1}), + target: Account(storage={0: contract_8, 1: 1}), contract_8: Account( storage={0: 0, 1: 1, 2: 2, 3: 2, 17: 1, 18: 1, 19: 1}, ), @@ -1398,7 +1398,7 @@ def test_trans_storage_ok( }, "network": [">=Cancun"], "result": { - target: Account(storage={0: 0xC54B5829, 1: 1}), + target: Account(storage={0: contract_9, 1: 1}), contract_9: Account(storage={0: 2}), }, }, @@ -1406,7 +1406,7 @@ def test_trans_storage_ok( "indexes": {"data": [15], "gas": -1, "value": -1}, "network": [">=Cancun"], "result": { - target: Account(storage={0: 0x5D7935DF, 1: 1}), + target: Account(storage={0: contract_11, 1: 1}), contract_11: Account( storage={0: 24743, 1: 24743, 2: 0, 16: 1, 17: 1, 18: 0}, ), diff --git a/tests/ported_static/stEIP1153_transientStorage/test_trans_storage_reset.py b/tests/ported_static/stEIP1153_transientStorage/test_trans_storage_reset.py index 99415bedec2..de1ad618dd6 100644 --- a/tests/ported_static/stEIP1153_transientStorage/test_trans_storage_reset.py +++ b/tests/ported_static/stEIP1153_transientStorage/test_trans_storage_reset.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -229,9 +228,7 @@ def test_trans_storage_reset( ) -> None: """Ori Pomerantz qbzzt1@gmail.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x48DC5A9F099CAAAA557742CA3A990A94BE45B9969126A1BC74E5E8BE5A2B5B47 - ) + sender = pre.fund_eoa(amount=0xBA1A9CE0BA1A9CE, nonce=1) env = Environment( fee_recipient=coinbase, @@ -359,7 +356,6 @@ def test_trans_storage_reset( + Op.JUMP, storage={16: 24743}, nonce=1, - address=Address(0xD1F046B080A87137C61A14BB81C2B6BBCEC17084), # noqa: E501 ) # Source: yul # { @@ -495,7 +491,6 @@ def test_trans_storage_reset( + Op.JUMP, storage={1: 24743}, nonce=1, - address=Address(0x9F075370EF41D4CD90151E731E33836E6F521669), # noqa: E501 ) # Source: yul # { @@ -528,21 +523,14 @@ def test_trans_storage_reset( + Op.SSTORE(key=0x1, value=Op.CALL) + Op.STOP, nonce=1, - address=Address(0x1679C7439EF325A99A6AFC54A8F7894C3DA35B16), # noqa: E501 ) - pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE, nonce=1) expect_entries_: list[dict] = [ { "indexes": {"data": [0], "gas": -1, "value": -1}, "network": [">=Cancun"], "result": { - target: Account( - storage={ - 0: 0x9F075370EF41D4CD90151E731E33836E6F521669, - 1: 1, - }, - ), + target: Account(storage={0: reverter, 1: 1}), reverter: Account(storage={0: 48879, 1: 1}), dead: Account(storage={16: 1}), }, @@ -551,12 +539,7 @@ def test_trans_storage_reset( "indexes": {"data": [3, 6, 9, 12, 15, 18], "gas": -1, "value": -1}, "network": [">=Cancun"], "result": { - target: Account( - storage={ - 0: 0x9F075370EF41D4CD90151E731E33836E6F521669, - 1: 1, - }, - ), + target: Account(storage={0: reverter, 1: 1}), reverter: Account(storage={0: 48879, 1: 1, 16: 1}), }, }, @@ -564,12 +547,7 @@ def test_trans_storage_reset( "indexes": {"data": [24, 27], "gas": -1, "value": -1}, "network": [">=Cancun"], "result": { - target: Account( - storage={ - 0: 0x9F075370EF41D4CD90151E731E33836E6F521669, - 1: 1, - }, - ), + target: Account(storage={0: reverter, 1: 1}), reverter: Account(storage={0: 0xBAD0BEEF, 1: 1, 16: 32343}), }, }, @@ -602,12 +580,7 @@ def test_trans_storage_reset( }, "network": [">=Cancun"], "result": { - target: Account( - storage={ - 0: 0x9F075370EF41D4CD90151E731E33836E6F521669, - 1: 1, - }, - ), + target: Account(storage={0: reverter, 1: 1}), reverter: Account(storage={0: 24743, 1: 0}), dead: Account(storage={16: 24743}), }, @@ -616,12 +589,7 @@ def test_trans_storage_reset( "indexes": {"data": [21], "gas": -1, "value": -1}, "network": [">=Cancun"], "result": { - target: Account( - storage={ - 0: 0x9F075370EF41D4CD90151E731E33836E6F521669, - 1: 1, - }, - ), + target: Account(storage={0: reverter, 1: 1}), reverter: Account(storage={0: 24743, 1: 1}), dead: Account(storage={16: 32343}), }, diff --git a/tests/ported_static/stEIP150Specific/test_call_and_callcode_consume_more_gas_then_transaction_has.py b/tests/ported_static/stEIP150Specific/test_call_and_callcode_consume_more_gas_then_transaction_has.py index 4861b94c7b0..aa6ecf33493 100644 --- a/tests/ported_static/stEIP150Specific/test_call_and_callcode_consume_more_gas_then_transaction_has.py +++ b/tests/ported_static/stEIP150Specific/test_call_and_callcode_consume_more_gas_then_transaction_has.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_call_and_callcode_consume_more_gas_then_transaction_has( ) -> None: """Test_call_and_callcode_consume_more_gas_then_transaction_has.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x4F31B3206FBF0E0E598B9B1A7D8AC86302A0FF1D8930738F1BEBAE9B67173E52 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -48,7 +45,12 @@ def test_call_and_callcode_consume_more_gas_then_transaction_has( gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) + # Source: lll + # { (SSTORE 0 0x12) } + addr = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x0, value=0x12) + Op.STOP, + nonce=0, + ) # Source: lll # { (SSTORE 8 (GAS)) (SSTORE 9 (CALL 600000 0 0 0 0 0)) (SSTORE 10 (CALLCODE 600000 0 0 0 0 0)) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -57,7 +59,7 @@ def test_call_and_callcode_consume_more_gas_then_transaction_has( key=0x9, value=Op.CALL( gas=0x927C0, - address=0xFD59ABAE521384B5731AC657616680219FBC423D, + address=addr, value=0x0, args_offset=0x0, args_size=0x0, @@ -69,7 +71,7 @@ def test_call_and_callcode_consume_more_gas_then_transaction_has( key=0xA, value=Op.CALLCODE( gas=0x927C0, - address=0xFD59ABAE521384B5731AC657616680219FBC423D, + address=addr, value=0x0, args_offset=0x0, args_size=0x0, @@ -79,14 +81,6 @@ def test_call_and_callcode_consume_more_gas_then_transaction_has( ) + Op.STOP, nonce=0, - address=Address(0x9BDB308C9B567E1DBC906D9D592A8464A05FFD44), # noqa: E501 - ) - # Source: lll - # { (SSTORE 0 0x12) } - addr = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x0, value=0x12) + Op.STOP, - nonce=0, - address=Address(0xFD59ABAE521384B5731AC657616680219FBC423D), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stEIP150Specific/test_call_ask_more_gas_on_depth2_then_transaction_has.py b/tests/ported_static/stEIP150Specific/test_call_ask_more_gas_on_depth2_then_transaction_has.py index 36b738a1a77..61fd1052dec 100644 --- a/tests/ported_static/stEIP150Specific/test_call_ask_more_gas_on_depth2_then_transaction_has.py +++ b/tests/ported_static/stEIP150Specific/test_call_ask_more_gas_on_depth2_then_transaction_has.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_call_ask_more_gas_on_depth2_then_transaction_has( ) -> None: """Test_call_ask_more_gas_on_depth2_then_transaction_has.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x4F31B3206FBF0E0E598B9B1A7D8AC86302A0FF1D8930738F1BEBAE9B67173E52 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -48,16 +45,21 @@ def test_call_ask_more_gas_on_depth2_then_transaction_has( gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) # Source: lll - # { (SSTORE 8 (GAS)) (SSTORE 9 (CALL 200000 0 0 0 0 0)) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 + # { (SSTORE 8 (GAS))} + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x8, value=Op.GAS) + Op.STOP, + nonce=0, + ) + # Source: lll + # { (SSTORE 8 (GAS)) (SSTORE 9 (CALL 600000 0 0 0 0 0)) } # noqa: E501 + addr = pre.deploy_contract( # noqa: F841 code=Op.SSTORE(key=0x8, value=Op.GAS) + Op.SSTORE( key=0x9, value=Op.CALL( - gas=0x30D40, - address=0x25C370B55EC8467127BC4E13404915901D689098, + gas=0x927C0, + address=addr_2, value=0x0, args_offset=0x0, args_size=0x0, @@ -67,17 +69,16 @@ def test_call_ask_more_gas_on_depth2_then_transaction_has( ) + Op.STOP, nonce=0, - address=Address(0x8553D06001D46F3B0B18A938ACF8C552D87C5837), # noqa: E501 ) # Source: lll - # { (SSTORE 8 (GAS)) (SSTORE 9 (CALL 600000 0 0 0 0 0)) } # noqa: E501 - addr = pre.deploy_contract( # noqa: F841 + # { (SSTORE 8 (GAS)) (SSTORE 9 (CALL 200000 0 0 0 0 0)) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 code=Op.SSTORE(key=0x8, value=Op.GAS) + Op.SSTORE( key=0x9, value=Op.CALL( - gas=0x927C0, - address=0xF39D40EACB6D2C685AC10664E759D1CF8F775DFF, + gas=0x30D40, + address=addr, value=0x0, args_offset=0x0, args_size=0x0, @@ -87,14 +88,6 @@ def test_call_ask_more_gas_on_depth2_then_transaction_has( ) + Op.STOP, nonce=0, - address=Address(0x25C370B55EC8467127BC4E13404915901D689098), # noqa: E501 - ) - # Source: lll - # { (SSTORE 8 (GAS))} - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x8, value=Op.GAS) + Op.STOP, - nonce=0, - address=Address(0xF39D40EACB6D2C685AC10664E759D1CF8F775DFF), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stEIP150Specific/test_call_goes_oog_on_second_level.py b/tests/ported_static/stEIP150Specific/test_call_goes_oog_on_second_level.py index aae0948831b..ce3ec8f7f19 100644 --- a/tests/ported_static/stEIP150Specific/test_call_goes_oog_on_second_level.py +++ b/tests/ported_static/stEIP150Specific/test_call_goes_oog_on_second_level.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_call_goes_oog_on_second_level( ) -> None: """Test_call_goes_oog_on_second_level.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x4F31B3206FBF0E0E598B9B1A7D8AC86302A0FF1D8930738F1BEBAE9B67173E52 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -46,16 +43,25 @@ def test_call_goes_oog_on_second_level( gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) # Source: lll - # { (SSTORE 8 (GAS)) (SSTORE 9 (CALL 600000 0 0 0 0 0)) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 + # { (SSTORE 8 (GAS)) (KECCAK256 0x00 0x2fffff) (SSTORE 9 (GAS)) (SSTORE 10 (GAS)) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x8, value=Op.GAS) + + Op.POP(Op.SHA3(offset=0x0, size=0x2FFFFF)) + + Op.SSTORE(key=0x9, value=Op.GAS) + + Op.SSTORE(key=0xA, value=Op.GAS) + + Op.STOP, + nonce=0, + ) + # Source: lll + # { (SSTORE 8 (GAS)) (SSTORE 9 (CALL 300000 0 0 0 0 0)) [[12]] 1} # noqa: E501 + addr = pre.deploy_contract( # noqa: F841 code=Op.SSTORE(key=0x8, value=Op.GAS) + Op.SSTORE( key=0x9, value=Op.CALL( - gas=0x927C0, - address=0x66F77B181E0E662E17D427C7320267ADF2FD624, + gas=0x493E0, + address=addr_2, value=0x0, args_offset=0x0, args_size=0x0, @@ -63,19 +69,19 @@ def test_call_goes_oog_on_second_level( ret_size=0x0, ), ) + + Op.SSTORE(key=0xC, value=0x1) + Op.STOP, nonce=0, - address=Address(0x3C6DCA5471C6305D0642C6210D39D4613B5EA30B), # noqa: E501 ) # Source: lll - # { (SSTORE 8 (GAS)) (SSTORE 9 (CALL 300000 0 0 0 0 0)) [[12]] 1} # noqa: E501 - addr = pre.deploy_contract( # noqa: F841 + # { (SSTORE 8 (GAS)) (SSTORE 9 (CALL 600000 0 0 0 0 0)) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 code=Op.SSTORE(key=0x8, value=Op.GAS) + Op.SSTORE( key=0x9, value=Op.CALL( - gas=0x493E0, - address=0xCCC0159BD2EF7118B5E7B8D958E72237F02493FE, + gas=0x927C0, + address=addr, value=0x0, args_offset=0x0, args_size=0x0, @@ -83,21 +89,8 @@ def test_call_goes_oog_on_second_level( ret_size=0x0, ), ) - + Op.SSTORE(key=0xC, value=0x1) - + Op.STOP, - nonce=0, - address=Address(0x066F77B181E0E662E17D427C7320267ADF2FD624), # noqa: E501 - ) - # Source: lll - # { (SSTORE 8 (GAS)) (KECCAK256 0x00 0x2fffff) (SSTORE 9 (GAS)) (SSTORE 10 (GAS)) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x8, value=Op.GAS) - + Op.POP(Op.SHA3(offset=0x0, size=0x2FFFFF)) - + Op.SSTORE(key=0x9, value=Op.GAS) - + Op.SSTORE(key=0xA, value=Op.GAS) + Op.STOP, nonce=0, - address=Address(0xCCC0159BD2EF7118B5E7B8D958E72237F02493FE), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stEIP150Specific/test_call_goes_oog_on_second_level2.py b/tests/ported_static/stEIP150Specific/test_call_goes_oog_on_second_level2.py index d4824a14a6b..186b2ad0636 100644 --- a/tests/ported_static/stEIP150Specific/test_call_goes_oog_on_second_level2.py +++ b/tests/ported_static/stEIP150Specific/test_call_goes_oog_on_second_level2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_call_goes_oog_on_second_level2( ) -> None: """Test_call_goes_oog_on_second_level2.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x4F31B3206FBF0E0E598B9B1A7D8AC86302A0FF1D8930738F1BEBAE9B67173E52 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -46,16 +43,23 @@ def test_call_goes_oog_on_second_level2( gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) # Source: lll - # { (SSTORE 8 (GAS)) (SSTORE 9 (CALL 600000 0 0 0 0 0)) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 + # { (SSTORE 8 (GAS)) (KECCAK256 0x00 0x2fffff) } + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x8, value=Op.GAS) + + Op.SHA3(offset=0x0, size=0x2FFFFF) + + Op.STOP, + nonce=0, + ) + # Source: lll + # { (SSTORE 8 (GAS)) (SSTORE 9 (CALL 600000 0 0 0 0 0)) } # noqa: E501 + addr = pre.deploy_contract( # noqa: F841 code=Op.SSTORE(key=0x8, value=Op.GAS) + Op.SSTORE( key=0x9, value=Op.CALL( gas=0x927C0, - address=0xE1D370A0538366EAFFBC9FCD571AF7B1E80D377C, + address=addr_2, value=0x0, args_offset=0x0, args_size=0x0, @@ -65,17 +69,16 @@ def test_call_goes_oog_on_second_level2( ) + Op.STOP, nonce=0, - address=Address(0x171742E7809E3B571E899F0D4D9D35CD5DEEACF1), # noqa: E501 ) # Source: lll - # { (SSTORE 8 (GAS)) (SSTORE 9 (CALL 600000 0 0 0 0 0)) } # noqa: E501 - addr = pre.deploy_contract( # noqa: F841 + # { (SSTORE 8 (GAS)) (SSTORE 9 (CALL 600000 0 0 0 0 0)) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 code=Op.SSTORE(key=0x8, value=Op.GAS) + Op.SSTORE( key=0x9, value=Op.CALL( gas=0x927C0, - address=0xBFB2B65E4EF26A144A185B32C7BAF39EF8E40B4B, + address=addr, value=0x0, args_offset=0x0, args_size=0x0, @@ -85,16 +88,6 @@ def test_call_goes_oog_on_second_level2( ) + Op.STOP, nonce=0, - address=Address(0xE1D370A0538366EAFFBC9FCD571AF7B1E80D377C), # noqa: E501 - ) - # Source: lll - # { (SSTORE 8 (GAS)) (KECCAK256 0x00 0x2fffff) } - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x8, value=Op.GAS) - + Op.SHA3(offset=0x0, size=0x2FFFFF) - + Op.STOP, - nonce=0, - address=Address(0xBFB2B65E4EF26A144A185B32C7BAF39EF8E40B4B), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stEIP150Specific/test_create_and_gas_inside_create.py b/tests/ported_static/stEIP150Specific/test_create_and_gas_inside_create.py index f86550f6574..0bcf52c7d85 100644 --- a/tests/ported_static/stEIP150Specific/test_create_and_gas_inside_create.py +++ b/tests/ported_static/stEIP150Specific/test_create_and_gas_inside_create.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_create_and_gas_inside_create( """Test_create_and_gas_inside_create.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) contract_0 = Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -48,7 +45,6 @@ def test_create_and_gas_inside_create( gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) # Source: lll # { [100] (GAS) (MSTORE 0 0x5a60fd55) (SSTORE 11 (CREATE 0 28 4)) (SSTORE 9 (SUB @100 (GAS))) } # noqa: E501 contract_0 = pre.deploy_contract( # noqa: F841 @@ -58,7 +54,6 @@ def test_create_and_gas_inside_create( + Op.SSTORE(key=0x9, value=Op.SUB(Op.MLOAD(offset=0x64), Op.GAS)) + Op.STOP, nonce=0, - address=Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B), # noqa: E501 ) tx = Transaction( @@ -72,7 +67,7 @@ def test_create_and_gas_inside_create( contract_0: Account( storage={ 9: 0x129DB, - 11: 0xF1ECF98489FA9ED60A664FC4998DB699CFA39D40, + 11: compute_create_address(address=contract_0, nonce=0), }, ), compute_create_address(address=contract_0, nonce=0): Account( diff --git a/tests/ported_static/stEIP150Specific/test_delegate_call_on_eip.py b/tests/ported_static/stEIP150Specific/test_delegate_call_on_eip.py index 820af2c8af5..5156516411b 100644 --- a/tests/ported_static/stEIP150Specific/test_delegate_call_on_eip.py +++ b/tests/ported_static/stEIP150Specific/test_delegate_call_on_eip.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_delegate_call_on_eip( ) -> None: """Test_delegate_call_on_eip.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x4F31B3206FBF0E0E598B9B1A7D8AC86302A0FF1D8930738F1BEBAE9B67173E52 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -46,7 +43,12 @@ def test_delegate_call_on_eip( gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) + # Source: lll + # { (SSTORE 0 0x12) } + addr = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x0, value=0x12) + Op.STOP, + nonce=0, + ) # Source: lll # { [8] (GAS) (SSTORE 9 (DELEGATECALL 600000 0 0 0 0)) [[8]] (SUB @8 (GAS)) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -55,7 +57,7 @@ def test_delegate_call_on_eip( key=0x9, value=Op.DELEGATECALL( gas=0x927C0, - address=0xFD59ABAE521384B5731AC657616680219FBC423D, + address=addr, args_offset=0x0, args_size=0x0, ret_offset=0x0, @@ -65,14 +67,6 @@ def test_delegate_call_on_eip( + Op.SSTORE(key=0x8, value=Op.SUB(Op.MLOAD(offset=0x8), Op.GAS)) + Op.STOP, nonce=0, - address=Address(0x90BC108216940A7DDAF3BA6624F2FDBE4C5E83DC), # noqa: E501 - ) - # Source: lll - # { (SSTORE 0 0x12) } - addr = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x0, value=0x12) + Op.STOP, - nonce=0, - address=Address(0xFD59ABAE521384B5731AC657616680219FBC423D), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stEIP150Specific/test_new_gas_price_for_codes.py b/tests/ported_static/stEIP150Specific/test_new_gas_price_for_codes.py index 7ee910014d6..0be45107816 100644 --- a/tests/ported_static/stEIP150Specific/test_new_gas_price_for_codes.py +++ b/tests/ported_static/stEIP150Specific/test_new_gas_price_for_codes.py @@ -68,25 +68,15 @@ def test_new_gas_price_for_codes( # { [999] (GAS) (SSTORE 1 (EXTCODESIZE )) (EXTCODECOPY 0 0 20) (SSTORE 2 (MLOAD 0)) (SSTORE 4 (SLOAD 0)) (SSTORE 5 (CALL 30000 1 0 0 0 0)) (SSTORE 6 (CALLCODE 30000 1 0 0 0 0)) (SSTORE 7 (DELEGATECALL 30000 0 0 0 0)) (SSTORE 8 (CALL 30000 0x1000000000000000000000000000000000000013 0 0 0 0 0)) (SSTORE 3 (BALANCE )) (SSTORE 10 (SUB (MLOAD 999) (GAS))) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 code=Op.MSTORE(offset=0x3E7, value=Op.GAS) - + Op.SSTORE( - key=0x1, - value=Op.EXTCODESIZE( - address=0xC572A70AFAAB9D01D0A2AFB855BFBAFB47C8211B - ), - ) - + Op.EXTCODECOPY( - address=0xC572A70AFAAB9D01D0A2AFB855BFBAFB47C8211B, - dest_offset=0x0, - offset=0x0, - size=0x14, - ) + + Op.SSTORE(key=0x1, value=Op.EXTCODESIZE(address=addr)) + + Op.EXTCODECOPY(address=addr, dest_offset=0x0, offset=0x0, size=0x14) + Op.SSTORE(key=0x2, value=Op.MLOAD(offset=0x0)) + Op.SSTORE(key=0x4, value=Op.SLOAD(key=0x0)) + Op.SSTORE( key=0x5, value=Op.CALL( gas=0x7530, - address=0xAD9D325B811CB0701839C07C6F139F3799476798, + address=addr_2, value=0x1, args_offset=0x0, args_size=0x0, @@ -98,7 +88,7 @@ def test_new_gas_price_for_codes( key=0x6, value=Op.CALLCODE( gas=0x7530, - address=0xAD9D325B811CB0701839C07C6F139F3799476798, + address=addr_2, value=0x1, args_offset=0x0, args_size=0x0, @@ -110,7 +100,7 @@ def test_new_gas_price_for_codes( key=0x7, value=Op.DELEGATECALL( gas=0x7530, - address=0xAD9D325B811CB0701839C07C6F139F3799476798, + address=addr_2, args_offset=0x0, args_size=0x0, ret_offset=0x0, @@ -129,12 +119,7 @@ def test_new_gas_price_for_codes( ret_size=0x0, ), ) - + Op.SSTORE( - key=0x3, - value=Op.BALANCE( - address=0xFAA10B404AB607779993C016CD5DA73AE1F29D7E - ), - ) + + Op.SSTORE(key=0x3, value=Op.BALANCE(address=sender)) + Op.SSTORE(key=0xA, value=Op.SUB(Op.MLOAD(offset=0x3E7), Op.GAS)) + Op.STOP, storage={0: 18}, diff --git a/tests/ported_static/stEIP150Specific/test_suicide_to_existing_contract.py b/tests/ported_static/stEIP150Specific/test_suicide_to_existing_contract.py index 3c0025042ba..f8cea302098 100644 --- a/tests/ported_static/stEIP150Specific/test_suicide_to_existing_contract.py +++ b/tests/ported_static/stEIP150Specific/test_suicide_to_existing_contract.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_suicide_to_existing_contract( ) -> None: """Test_suicide_to_existing_contract.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x4F31B3206FBF0E0E598B9B1A7D8AC86302A0FF1D8930738F1BEBAE9B67173E52 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -46,7 +43,6 @@ def test_suicide_to_existing_contract( gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) # Source: lll # { [0] (GAS) (CALL 60000 0 0 0 0 0) [[1]] (SUB @0 (GAS)) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 diff --git a/tests/ported_static/stEIP150Specific/test_suicide_to_not_existing_contract.py b/tests/ported_static/stEIP150Specific/test_suicide_to_not_existing_contract.py index cf820a6d31f..5a3ff77c96f 100644 --- a/tests/ported_static/stEIP150Specific/test_suicide_to_not_existing_contract.py +++ b/tests/ported_static/stEIP150Specific/test_suicide_to_not_existing_contract.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_suicide_to_not_existing_contract( ) -> None: """Test_suicide_to_not_existing_contract.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x4F31B3206FBF0E0E598B9B1A7D8AC86302A0FF1D8930738F1BEBAE9B67173E52 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -46,7 +43,15 @@ def test_suicide_to_not_existing_contract( gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) + # Source: lll + # { (SELFDESTRUCT 0x2000000000000000000000000000000000000115) } + addr = pre.deploy_contract( # noqa: F841 + code=Op.SELFDESTRUCT( + address=0x2000000000000000000000000000000000000115 + ) + + Op.STOP, + nonce=0, + ) # Source: lll # { [0] (GAS) (CALL 60000 0 0 0 0 0) [[1]] (SUB @0 (GAS)) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -54,7 +59,7 @@ def test_suicide_to_not_existing_contract( + Op.POP( Op.CALL( gas=0xEA60, - address=0x9D6D7885D3D58A49C8352635776C205F722501C, + address=addr, value=0x0, args_offset=0x0, args_size=0x0, @@ -65,17 +70,6 @@ def test_suicide_to_not_existing_contract( + Op.SSTORE(key=0x1, value=Op.SUB(Op.MLOAD(offset=0x0), Op.GAS)) + Op.STOP, nonce=0, - address=Address(0xBABAE893BEE69E2141E0E92F2251664AC445EA2A), # noqa: E501 - ) - # Source: lll - # { (SELFDESTRUCT 0x2000000000000000000000000000000000000115) } - addr = pre.deploy_contract( # noqa: F841 - code=Op.SELFDESTRUCT( - address=0x2000000000000000000000000000000000000115 - ) - + Op.STOP, - nonce=0, - address=Address(0x09D6D7885D3D58A49C8352635776C205F722501C), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stEIP150Specific/test_transaction64_rule_d64e0.py b/tests/ported_static/stEIP150Specific/test_transaction64_rule_d64e0.py index 45a32d3f9d0..256cf7ea0bb 100644 --- a/tests/ported_static/stEIP150Specific/test_transaction64_rule_d64e0.py +++ b/tests/ported_static/stEIP150Specific/test_transaction64_rule_d64e0.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_transaction64_rule_d64e0( ) -> None: """Test_transaction64_rule_d64e0.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x4F31B3206FBF0E0E598B9B1A7D8AC86302A0FF1D8930738F1BEBAE9B67173E52 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -46,7 +43,12 @@ def test_transaction64_rule_d64e0( gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) + # Source: lll + # { [[1]] 12 } + addr = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x1, value=0xC) + Op.STOP, + nonce=0, + ) # Source: lll # { [0] (GAS) (CALL 160000 0 0 0 0 0) [[2]] (SUB @0 (GAS)) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -54,7 +56,7 @@ def test_transaction64_rule_d64e0( + Op.POP( Op.CALL( gas=0x27100, - address=0x6B7466044211F090B767199794F6F7041829BA85, + address=addr, value=0x0, args_offset=0x0, args_size=0x0, @@ -65,14 +67,6 @@ def test_transaction64_rule_d64e0( + Op.SSTORE(key=0x2, value=Op.SUB(Op.MLOAD(offset=0x0), Op.GAS)) + Op.STOP, nonce=0, - address=Address(0x4CBC458D12C7F73A3B12EF4515C3EB1BB7430798), # noqa: E501 - ) - # Source: lll - # { [[1]] 12 } - addr = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x1, value=0xC) + Op.STOP, - nonce=0, - address=Address(0x6B7466044211F090B767199794F6F7041829BA85), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stEIP150Specific/test_transaction64_rule_d64m1.py b/tests/ported_static/stEIP150Specific/test_transaction64_rule_d64m1.py index a8267666f7a..dd89bd167ec 100644 --- a/tests/ported_static/stEIP150Specific/test_transaction64_rule_d64m1.py +++ b/tests/ported_static/stEIP150Specific/test_transaction64_rule_d64m1.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_transaction64_rule_d64m1( ) -> None: """Test_transaction64_rule_d64m1.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x4F31B3206FBF0E0E598B9B1A7D8AC86302A0FF1D8930738F1BEBAE9B67173E52 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -46,7 +43,12 @@ def test_transaction64_rule_d64m1( gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) + # Source: lll + # { [[1]] 12 } + addr = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x1, value=0xC) + Op.STOP, + nonce=0, + ) # Source: lll # { [0] (GAS) (CALL 160000 0 0 0 0 0) [[2]] (SUB @0 (GAS)) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -54,7 +56,7 @@ def test_transaction64_rule_d64m1( + Op.POP( Op.CALL( gas=0x27100, - address=0x6B7466044211F090B767199794F6F7041829BA85, + address=addr, value=0x0, args_offset=0x0, args_size=0x0, @@ -65,14 +67,6 @@ def test_transaction64_rule_d64m1( + Op.SSTORE(key=0x2, value=Op.SUB(Op.MLOAD(offset=0x0), Op.GAS)) + Op.STOP, nonce=0, - address=Address(0x4CBC458D12C7F73A3B12EF4515C3EB1BB7430798), # noqa: E501 - ) - # Source: lll - # { [[1]] 12 } - addr = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x1, value=0xC) + Op.STOP, - nonce=0, - address=Address(0x6B7466044211F090B767199794F6F7041829BA85), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stEIP150Specific/test_transaction64_rule_d64p1.py b/tests/ported_static/stEIP150Specific/test_transaction64_rule_d64p1.py index 0b7fa472d71..2dead5d9e1a 100644 --- a/tests/ported_static/stEIP150Specific/test_transaction64_rule_d64p1.py +++ b/tests/ported_static/stEIP150Specific/test_transaction64_rule_d64p1.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_transaction64_rule_d64p1( ) -> None: """Test_transaction64_rule_d64p1.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x4F31B3206FBF0E0E598B9B1A7D8AC86302A0FF1D8930738F1BEBAE9B67173E52 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -46,7 +43,12 @@ def test_transaction64_rule_d64p1( gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) + # Source: lll + # { [[1]] 12 } + addr = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x1, value=0xC) + Op.STOP, + nonce=0, + ) # Source: lll # { [0] (GAS) (CALL 160000 0 0 0 0 0) [[2]] (SUB @0 (GAS)) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -54,7 +56,7 @@ def test_transaction64_rule_d64p1( + Op.POP( Op.CALL( gas=0x27100, - address=0x6B7466044211F090B767199794F6F7041829BA85, + address=addr, value=0x0, args_offset=0x0, args_size=0x0, @@ -65,14 +67,6 @@ def test_transaction64_rule_d64p1( + Op.SSTORE(key=0x2, value=Op.SUB(Op.MLOAD(offset=0x0), Op.GAS)) + Op.STOP, nonce=0, - address=Address(0x4CBC458D12C7F73A3B12EF4515C3EB1BB7430798), # noqa: E501 - ) - # Source: lll - # { [[1]] 12 } - addr = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x1, value=0xC) + Op.STOP, - nonce=0, - address=Address(0x6B7466044211F090B767199794F6F7041829BA85), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stEIP150Specific/test_transaction64_rule_integer_boundaries.py b/tests/ported_static/stEIP150Specific/test_transaction64_rule_integer_boundaries.py index 9be75cc4ce8..0940f507d26 100644 --- a/tests/ported_static/stEIP150Specific/test_transaction64_rule_integer_boundaries.py +++ b/tests/ported_static/stEIP150Specific/test_transaction64_rule_integer_boundaries.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -119,9 +118,7 @@ def test_transaction64_rule_integer_boundaries( coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) contract_0 = Address(0x0000000000000000000000000000000000001000) contract_1 = Address(0x000000000000000000000000000000000000C0DE) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0x10000000000000000) env = Environment( fee_recipient=coinbase, @@ -206,9 +203,7 @@ def test_transaction64_rule_integer_boundaries( + Op.STOP, balance=0xBA1A9CE0BA1A9CE, nonce=0, - address=Address(0x000000000000000000000000000000000000C0DE), # noqa: E501 ) - pre[sender] = Account(balance=0x10000000000000000) tx_data = [ Hash(0x7F), diff --git a/tests/ported_static/stEIP150singleCodeGasPrices/test_eip2929.py b/tests/ported_static/stEIP150singleCodeGasPrices/test_eip2929.py index 639742dc60d..c62a6e1859a 100644 --- a/tests/ported_static/stEIP150singleCodeGasPrices/test_eip2929.py +++ b/tests/ported_static/stEIP150singleCodeGasPrices/test_eip2929.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -279,9 +278,7 @@ def test_eip2929( contract_1 = Address(0x000000000000000000000000000000CA1100CA11) contract_2 = Address(0x00000000000000000000000000000000CA110100) contract_3 = Address(0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0xBA1A9CE0BA1A9CE) env = Environment( fee_recipient=coinbase, @@ -302,23 +299,23 @@ def test_eip2929( ) # Source: lll # { - # (balance 0xca11) + # @@0x100 # } - contract_1 = pre.deploy_contract( # noqa: F841 - code=Op.BALANCE(address=0xCA11) + Op.STOP, + contract_2 = pre.deploy_contract( # noqa: F841 + code=Op.SLOAD(key=0x100) + Op.STOP, balance=0xBA1A9CE0BA1A9CE, nonce=0, - address=Address(0x000000000000000000000000000000CA1100CA11), # noqa: E501 + address=Address(0x00000000000000000000000000000000CA110100), # noqa: E501 ) # Source: lll # { - # @@0x100 + # (balance 0xca11) # } - contract_2 = pre.deploy_contract( # noqa: F841 - code=Op.SLOAD(key=0x100) + Op.STOP, + contract_1 = pre.deploy_contract( # noqa: F841 + code=Op.BALANCE(address=0xCA11) + Op.STOP, balance=0xBA1A9CE0BA1A9CE, nonce=0, - address=Address(0x00000000000000000000000000000000CA110100), # noqa: E501 + address=Address(0x000000000000000000000000000000CA1100CA11), # noqa: E501 ) # Source: lll # { @@ -355,8 +352,8 @@ def test_eip2929( contract_3 = pre.deploy_contract( # noqa: F841 code=Op.MSTORE(offset=0x0, value=Op.GAS) + Op.MSTORE(offset=0x20, value=Op.GAS) - + Op.POP(Op.BALANCE(address=0xCA1100CA11)) - + Op.POP(Op.BALANCE(address=0xCA110100)) + + Op.POP(Op.BALANCE(address=contract_1)) + + Op.POP(Op.BALANCE(address=contract_2)) + Op.MSTORE(offset=0x40, value=Op.CALLDATALOAD(offset=0x4)) + Op.MSTORE(offset=0x0, value=Op.GAS) + Op.JUMPI( @@ -382,7 +379,7 @@ def test_eip2929( + Op.PUSH1[0x0] + Op.JUMP(pc=Op.PUSH2[0x66]) + Op.JUMPDEST - + Op.BALANCE(address=0xCA11) + + Op.BALANCE(address=contract_0) + Op.JUMPDEST + Op.POP + Op.JUMPI( @@ -391,7 +388,7 @@ def test_eip2929( + Op.PUSH1[0x0] + Op.JUMP(pc=Op.PUSH2[0x7D]) + Op.JUMPDEST - + Op.EXTCODESIZE(address=0xCA11) + + Op.EXTCODESIZE(address=contract_0) + Op.JUMPDEST + Op.POP + Op.JUMPI( @@ -400,7 +397,9 @@ def test_eip2929( + Op.POP(0x0) + Op.JUMP(pc=Op.PUSH2[0x9B]) + Op.JUMPDEST - + Op.EXTCODECOPY(address=0xCA11, dest_offset=0x0, offset=0x0, size=0x0) + + Op.EXTCODECOPY( + address=contract_0, dest_offset=0x0, offset=0x0, size=0x0 + ) + Op.JUMPDEST + Op.JUMPI( pc=Op.PUSH2[0xAC], condition=Op.EQ(Op.MLOAD(offset=0x40), 0xE) @@ -408,7 +407,7 @@ def test_eip2929( + Op.PUSH1[0x0] + Op.JUMP(pc=Op.PUSH2[0xB1]) + Op.JUMPDEST - + Op.EXTCODEHASH(address=0xCA11) + + Op.EXTCODEHASH(address=contract_0) + Op.JUMPDEST + Op.POP + Op.JUMPI( @@ -419,7 +418,7 @@ def test_eip2929( + Op.JUMPDEST + Op.CALL( gas=0x1000, - address=0xCA11, + address=contract_0, value=0x0, args_offset=0x0, args_size=0x0, @@ -436,7 +435,7 @@ def test_eip2929( + Op.JUMPDEST + Op.CALLCODE( gas=0x1000, - address=0xCA11, + address=contract_0, value=0x0, args_offset=0x0, args_size=0x0, @@ -451,7 +450,7 @@ def test_eip2929( + Op.JUMPDEST + Op.DELEGATECALL( gas=0x1000, - address=0xCA11, + address=contract_0, args_offset=0x0, args_size=0x0, ret_offset=0x0, @@ -465,7 +464,7 @@ def test_eip2929( + Op.JUMPDEST + Op.STATICCALL( gas=0x1000, - address=0xCA11, + address=contract_0, args_offset=0x0, args_size=0x0, ret_offset=0x0, @@ -479,7 +478,7 @@ def test_eip2929( + Op.JUMPDEST + Op.CALL( gas=0x1000, - address=0xCA1100CA11, + address=contract_1, value=0x0, args_offset=0x0, args_size=0x0, @@ -494,7 +493,7 @@ def test_eip2929( + Op.JUMPDEST + Op.CALLCODE( gas=0x1000, - address=0xCA110100, + address=contract_2, value=0x0, args_offset=0x0, args_size=0x0, @@ -509,7 +508,7 @@ def test_eip2929( + Op.JUMPDEST + Op.DELEGATECALL( gas=0x1000, - address=0xCA110100, + address=contract_2, args_offset=0x0, args_size=0x0, ret_offset=0x0, @@ -543,27 +542,29 @@ def test_eip2929( + Op.PUSH1[0x0] + Op.JUMP(pc=0x211) + Op.JUMPDEST - + Op.BALANCE(address=0xCA11) + + Op.BALANCE(address=contract_0) + Op.JUMPDEST + Op.POP + Op.JUMPI(pc=0x223, condition=Op.EQ(Op.MLOAD(offset=0x40), 0xC)) + Op.PUSH1[0x0] + Op.JUMP(pc=0x228) + Op.JUMPDEST - + Op.EXTCODESIZE(address=0xCA11) + + Op.EXTCODESIZE(address=contract_0) + Op.JUMPDEST + Op.POP + Op.JUMPI(pc=0x23B, condition=Op.EQ(Op.MLOAD(offset=0x40), 0xD)) + Op.POP(0x0) + Op.JUMP(pc=0x246) + Op.JUMPDEST - + Op.EXTCODECOPY(address=0xCA11, dest_offset=0x0, offset=0x0, size=0x0) + + Op.EXTCODECOPY( + address=contract_0, dest_offset=0x0, offset=0x0, size=0x0 + ) + Op.JUMPDEST + Op.JUMPI(pc=0x257, condition=Op.EQ(Op.MLOAD(offset=0x40), 0xE)) + Op.PUSH1[0x0] + Op.JUMP(pc=0x25C) + Op.JUMPDEST - + Op.EXTCODEHASH(address=0xCA11) + + Op.EXTCODEHASH(address=contract_0) + Op.JUMPDEST + Op.POP + Op.JUMPI(pc=0x26E, condition=Op.EQ(Op.MLOAD(offset=0x40), 0x15)) @@ -572,7 +573,7 @@ def test_eip2929( + Op.JUMPDEST + Op.CALL( gas=0x1000, - address=0xCA11, + address=contract_0, value=0x0, args_offset=0x0, args_size=0x0, @@ -587,7 +588,7 @@ def test_eip2929( + Op.JUMPDEST + Op.CALLCODE( gas=0x1000, - address=0xCA11, + address=contract_0, value=0x0, args_offset=0x0, args_size=0x0, @@ -602,7 +603,7 @@ def test_eip2929( + Op.JUMPDEST + Op.DELEGATECALL( gas=0x1000, - address=0xCA11, + address=contract_0, args_offset=0x0, args_size=0x0, ret_offset=0x0, @@ -616,7 +617,7 @@ def test_eip2929( + Op.JUMPDEST + Op.STATICCALL( gas=0x1000, - address=0xCA11, + address=contract_0, args_offset=0x0, args_size=0x0, ret_offset=0x0, @@ -630,7 +631,7 @@ def test_eip2929( + Op.JUMPDEST + Op.CALL( gas=0x1000, - address=0xCA1100CA11, + address=contract_1, value=0x0, args_offset=0x0, args_size=0x0, @@ -645,7 +646,7 @@ def test_eip2929( + Op.JUMPDEST + Op.CALLCODE( gas=0x1000, - address=0xCA110100, + address=contract_2, value=0x0, args_offset=0x0, args_size=0x0, @@ -660,7 +661,7 @@ def test_eip2929( + Op.JUMPDEST + Op.DELEGATECALL( gas=0x1000, - address=0xCA110100, + address=contract_2, args_offset=0x0, args_size=0x0, ret_offset=0x0, @@ -694,27 +695,29 @@ def test_eip2929( + Op.PUSH1[0x0] + Op.JUMP(pc=0x3BC) + Op.JUMPDEST - + Op.BALANCE(address=0xCA11) + + Op.BALANCE(address=contract_0) + Op.JUMPDEST + Op.POP + Op.JUMPI(pc=0x3CE, condition=Op.EQ(Op.MLOAD(offset=0x40), 0xC)) + Op.PUSH1[0x0] + Op.JUMP(pc=0x3D3) + Op.JUMPDEST - + Op.EXTCODESIZE(address=0xCA11) + + Op.EXTCODESIZE(address=contract_0) + Op.JUMPDEST + Op.POP + Op.JUMPI(pc=0x3E6, condition=Op.EQ(Op.MLOAD(offset=0x40), 0xD)) + Op.POP(0x0) + Op.JUMP(pc=0x3F1) + Op.JUMPDEST - + Op.EXTCODECOPY(address=0xCA11, dest_offset=0x0, offset=0x0, size=0x0) + + Op.EXTCODECOPY( + address=contract_0, dest_offset=0x0, offset=0x0, size=0x0 + ) + Op.JUMPDEST + Op.JUMPI(pc=0x402, condition=Op.EQ(Op.MLOAD(offset=0x40), 0xE)) + Op.PUSH1[0x0] + Op.JUMP(pc=0x407) + Op.JUMPDEST - + Op.EXTCODEHASH(address=0xCA11) + + Op.EXTCODEHASH(address=contract_0) + Op.JUMPDEST + Op.POP + Op.JUMPI(pc=0x419, condition=Op.EQ(Op.MLOAD(offset=0x40), 0x15)) @@ -723,7 +726,7 @@ def test_eip2929( + Op.JUMPDEST + Op.CALL( gas=0x1000, - address=0xCA11, + address=contract_0, value=0x0, args_offset=0x0, args_size=0x0, @@ -738,7 +741,7 @@ def test_eip2929( + Op.JUMPDEST + Op.CALLCODE( gas=0x1000, - address=0xCA11, + address=contract_0, value=0x0, args_offset=0x0, args_size=0x0, @@ -753,7 +756,7 @@ def test_eip2929( + Op.JUMPDEST + Op.DELEGATECALL( gas=0x1000, - address=0xCA11, + address=contract_0, args_offset=0x0, args_size=0x0, ret_offset=0x0, @@ -767,7 +770,7 @@ def test_eip2929( + Op.JUMPDEST + Op.STATICCALL( gas=0x1000, - address=0xCA11, + address=contract_0, args_offset=0x0, args_size=0x0, ret_offset=0x0, @@ -781,7 +784,7 @@ def test_eip2929( + Op.JUMPDEST + Op.CALL( gas=0x1000, - address=0xCA1100CA11, + address=contract_1, value=0x0, args_offset=0x0, args_size=0x0, @@ -796,7 +799,7 @@ def test_eip2929( + Op.JUMPDEST + Op.CALLCODE( gas=0x1000, - address=0xCA110100, + address=contract_2, value=0x0, args_offset=0x0, args_size=0x0, @@ -811,7 +814,7 @@ def test_eip2929( + Op.JUMPDEST + Op.DELEGATECALL( gas=0x1000, - address=0xCA110100, + address=contract_2, args_offset=0x0, args_size=0x0, ret_offset=0x0, @@ -831,9 +834,7 @@ def test_eip2929( storage={256: 24743}, balance=0xBA1A9CE0BA1A9CE, nonce=0, - address=Address(0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC), # noqa: E501 ) - pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stEIP150singleCodeGasPrices/test_eip2929_minus_ff.py b/tests/ported_static/stEIP150singleCodeGasPrices/test_eip2929_minus_ff.py index 8d977b8653d..0e9ecf78d46 100644 --- a/tests/ported_static/stEIP150singleCodeGasPrices/test_eip2929_minus_ff.py +++ b/tests/ported_static/stEIP150singleCodeGasPrices/test_eip2929_minus_ff.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -104,9 +103,7 @@ def test_eip2929_minus_ff( contract_0 = Address(0x000000000000000000000000000000000000DE57) contract_1 = Address(0x000000000000000000000000000000000000CA11) contract_2 = Address(0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0xBA1A9CE0BA1A9CE) env = Environment( fee_recipient=coinbase, @@ -169,7 +166,7 @@ def test_eip2929_minus_ff( contract_2 = pre.deploy_contract( # noqa: F841 code=Op.MSTORE(offset=0x100, value=0xFF) + Op.MSTORE(offset=0x120, value=0xFF) - + Op.POP(Op.BALANCE(address=0xCA11)) + + Op.POP(Op.BALANCE(address=contract_1)) + Op.JUMPI( pc=Op.PUSH2[0x21], condition=Op.EQ(Op.CALLDATALOAD(offset=0x4), 0x31), @@ -177,7 +174,7 @@ def test_eip2929_minus_ff( + Op.PUSH1[0x0] + Op.JUMP(pc=Op.PUSH2[0x26]) + Op.JUMPDEST - + Op.BALANCE(address=0xDE57) + + Op.BALANCE(address=contract_0) + Op.JUMPDEST + Op.POP + Op.JUMPI( @@ -187,7 +184,7 @@ def test_eip2929_minus_ff( + Op.PUSH1[0x0] + Op.JUMP(pc=Op.PUSH2[0x3D]) + Op.JUMPDEST - + Op.EXTCODESIZE(address=0xDE57) + + Op.EXTCODESIZE(address=contract_0) + Op.JUMPDEST + Op.POP + Op.JUMPI( @@ -197,7 +194,9 @@ def test_eip2929_minus_ff( + Op.POP(0x0) + Op.JUMP(pc=Op.PUSH2[0x5B]) + Op.JUMPDEST - + Op.EXTCODECOPY(address=0xDE57, dest_offset=0x0, offset=0x0, size=0x1) + + Op.EXTCODECOPY( + address=contract_0, dest_offset=0x0, offset=0x0, size=0x1 + ) + Op.JUMPDEST + Op.JUMPI( pc=Op.PUSH2[0x6C], @@ -206,7 +205,7 @@ def test_eip2929_minus_ff( + Op.PUSH1[0x0] + Op.JUMP(pc=Op.PUSH2[0x71]) + Op.JUMPDEST - + Op.EXTCODEHASH(address=0xDE57) + + Op.EXTCODEHASH(address=contract_0) + Op.JUMPDEST + Op.POP + Op.JUMPI( @@ -218,7 +217,7 @@ def test_eip2929_minus_ff( + Op.JUMPDEST + Op.CALL( gas=0x10000, - address=0xDE57, + address=contract_0, value=0x0, args_offset=0x0, args_size=0x0, @@ -236,7 +235,7 @@ def test_eip2929_minus_ff( + Op.JUMPDEST + Op.CALLCODE( gas=0x10000, - address=0xDE57, + address=contract_0, value=0x0, args_offset=0x0, args_size=0x0, @@ -254,7 +253,7 @@ def test_eip2929_minus_ff( + Op.JUMPDEST + Op.DELEGATECALL( gas=0x10000, - address=0xDE57, + address=contract_0, args_offset=0x0, args_size=0x0, ret_offset=0x0, @@ -271,7 +270,7 @@ def test_eip2929_minus_ff( + Op.JUMPDEST + Op.STATICCALL( gas=0x10000, - address=0xDE57, + address=contract_0, args_offset=0x0, args_size=0x0, ret_offset=0x0, @@ -283,7 +282,7 @@ def test_eip2929_minus_ff( + Op.POP( Op.CALL( gas=0x1000000, - address=0xCA11, + address=contract_1, value=0x0, args_offset=0x0, args_size=0x0, @@ -299,7 +298,7 @@ def test_eip2929_minus_ff( ), ) + Op.MSTORE(offset=0x100, value=Op.GAS) - + Op.POP(Op.BALANCE(address=0xDE57)) + + Op.POP(Op.BALANCE(address=contract_0)) + Op.MSTORE(offset=0x120, value=Op.GAS) + Op.SSTORE( key=0x1, @@ -310,9 +309,7 @@ def test_eip2929_minus_ff( + Op.STOP, balance=0xBA1A9CE0BA1A9CE, nonce=0, - address=Address(0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC), # noqa: E501 ) - pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stEIP150singleCodeGasPrices/test_eip2929_oog.py b/tests/ported_static/stEIP150singleCodeGasPrices/test_eip2929_oog.py index 7d8b9723062..c1624aa5866 100644 --- a/tests/ported_static/stEIP150singleCodeGasPrices/test_eip2929_oog.py +++ b/tests/ported_static/stEIP150singleCodeGasPrices/test_eip2929_oog.py @@ -129,6 +129,7 @@ def test_eip2929_oog( gas_limit=100000000, ) + pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE, nonce=1) # Source: lll # { # @@0 @@ -151,46 +152,49 @@ def test_eip2929_oog( ) # Source: lll # { - # (balance 0xACC7) - # } - contract_2 = pre.deploy_contract( # noqa: F841 - code=Op.BALANCE(address=0xACC7) + Op.STOP, - balance=0xBA1A9CE0BA1A9CE, - nonce=1, - address=Address(0x0000000000000000000000000000000000001031), # noqa: E501 - ) - # Source: lll - # { - # (extcodesize 0x1031) + # (return 0 0) # } - contract_3 = pre.deploy_contract( # noqa: F841 - code=Op.EXTCODESIZE(address=0x1031) + Op.STOP, + contract_10 = pre.deploy_contract( # noqa: F841 + code=Op.RETURN(offset=0x0, size=0x0) + Op.STOP, balance=0xBA1A9CE0BA1A9CE, nonce=1, - address=Address(0x000000000000000000000000000000000000103B), # noqa: E501 + address=Address(0x000000000000000000000000000000000000ACC7), # noqa: E501 ) # Source: lll # { - # (extcodecopy 0x1031 0 0 0x20) + # (def 'addr $4) ; the address to call + # (def 'callGas $36) ; the amount of gas to give it + # + # [[0]] (call callGas addr 0 0 0 0 0) # } - contract_4 = pre.deploy_contract( # noqa: F841 - code=Op.EXTCODECOPY( - address=0x1031, dest_offset=0x0, offset=0x0, size=0x20 + contract_11 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.CALL( + gas=Op.CALLDATALOAD(offset=0x24), + address=Op.CALLDATALOAD(offset=0x4), + value=0x0, + args_offset=0x0, + args_size=0x0, + ret_offset=0x0, + ret_size=0x0, + ), ) + Op.STOP, + storage={0: 24743}, balance=0xBA1A9CE0BA1A9CE, nonce=1, - address=Address(0x000000000000000000000000000000000000103C), # noqa: E501 + address=Address(0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC), # noqa: E501 ) # Source: lll # { - # (extcodehash 0x1031) + # (balance 0xACC7) # } - contract_5 = pre.deploy_contract( # noqa: F841 - code=Op.EXTCODEHASH(address=0x1031) + Op.STOP, + contract_2 = pre.deploy_contract( # noqa: F841 + code=Op.BALANCE(address=0xACC7) + Op.STOP, balance=0xBA1A9CE0BA1A9CE, nonce=1, - address=Address(0x000000000000000000000000000000000000103F), # noqa: E501 + address=Address(0x0000000000000000000000000000000000001031), # noqa: E501 ) # Source: lll # { @@ -213,6 +217,24 @@ def test_eip2929_oog( ) # Source: lll # { + # (staticcall 0x06A5 0xACC7 0 0 0 0) + # } + contract_9 = pre.deploy_contract( # noqa: F841 + code=Op.STATICCALL( + gas=0x6A5, + address=0xACC7, + args_offset=0x0, + args_size=0x0, + ret_offset=0x0, + ret_size=0x0, + ) + + Op.STOP, + balance=0xBA1A9CE0BA1A9CE, + nonce=1, + address=Address(0x00000000000000000000000000000000000010FA), # noqa: E501 + ) + # Source: lll + # { # (callcode 0x06A5 0xACC7 0 0 0 0 0) # } contract_7 = pre.deploy_contract( # noqa: F841 @@ -250,59 +272,37 @@ def test_eip2929_oog( ) # Source: lll # { - # (staticcall 0x06A5 0xACC7 0 0 0 0) + # (extcodecopy 0x1031 0 0 0x20) # } - contract_9 = pre.deploy_contract( # noqa: F841 - code=Op.STATICCALL( - gas=0x6A5, - address=0xACC7, - args_offset=0x0, - args_size=0x0, - ret_offset=0x0, - ret_size=0x0, + contract_4 = pre.deploy_contract( # noqa: F841 + code=Op.EXTCODECOPY( + address=0x1031, dest_offset=0x0, offset=0x0, size=0x20 ) + Op.STOP, balance=0xBA1A9CE0BA1A9CE, nonce=1, - address=Address(0x00000000000000000000000000000000000010FA), # noqa: E501 + address=Address(0x000000000000000000000000000000000000103C), # noqa: E501 ) # Source: lll # { - # (return 0 0) + # (extcodesize 0x1031) # } - contract_10 = pre.deploy_contract( # noqa: F841 - code=Op.RETURN(offset=0x0, size=0x0) + Op.STOP, + contract_3 = pre.deploy_contract( # noqa: F841 + code=Op.EXTCODESIZE(address=0x1031) + Op.STOP, balance=0xBA1A9CE0BA1A9CE, nonce=1, - address=Address(0x000000000000000000000000000000000000ACC7), # noqa: E501 + address=Address(0x000000000000000000000000000000000000103B), # noqa: E501 ) # Source: lll # { - # (def 'addr $4) ; the address to call - # (def 'callGas $36) ; the amount of gas to give it - # - # [[0]] (call callGas addr 0 0 0 0 0) + # (extcodehash 0x1031) # } - contract_11 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.CALL( - gas=Op.CALLDATALOAD(offset=0x24), - address=Op.CALLDATALOAD(offset=0x4), - value=0x0, - args_offset=0x0, - args_size=0x0, - ret_offset=0x0, - ret_size=0x0, - ), - ) - + Op.STOP, - storage={0: 24743}, + contract_5 = pre.deploy_contract( # noqa: F841 + code=Op.EXTCODEHASH(address=0x1031) + Op.STOP, balance=0xBA1A9CE0BA1A9CE, nonce=1, - address=Address(0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC), # noqa: E501 + address=Address(0x000000000000000000000000000000000000103F), # noqa: E501 ) - pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE, nonce=1) tx_data = [ Bytes("1a8451e6") + Hash(contract_0, left_padding=True) + Hash(0x7D0), diff --git a/tests/ported_static/stEIP150singleCodeGasPrices/test_gas_cost.py b/tests/ported_static/stEIP150singleCodeGasPrices/test_gas_cost.py index 31b6e7693b0..98b4497269a 100644 --- a/tests/ported_static/stEIP150singleCodeGasPrices/test_gas_cost.py +++ b/tests/ported_static/stEIP150singleCodeGasPrices/test_gas_cost.py @@ -728,6 +728,7 @@ def test_gas_cost( gas_limit=100000000, ) + pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE) # Source: lll # { ; LLL doesn't let us call arbitrary code, so we craft # ; a new contract with the opcode and then call it to see @@ -851,7 +852,6 @@ def test_gas_cost( nonce=0, address=Address(0xCCDCF3FF42C8382ABEEF05BB8949F975A6BC345C), # noqa: E501 ) - pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stEIP150singleCodeGasPrices/test_gas_cost_berlin.py b/tests/ported_static/stEIP150singleCodeGasPrices/test_gas_cost_berlin.py index a11595f8ea4..c122aab7d30 100644 --- a/tests/ported_static/stEIP150singleCodeGasPrices/test_gas_cost_berlin.py +++ b/tests/ported_static/stEIP150singleCodeGasPrices/test_gas_cost_berlin.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -712,9 +711,7 @@ def test_gas_cost_berlin( ) -> None: """Ori Pomerantz qbzzt1@gmail.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x40AC0FC28C27E961EE46EC43355A094DE205856EDBD4654CF2577C2608D4EC1E - ) + sender = pre.fund_eoa(amount=0xBA1A9CE0BA1A9CE) env = Environment( fee_recipient=coinbase, @@ -848,7 +845,6 @@ def test_gas_cost_berlin( nonce=0, address=Address(0x2F170B2347023BB6BF3EEC84B53259B96E0268C3), # noqa: E501 ) - pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE) tx_data = [ Bytes("000000"), diff --git a/tests/ported_static/stEIP150singleCodeGasPrices/test_gas_cost_exp.py b/tests/ported_static/stEIP150singleCodeGasPrices/test_gas_cost_exp.py index ef775c738b1..6b9f898a757 100644 --- a/tests/ported_static/stEIP150singleCodeGasPrices/test_gas_cost_exp.py +++ b/tests/ported_static/stEIP150singleCodeGasPrices/test_gas_cost_exp.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -98,9 +97,7 @@ def test_gas_cost_exp( ) -> None: """Ori Pomerantz qbzzt1@gmail.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x40AC0FC28C27E961EE46EC43355A094DE205856EDBD4654CF2577C2608D4EC1E - ) + sender = pre.fund_eoa(amount=0xBA1A9CE0BA1A9CE) env = Environment( fee_recipient=coinbase, @@ -158,9 +155,7 @@ def test_gas_cost_exp( storage={0: 24743}, balance=0xBA1A9CE0BA1A9CE, nonce=0, - address=Address(0x087AAB8070088FBBE4F60141CF79032D28528B89), # noqa: E501 ) - pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE) tx_data = [ Bytes("c5b5a1ae") + Hash(0x0) + Hash(0x20), diff --git a/tests/ported_static/stEIP150singleCodeGasPrices/test_gas_cost_jump.py b/tests/ported_static/stEIP150singleCodeGasPrices/test_gas_cost_jump.py index 48f7047d708..e176e90fd86 100644 --- a/tests/ported_static/stEIP150singleCodeGasPrices/test_gas_cost_jump.py +++ b/tests/ported_static/stEIP150singleCodeGasPrices/test_gas_cost_jump.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -67,9 +66,7 @@ def test_gas_cost_jump( contract_2 = Address(0x0000000000000000000000000000000000003000) contract_3 = Address(0x0000000000000000000000000000000000004000) contract_4 = Address(0x095E7BAEA6A6C7C4C2DFEB977EFAC326AF552D87) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0xBA1A9CE0BA1A9CE) env = Environment( fee_recipient=coinbase, @@ -149,7 +146,7 @@ def test_gas_cost_jump( + Op.POP( Op.CALL( gas=0x10000, - address=0x1000, + address=contract_0, value=0x0, args_offset=0x0, args_size=0x0, @@ -166,7 +163,7 @@ def test_gas_cost_jump( + Op.POP( Op.CALL( gas=0x10000, - address=0x2000, + address=contract_1, value=0x0, args_offset=0x0, args_size=0x0, @@ -184,7 +181,7 @@ def test_gas_cost_jump( + Op.POP( Op.CALL( gas=0x10000, - address=0x3000, + address=contract_2, value=0x0, args_offset=0x0, args_size=0x0, @@ -202,7 +199,7 @@ def test_gas_cost_jump( + Op.POP( Op.CALL( gas=0x10000, - address=0x4000, + address=contract_3, value=0x0, args_offset=0x0, args_size=0x0, @@ -223,9 +220,7 @@ def test_gas_cost_jump( storage={0: 24743}, balance=0xBA1A9CE0BA1A9CE, nonce=0, - address=Address(0x095E7BAEA6A6C7C4C2DFEB977EFAC326AF552D87), # noqa: E501 ) - pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE) tx_data = [ Bytes("c5b5a1ae") + Hash(0x1) + Hash(0x4), diff --git a/tests/ported_static/stEIP150singleCodeGasPrices/test_gas_cost_mem_seg.py b/tests/ported_static/stEIP150singleCodeGasPrices/test_gas_cost_mem_seg.py index b9e08d5bb92..1b37685b220 100644 --- a/tests/ported_static/stEIP150singleCodeGasPrices/test_gas_cost_mem_seg.py +++ b/tests/ported_static/stEIP150singleCodeGasPrices/test_gas_cost_mem_seg.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -374,9 +373,7 @@ def test_gas_cost_mem_seg( ) -> None: """Ori Pomerantz qbzzt1@gmail.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x40AC0FC28C27E961EE46EC43355A094DE205856EDBD4654CF2577C2608D4EC1E - ) + sender = pre.fund_eoa(amount=0xBA1A9CE0BA1A9CE) env = Environment( fee_recipient=coinbase, @@ -540,9 +537,7 @@ def test_gas_cost_mem_seg( storage={0: 24743}, balance=0xBA1A9CE0BA1A9CE, nonce=0, - address=Address(0x727437E50AF8535411157A4ACA154C81D72BAAD4), # noqa: E501 ) - pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE) tx_data = [ Bytes("98eed7a4") diff --git a/tests/ported_static/stEIP150singleCodeGasPrices/test_gas_cost_memory.py b/tests/ported_static/stEIP150singleCodeGasPrices/test_gas_cost_memory.py index de51a40f163..aad4a36436a 100644 --- a/tests/ported_static/stEIP150singleCodeGasPrices/test_gas_cost_memory.py +++ b/tests/ported_static/stEIP150singleCodeGasPrices/test_gas_cost_memory.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -501,9 +500,7 @@ def test_gas_cost_memory( contract_1 = Address(0x000000000000000000000000000000000010BA5E) contract_2 = Address(0x000000000000000000000000000000000011BA5E) contract_3 = Address(0x095E7BAEA6A6C7C4C2DFEB977EFAC326AF552D87) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0xBA1A9CE0BA1A9CE) env = Environment( fee_recipient=coinbase, @@ -633,7 +630,7 @@ def test_gas_cost_memory( + Op.POP( Op.CALL( gas=0x10000, - address=0xBA5E, + address=contract_0, value=0x0, args_offset=0x20, args_size=0x20, @@ -657,7 +654,7 @@ def test_gas_cost_memory( + Op.POP( Op.CALL( gas=0x10000, - address=0xBA5E, + address=contract_0, value=0x0, args_offset=0x20, args_size=0x20, @@ -674,7 +671,7 @@ def test_gas_cost_memory( + Op.POP( Op.CALL( gas=0x10000, - address=0x10BA5E, + address=contract_1, value=0x0, args_offset=0x20, args_size=0x20, @@ -696,7 +693,7 @@ def test_gas_cost_memory( + Op.POP( Op.CALL( gas=0x10000, - address=0xBA5E, + address=contract_0, value=0x0, args_offset=0x20, args_size=0x20, @@ -713,7 +710,7 @@ def test_gas_cost_memory( + Op.POP( Op.CALL( gas=0x10000, - address=0x11BA5E, + address=contract_2, value=0x0, args_offset=0x20, args_size=0x20, @@ -767,9 +764,7 @@ def test_gas_cost_memory( storage={0: 24743}, balance=0xBA1A9CE0BA1A9CE, nonce=0, - address=Address(0x095E7BAEA6A6C7C4C2DFEB977EFAC326AF552D87), # noqa: E501 ) - pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stEIP150singleCodeGasPrices/test_gas_cost_return.py b/tests/ported_static/stEIP150singleCodeGasPrices/test_gas_cost_return.py index 4d9a218a2b2..cebe282fc29 100644 --- a/tests/ported_static/stEIP150singleCodeGasPrices/test_gas_cost_return.py +++ b/tests/ported_static/stEIP150singleCodeGasPrices/test_gas_cost_return.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_gas_cost_return( ) -> None: """Ori Pomerantz qbzzt1@gmail.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x40AC0FC28C27E961EE46EC43355A094DE205856EDBD4654CF2577C2608D4EC1E - ) + sender = pre.fund_eoa(amount=0xBA1A9CE0BA1A9CE) env = Environment( fee_recipient=coinbase, @@ -52,7 +49,6 @@ def test_gas_cost_return( code=Op.PUSH1[0x0] + Op.PUSH1[0xFF] + Op.STOP, balance=0xBA1A9CE0BA1A9CE, nonce=0, - address=Address(0xEB0E68B88A12FC84AD4A1EEB07B289638C4D9F3C), # noqa: E501 ) # Source: raw # 0x600060FFF3 @@ -60,7 +56,6 @@ def test_gas_cost_return( code=Op.RETURN(offset=0xFF, size=0x0), balance=0xBA1A9CE0BA1A9CE, nonce=0, - address=Address(0x35CD99E56B0F9AC243172A86BEF4D042DFDBC166), # noqa: E501 ) # Source: lll # { @@ -131,9 +126,7 @@ def test_gas_cost_return( storage={0: 24743}, balance=0xBA1A9CE0BA1A9CE, nonce=0, - address=Address(0x155665FB22995BB5B9DC1D8D9D57A00AC64DC1E0), # noqa: E501 ) - pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_balance_gas.py b/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_balance_gas.py index 1245ad40bcd..9b410ce9fb9 100644 --- a/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_balance_gas.py +++ b/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_balance_gas.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_raw_balance_gas( ) -> None: """Test_raw_balance_gas.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x4F31B3206FBF0E0E598B9B1A7D8AC86302A0FF1D8930738F1BEBAE9B67173E52 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -46,18 +43,14 @@ def test_raw_balance_gas( gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) # Source: lll # { [0] (GAS) (BALANCE ) [[1]] (SUB @0 (GAS)) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 code=Op.MSTORE(offset=0x0, value=Op.GAS) - + Op.POP( - Op.BALANCE(address=0xFAA10B404AB607779993C016CD5DA73AE1F29D7E) - ) + + Op.POP(Op.BALANCE(address=sender)) + Op.SSTORE(key=0x1, value=Op.SUB(Op.MLOAD(offset=0x0), Op.GAS)) + Op.STOP, nonce=0, - address=Address(0xDFDE2D07C7829A62D244D6B9791742B2921AF7C0), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_call_code_gas.py b/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_call_code_gas.py index f0df76fdf2e..ce267ffe0b9 100644 --- a/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_call_code_gas.py +++ b/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_call_code_gas.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_raw_call_code_gas( ) -> None: """Test_raw_call_code_gas.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x4F31B3206FBF0E0E598B9B1A7D8AC86302A0FF1D8930738F1BEBAE9B67173E52 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -51,9 +48,7 @@ def test_raw_call_code_gas( addr = pre.deploy_contract( # noqa: F841 code=Op.SSTORE(key=0x2, value=Op.GAS) + Op.STOP, nonce=0, - address=Address(0xE497CD0909C3691E0B6D2A42E26F36696FC27BA5), # noqa: E501 ) - pre[sender] = Account(balance=0xE8D4A51000) # Source: lll # { [0] (GAS) (CALLCODE 30000 0 0 0 0 0) [[1]] (SUB @0 (GAS)) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -61,7 +56,7 @@ def test_raw_call_code_gas( + Op.POP( Op.CALLCODE( gas=0x7530, - address=0xE497CD0909C3691E0B6D2A42E26F36696FC27BA5, + address=addr, value=0x0, args_offset=0x0, args_size=0x0, @@ -72,7 +67,6 @@ def test_raw_call_code_gas( + Op.SSTORE(key=0x1, value=Op.SUB(Op.MLOAD(offset=0x0), Op.GAS)) + Op.STOP, nonce=0, - address=Address(0x2368FC9631CC2861D8E253341F166876337E12B0), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_call_code_gas_ask.py b/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_call_code_gas_ask.py index 338862b55c4..4850de47a79 100644 --- a/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_call_code_gas_ask.py +++ b/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_call_code_gas_ask.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_raw_call_code_gas_ask( ) -> None: """Test_raw_call_code_gas_ask.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x4F31B3206FBF0E0E598B9B1A7D8AC86302A0FF1D8930738F1BEBAE9B67173E52 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -51,9 +48,7 @@ def test_raw_call_code_gas_ask( addr = pre.deploy_contract( # noqa: F841 code=Op.SSTORE(key=0x2, value=Op.GAS) + Op.STOP, nonce=0, - address=Address(0xE497CD0909C3691E0B6D2A42E26F36696FC27BA5), # noqa: E501 ) - pre[sender] = Account(balance=0xE8D4A51000) # Source: lll # { [0] (GAS) (CALLCODE 3000000 0 0 0 0 0) [[1]] (SUB @0 (GAS)) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -61,7 +56,7 @@ def test_raw_call_code_gas_ask( + Op.POP( Op.CALLCODE( gas=0x2DC6C0, - address=0xE497CD0909C3691E0B6D2A42E26F36696FC27BA5, + address=addr, value=0x0, args_offset=0x0, args_size=0x0, @@ -72,7 +67,6 @@ def test_raw_call_code_gas_ask( + Op.SSTORE(key=0x1, value=Op.SUB(Op.MLOAD(offset=0x0), Op.GAS)) + Op.STOP, nonce=0, - address=Address(0x971FAD0EE9240291BBA0691A5C8DB57FCB9A6A22), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_call_code_gas_memory.py b/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_call_code_gas_memory.py index f2763a748c0..d5eecdff81e 100644 --- a/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_call_code_gas_memory.py +++ b/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_call_code_gas_memory.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_raw_call_code_gas_memory( ) -> None: """Test_raw_call_code_gas_memory.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x4F31B3206FBF0E0E598B9B1A7D8AC86302A0FF1D8930738F1BEBAE9B67173E52 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -53,9 +50,7 @@ def test_raw_call_code_gas_memory( addr = pre.deploy_contract( # noqa: F841 code=Op.SSTORE(key=0x2, value=Op.GAS) + Op.STOP, nonce=0, - address=Address(0xE497CD0909C3691E0B6D2A42E26F36696FC27BA5), # noqa: E501 ) - pre[sender] = Account(balance=0xE8D4A51000) # Source: lll # { [0] (GAS) (CALLCODE 30000 0 0 8000 0 8000) [[1]] (SUB @0 (GAS)) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -63,7 +58,7 @@ def test_raw_call_code_gas_memory( + Op.POP( Op.CALLCODE( gas=0x7530, - address=0xE497CD0909C3691E0B6D2A42E26F36696FC27BA5, + address=addr, value=0x0, args_offset=0x0, args_size=0x1F40, @@ -74,7 +69,6 @@ def test_raw_call_code_gas_memory( + Op.SSTORE(key=0x1, value=Op.SUB(Op.MLOAD(offset=0x0), Op.GAS)) + Op.STOP, nonce=0, - address=Address(0xEFBB83CB8BB5ED4F8CBCE07972C071D88020EA1F), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_call_code_gas_memory_ask.py b/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_call_code_gas_memory_ask.py index 6d6dea998e7..dbed9f97250 100644 --- a/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_call_code_gas_memory_ask.py +++ b/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_call_code_gas_memory_ask.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_raw_call_code_gas_memory_ask( ) -> None: """Test_raw_call_code_gas_memory_ask.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x4F31B3206FBF0E0E598B9B1A7D8AC86302A0FF1D8930738F1BEBAE9B67173E52 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -53,9 +50,7 @@ def test_raw_call_code_gas_memory_ask( addr = pre.deploy_contract( # noqa: F841 code=Op.SSTORE(key=0x2, value=Op.GAS) + Op.STOP, nonce=0, - address=Address(0xE497CD0909C3691E0B6D2A42E26F36696FC27BA5), # noqa: E501 ) - pre[sender] = Account(balance=0xE8D4A51000) # Source: lll # { [0] (GAS) (CALLCODE 3000000 0 0 8000 0 8000) [[1]] (SUB @0 (GAS)) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -63,7 +58,7 @@ def test_raw_call_code_gas_memory_ask( + Op.POP( Op.CALLCODE( gas=0x2DC6C0, - address=0xE497CD0909C3691E0B6D2A42E26F36696FC27BA5, + address=addr, value=0x0, args_offset=0x0, args_size=0x1F40, @@ -74,7 +69,6 @@ def test_raw_call_code_gas_memory_ask( + Op.SSTORE(key=0x1, value=Op.SUB(Op.MLOAD(offset=0x0), Op.GAS)) + Op.STOP, nonce=0, - address=Address(0x71A0BCD4587FB3C57B8066A375518DADA2A8ECDB), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_call_code_gas_value_transfer.py b/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_call_code_gas_value_transfer.py index b61fa486d90..8082a69671c 100644 --- a/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_call_code_gas_value_transfer.py +++ b/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_call_code_gas_value_transfer.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_raw_call_code_gas_value_transfer( ) -> None: """Test_raw_call_code_gas_value_transfer.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x4F31B3206FBF0E0E598B9B1A7D8AC86302A0FF1D8930738F1BEBAE9B67173E52 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -53,9 +50,7 @@ def test_raw_call_code_gas_value_transfer( addr = pre.deploy_contract( # noqa: F841 code=Op.SSTORE(key=0x2, value=Op.GAS) + Op.STOP, nonce=0, - address=Address(0xE497CD0909C3691E0B6D2A42E26F36696FC27BA5), # noqa: E501 ) - pre[sender] = Account(balance=0xE8D4A51000) # Source: lll # { [0] (GAS) (CALLCODE 30000 10 0 0 0 0) [[1]] (SUB @0 (GAS)) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -63,7 +58,7 @@ def test_raw_call_code_gas_value_transfer( + Op.POP( Op.CALLCODE( gas=0x7530, - address=0xE497CD0909C3691E0B6D2A42E26F36696FC27BA5, + address=addr, value=0xA, args_offset=0x0, args_size=0x0, @@ -74,7 +69,6 @@ def test_raw_call_code_gas_value_transfer( + Op.SSTORE(key=0x1, value=Op.SUB(Op.MLOAD(offset=0x0), Op.GAS)) + Op.STOP, nonce=0, - address=Address(0x52AA4AAF09161CCB2C2FDBDD1F646420A6B96087), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_call_code_gas_value_transfer_ask.py b/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_call_code_gas_value_transfer_ask.py index 9c32ba75b58..d69e9eec044 100644 --- a/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_call_code_gas_value_transfer_ask.py +++ b/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_call_code_gas_value_transfer_ask.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_raw_call_code_gas_value_transfer_ask( ) -> None: """Test_raw_call_code_gas_value_transfer_ask.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x4F31B3206FBF0E0E598B9B1A7D8AC86302A0FF1D8930738F1BEBAE9B67173E52 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -53,9 +50,7 @@ def test_raw_call_code_gas_value_transfer_ask( addr = pre.deploy_contract( # noqa: F841 code=Op.SSTORE(key=0x2, value=Op.GAS) + Op.STOP, nonce=0, - address=Address(0xE497CD0909C3691E0B6D2A42E26F36696FC27BA5), # noqa: E501 ) - pre[sender] = Account(balance=0xE8D4A51000) # Source: lll # { [0] (GAS) (CALLCODE 3000000 10 0 0 0 0) [[1]] (SUB @0 (GAS)) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -63,7 +58,7 @@ def test_raw_call_code_gas_value_transfer_ask( + Op.POP( Op.CALLCODE( gas=0x2DC6C0, - address=0xE497CD0909C3691E0B6D2A42E26F36696FC27BA5, + address=addr, value=0xA, args_offset=0x0, args_size=0x0, @@ -74,7 +69,6 @@ def test_raw_call_code_gas_value_transfer_ask( + Op.SSTORE(key=0x1, value=Op.SUB(Op.MLOAD(offset=0x0), Op.GAS)) + Op.STOP, nonce=0, - address=Address(0x956D6BBD9F4F04F26A090166E43C641B1C5C2EDE), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_call_code_gas_value_transfer_memory.py b/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_call_code_gas_value_transfer_memory.py index 730ba366c62..adc2b040768 100644 --- a/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_call_code_gas_value_transfer_memory.py +++ b/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_call_code_gas_value_transfer_memory.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_raw_call_code_gas_value_transfer_memory( ) -> None: """Test_raw_call_code_gas_value_transfer_memory.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x4F31B3206FBF0E0E598B9B1A7D8AC86302A0FF1D8930738F1BEBAE9B67173E52 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -53,9 +50,7 @@ def test_raw_call_code_gas_value_transfer_memory( addr = pre.deploy_contract( # noqa: F841 code=Op.SSTORE(key=0x2, value=Op.GAS) + Op.STOP, nonce=0, - address=Address(0xE497CD0909C3691E0B6D2A42E26F36696FC27BA5), # noqa: E501 ) - pre[sender] = Account(balance=0xE8D4A51000) # Source: lll # { [0] (GAS) (CALLCODE 30000 10 0 8000 0 8000) [[1]] (SUB @0 (GAS)) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -63,7 +58,7 @@ def test_raw_call_code_gas_value_transfer_memory( + Op.POP( Op.CALLCODE( gas=0x7530, - address=0xE497CD0909C3691E0B6D2A42E26F36696FC27BA5, + address=addr, value=0xA, args_offset=0x0, args_size=0x1F40, @@ -74,7 +69,6 @@ def test_raw_call_code_gas_value_transfer_memory( + Op.SSTORE(key=0x1, value=Op.SUB(Op.MLOAD(offset=0x0), Op.GAS)) + Op.STOP, nonce=0, - address=Address(0xF1F3A9AF4253BD7852A915ED5DCAA2360DE438F6), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_call_code_gas_value_transfer_memory_ask.py b/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_call_code_gas_value_transfer_memory_ask.py index efd24139352..db089d6d3fc 100644 --- a/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_call_code_gas_value_transfer_memory_ask.py +++ b/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_call_code_gas_value_transfer_memory_ask.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_raw_call_code_gas_value_transfer_memory_ask( ) -> None: """Test_raw_call_code_gas_value_transfer_memory_ask.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x4F31B3206FBF0E0E598B9B1A7D8AC86302A0FF1D8930738F1BEBAE9B67173E52 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -53,9 +50,7 @@ def test_raw_call_code_gas_value_transfer_memory_ask( addr = pre.deploy_contract( # noqa: F841 code=Op.SSTORE(key=0x2, value=Op.GAS) + Op.STOP, nonce=0, - address=Address(0xE497CD0909C3691E0B6D2A42E26F36696FC27BA5), # noqa: E501 ) - pre[sender] = Account(balance=0xE8D4A51000) # Source: lll # { [0] (GAS) (CALLCODE 3000000 10 0 8000 0 8000) [[1]] (SUB @0 (GAS)) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -63,7 +58,7 @@ def test_raw_call_code_gas_value_transfer_memory_ask( + Op.POP( Op.CALLCODE( gas=0x2DC6C0, - address=0xE497CD0909C3691E0B6D2A42E26F36696FC27BA5, + address=addr, value=0xA, args_offset=0x0, args_size=0x1F40, @@ -74,7 +69,6 @@ def test_raw_call_code_gas_value_transfer_memory_ask( + Op.SSTORE(key=0x1, value=Op.SUB(Op.MLOAD(offset=0x0), Op.GAS)) + Op.STOP, nonce=0, - address=Address(0x2A2CF91E47A7D53E3AA1D443454EF6AFAC34E2C8), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_call_gas.py b/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_call_gas.py index d8102a1447c..97bc8524d66 100644 --- a/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_call_gas.py +++ b/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_call_gas.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_raw_call_gas( ) -> None: """Test_raw_call_gas.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x4F31B3206FBF0E0E598B9B1A7D8AC86302A0FF1D8930738F1BEBAE9B67173E52 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -51,9 +48,7 @@ def test_raw_call_gas( addr = pre.deploy_contract( # noqa: F841 code=Op.SSTORE(key=0x2, value=Op.GAS) + Op.STOP, nonce=0, - address=Address(0xE497CD0909C3691E0B6D2A42E26F36696FC27BA5), # noqa: E501 ) - pre[sender] = Account(balance=0xE8D4A51000) # Source: lll # { [0] (GAS) (CALL 30000 0 0 0 0 0) [[1]] (SUB @0 (GAS)) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -61,7 +56,7 @@ def test_raw_call_gas( + Op.POP( Op.CALL( gas=0x7530, - address=0xE497CD0909C3691E0B6D2A42E26F36696FC27BA5, + address=addr, value=0x0, args_offset=0x0, args_size=0x0, @@ -72,7 +67,6 @@ def test_raw_call_gas( + Op.SSTORE(key=0x1, value=Op.SUB(Op.MLOAD(offset=0x0), Op.GAS)) + Op.STOP, nonce=0, - address=Address(0x7541FD15B3CBF59FFE4C9FA7303C5A98C7C2AEFD), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_call_gas_ask.py b/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_call_gas_ask.py index 25c81635957..6935ff2a0d7 100644 --- a/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_call_gas_ask.py +++ b/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_call_gas_ask.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_raw_call_gas_ask( ) -> None: """Test_raw_call_gas_ask.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x4F31B3206FBF0E0E598B9B1A7D8AC86302A0FF1D8930738F1BEBAE9B67173E52 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -51,9 +48,7 @@ def test_raw_call_gas_ask( addr = pre.deploy_contract( # noqa: F841 code=Op.SSTORE(key=0x2, value=Op.GAS) + Op.STOP, nonce=0, - address=Address(0xE497CD0909C3691E0B6D2A42E26F36696FC27BA5), # noqa: E501 ) - pre[sender] = Account(balance=0xE8D4A51000) # Source: lll # { [0] (GAS) (CALL 3000000 0 0 0 0 0) [[1]] (SUB @0 (GAS)) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -61,7 +56,7 @@ def test_raw_call_gas_ask( + Op.POP( Op.CALL( gas=0x2DC6C0, - address=0xE497CD0909C3691E0B6D2A42E26F36696FC27BA5, + address=addr, value=0x0, args_offset=0x0, args_size=0x0, @@ -72,7 +67,6 @@ def test_raw_call_gas_ask( + Op.SSTORE(key=0x1, value=Op.SUB(Op.MLOAD(offset=0x0), Op.GAS)) + Op.STOP, nonce=0, - address=Address(0x18817869E5F5B3F55F57BB7791EA8EE6F62604C8), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_call_gas_value_transfer.py b/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_call_gas_value_transfer.py index fdd367c3445..c94dd98e65a 100644 --- a/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_call_gas_value_transfer.py +++ b/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_call_gas_value_transfer.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_raw_call_gas_value_transfer( ) -> None: """Test_raw_call_gas_value_transfer.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x4F31B3206FBF0E0E598B9B1A7D8AC86302A0FF1D8930738F1BEBAE9B67173E52 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -53,9 +50,7 @@ def test_raw_call_gas_value_transfer( addr = pre.deploy_contract( # noqa: F841 code=Op.SSTORE(key=0x2, value=Op.GAS) + Op.STOP, nonce=0, - address=Address(0xE497CD0909C3691E0B6D2A42E26F36696FC27BA5), # noqa: E501 ) - pre[sender] = Account(balance=0xE8D4A51000) # Source: lll # { [0] (GAS) (CALL 30000 10 0 0 0 0) [[1]] (SUB @0 (GAS)) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -63,7 +58,7 @@ def test_raw_call_gas_value_transfer( + Op.POP( Op.CALL( gas=0x7530, - address=0xE497CD0909C3691E0B6D2A42E26F36696FC27BA5, + address=addr, value=0xA, args_offset=0x0, args_size=0x0, @@ -74,7 +69,6 @@ def test_raw_call_gas_value_transfer( + Op.SSTORE(key=0x1, value=Op.SUB(Op.MLOAD(offset=0x0), Op.GAS)) + Op.STOP, nonce=0, - address=Address(0xC2955AF3F56C0D3150BE7ABBD80A01914337D211), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_call_gas_value_transfer_ask.py b/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_call_gas_value_transfer_ask.py index 2348ff7e697..46240d39693 100644 --- a/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_call_gas_value_transfer_ask.py +++ b/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_call_gas_value_transfer_ask.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_raw_call_gas_value_transfer_ask( ) -> None: """Test_raw_call_gas_value_transfer_ask.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x4F31B3206FBF0E0E598B9B1A7D8AC86302A0FF1D8930738F1BEBAE9B67173E52 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -53,9 +50,7 @@ def test_raw_call_gas_value_transfer_ask( addr = pre.deploy_contract( # noqa: F841 code=Op.SSTORE(key=0x2, value=Op.GAS) + Op.STOP, nonce=0, - address=Address(0xE497CD0909C3691E0B6D2A42E26F36696FC27BA5), # noqa: E501 ) - pre[sender] = Account(balance=0xE8D4A51000) # Source: lll # { [0] (GAS) (CALL 3000000 10 0 0 0 0) [[1]] (SUB @0 (GAS)) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -63,7 +58,7 @@ def test_raw_call_gas_value_transfer_ask( + Op.POP( Op.CALL( gas=0x2DC6C0, - address=0xE497CD0909C3691E0B6D2A42E26F36696FC27BA5, + address=addr, value=0xA, args_offset=0x0, args_size=0x0, @@ -74,7 +69,6 @@ def test_raw_call_gas_value_transfer_ask( + Op.SSTORE(key=0x1, value=Op.SUB(Op.MLOAD(offset=0x0), Op.GAS)) + Op.STOP, nonce=0, - address=Address(0x75DA17BE9A3B7768A69E918C1574A320A6F9E59F), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_call_gas_value_transfer_memory.py b/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_call_gas_value_transfer_memory.py index e6eb2dcadbd..cd1f9f68c18 100644 --- a/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_call_gas_value_transfer_memory.py +++ b/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_call_gas_value_transfer_memory.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_raw_call_gas_value_transfer_memory( ) -> None: """Test_raw_call_gas_value_transfer_memory.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x4F31B3206FBF0E0E598B9B1A7D8AC86302A0FF1D8930738F1BEBAE9B67173E52 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -53,9 +50,7 @@ def test_raw_call_gas_value_transfer_memory( addr = pre.deploy_contract( # noqa: F841 code=Op.SSTORE(key=0x2, value=Op.GAS) + Op.STOP, nonce=0, - address=Address(0xE497CD0909C3691E0B6D2A42E26F36696FC27BA5), # noqa: E501 ) - pre[sender] = Account(balance=0xE8D4A51000) # Source: lll # { [0] (GAS) (CALL 30000 10 0 8000 0 8000) [[1]] (SUB @0 (GAS)) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -63,7 +58,7 @@ def test_raw_call_gas_value_transfer_memory( + Op.POP( Op.CALL( gas=0x7530, - address=0xE497CD0909C3691E0B6D2A42E26F36696FC27BA5, + address=addr, value=0xA, args_offset=0x0, args_size=0x1F40, @@ -74,7 +69,6 @@ def test_raw_call_gas_value_transfer_memory( + Op.SSTORE(key=0x1, value=Op.SUB(Op.MLOAD(offset=0x0), Op.GAS)) + Op.STOP, nonce=0, - address=Address(0xAD8277A2165D713AF6E54A1CEFB7E5E29022B8A5), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_call_gas_value_transfer_memory_ask.py b/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_call_gas_value_transfer_memory_ask.py index f94defb8e02..0939cc07c2a 100644 --- a/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_call_gas_value_transfer_memory_ask.py +++ b/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_call_gas_value_transfer_memory_ask.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_raw_call_gas_value_transfer_memory_ask( ) -> None: """Test_raw_call_gas_value_transfer_memory_ask.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x4F31B3206FBF0E0E598B9B1A7D8AC86302A0FF1D8930738F1BEBAE9B67173E52 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -53,9 +50,7 @@ def test_raw_call_gas_value_transfer_memory_ask( addr = pre.deploy_contract( # noqa: F841 code=Op.SSTORE(key=0x2, value=Op.GAS) + Op.STOP, nonce=0, - address=Address(0xE497CD0909C3691E0B6D2A42E26F36696FC27BA5), # noqa: E501 ) - pre[sender] = Account(balance=0xE8D4A51000) # Source: lll # { [0] (GAS) (CALL 3000000 10 0 8000 0 8000) [[1]] (SUB @0 (GAS)) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -63,7 +58,7 @@ def test_raw_call_gas_value_transfer_memory_ask( + Op.POP( Op.CALL( gas=0x2DC6C0, - address=0xE497CD0909C3691E0B6D2A42E26F36696FC27BA5, + address=addr, value=0xA, args_offset=0x0, args_size=0x1F40, @@ -74,7 +69,6 @@ def test_raw_call_gas_value_transfer_memory_ask( + Op.SSTORE(key=0x1, value=Op.SUB(Op.MLOAD(offset=0x0), Op.GAS)) + Op.STOP, nonce=0, - address=Address(0x29902EA04A72CBB6F877F6D27471A102E0700F20), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_call_memory_gas.py b/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_call_memory_gas.py index 07c5589ce86..2626ed1afa2 100644 --- a/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_call_memory_gas.py +++ b/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_call_memory_gas.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_raw_call_memory_gas( ) -> None: """Test_raw_call_memory_gas.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x4F31B3206FBF0E0E598B9B1A7D8AC86302A0FF1D8930738F1BEBAE9B67173E52 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -51,9 +48,7 @@ def test_raw_call_memory_gas( addr = pre.deploy_contract( # noqa: F841 code=Op.SSTORE(key=0x2, value=Op.GAS) + Op.STOP, nonce=0, - address=Address(0xE497CD0909C3691E0B6D2A42E26F36696FC27BA5), # noqa: E501 ) - pre[sender] = Account(balance=0xE8D4A51000) # Source: lll # { [0] (GAS) (CALL 30000 0 0 8000 0 8000) [[1]] (SUB @0 (GAS)) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -61,7 +56,7 @@ def test_raw_call_memory_gas( + Op.POP( Op.CALL( gas=0x7530, - address=0xE497CD0909C3691E0B6D2A42E26F36696FC27BA5, + address=addr, value=0x0, args_offset=0x0, args_size=0x1F40, @@ -72,7 +67,6 @@ def test_raw_call_memory_gas( + Op.SSTORE(key=0x1, value=Op.SUB(Op.MLOAD(offset=0x0), Op.GAS)) + Op.STOP, nonce=0, - address=Address(0x590B5B415A9A5F546BDB1A7781B31B91C53902ED), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_call_memory_gas_ask.py b/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_call_memory_gas_ask.py index 085e8cb7954..1ea4c6eab02 100644 --- a/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_call_memory_gas_ask.py +++ b/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_call_memory_gas_ask.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_raw_call_memory_gas_ask( ) -> None: """Test_raw_call_memory_gas_ask.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x4F31B3206FBF0E0E598B9B1A7D8AC86302A0FF1D8930738F1BEBAE9B67173E52 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -51,9 +48,7 @@ def test_raw_call_memory_gas_ask( addr = pre.deploy_contract( # noqa: F841 code=Op.SSTORE(key=0x2, value=Op.GAS) + Op.STOP, nonce=0, - address=Address(0xE497CD0909C3691E0B6D2A42E26F36696FC27BA5), # noqa: E501 ) - pre[sender] = Account(balance=0xE8D4A51000) # Source: lll # { [0] (GAS) (CALL 3000000 0 0 8000 0 8000) [[1]] (SUB @0 (GAS)) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -61,7 +56,7 @@ def test_raw_call_memory_gas_ask( + Op.POP( Op.CALL( gas=0x2DC6C0, - address=0xE497CD0909C3691E0B6D2A42E26F36696FC27BA5, + address=addr, value=0x0, args_offset=0x0, args_size=0x1F40, @@ -72,7 +67,6 @@ def test_raw_call_memory_gas_ask( + Op.SSTORE(key=0x1, value=Op.SUB(Op.MLOAD(offset=0x0), Op.GAS)) + Op.STOP, nonce=0, - address=Address(0x708C831C65C2FB3B3CE85A39A273B30726324A8A), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_create_fail_gas_value_transfer.py b/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_create_fail_gas_value_transfer.py index 3cc3b49047b..b1926166116 100644 --- a/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_create_fail_gas_value_transfer.py +++ b/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_create_fail_gas_value_transfer.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -37,9 +36,7 @@ def test_raw_create_fail_gas_value_transfer( """Test_raw_create_fail_gas_value_transfer.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) contract_0 = Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -50,7 +47,6 @@ def test_raw_create_fail_gas_value_transfer( gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) # Source: lll # { [0] (GAS) (CREATE 11 0 0) [[1]] (SUB @0 (GAS)) } contract_0 = pre.deploy_contract( # noqa: F841 @@ -59,7 +55,6 @@ def test_raw_create_fail_gas_value_transfer( + Op.SSTORE(key=0x1, value=Op.SUB(Op.MLOAD(offset=0x0), Op.GAS)) + Op.STOP, nonce=0, - address=Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_create_fail_gas_value_transfer2.py b/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_create_fail_gas_value_transfer2.py index c32cdafc4a3..cff6a4c875c 100644 --- a/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_create_fail_gas_value_transfer2.py +++ b/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_create_fail_gas_value_transfer2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -37,9 +36,7 @@ def test_raw_create_fail_gas_value_transfer2( """Test_raw_create_fail_gas_value_transfer2.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) contract_0 = Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -50,7 +47,6 @@ def test_raw_create_fail_gas_value_transfer2( gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) # Source: lll # { [0] (GAS) (CREATE 11 0 8000) [[1]] (SUB @0 (GAS)) } contract_0 = pre.deploy_contract( # noqa: F841 @@ -59,7 +55,6 @@ def test_raw_create_fail_gas_value_transfer2( + Op.SSTORE(key=0x1, value=Op.SUB(Op.MLOAD(offset=0x0), Op.GAS)) + Op.STOP, nonce=0, - address=Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_create_gas.py b/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_create_gas.py index 73306bf1d30..cfcdaf8e86f 100644 --- a/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_create_gas.py +++ b/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_create_gas.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_raw_create_gas( """Test_raw_create_gas.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) contract_0 = Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -48,7 +45,6 @@ def test_raw_create_gas( gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) # Source: lll # { [0] (GAS) (CREATE 0 0 0) [[1]] (SUB @0 (GAS)) } contract_0 = pre.deploy_contract( # noqa: F841 @@ -57,7 +53,6 @@ def test_raw_create_gas( + Op.SSTORE(key=0x1, value=Op.SUB(Op.MLOAD(offset=0x0), Op.GAS)) + Op.STOP, nonce=0, - address=Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_create_gas_memory.py b/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_create_gas_memory.py index 057fb26f5ab..78b9d6682e6 100644 --- a/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_create_gas_memory.py +++ b/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_create_gas_memory.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_raw_create_gas_memory( """Test_raw_create_gas_memory.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) contract_0 = Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -48,7 +45,6 @@ def test_raw_create_gas_memory( gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) # Source: lll # { [0] (GAS) (CREATE 0 0 8000) [[1]] (SUB @0 (GAS)) } contract_0 = pre.deploy_contract( # noqa: F841 @@ -57,7 +53,6 @@ def test_raw_create_gas_memory( + Op.SSTORE(key=0x1, value=Op.SUB(Op.MLOAD(offset=0x0), Op.GAS)) + Op.STOP, nonce=0, - address=Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_create_gas_value_transfer.py b/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_create_gas_value_transfer.py index 326573abc02..355d74d1dfd 100644 --- a/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_create_gas_value_transfer.py +++ b/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_create_gas_value_transfer.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -37,9 +36,7 @@ def test_raw_create_gas_value_transfer( """Test_raw_create_gas_value_transfer.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) contract_0 = Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -50,7 +47,6 @@ def test_raw_create_gas_value_transfer( gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) # Source: lll # { [0] (GAS) (CREATE 10 0 0) [[1]] (SUB @0 (GAS)) } contract_0 = pre.deploy_contract( # noqa: F841 @@ -59,7 +55,6 @@ def test_raw_create_gas_value_transfer( + Op.SSTORE(key=0x1, value=Op.SUB(Op.MLOAD(offset=0x0), Op.GAS)) + Op.STOP, nonce=0, - address=Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_create_gas_value_transfer_memory.py b/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_create_gas_value_transfer_memory.py index 376eeeb408f..52578c5b4b9 100644 --- a/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_create_gas_value_transfer_memory.py +++ b/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_create_gas_value_transfer_memory.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -37,9 +36,7 @@ def test_raw_create_gas_value_transfer_memory( """Test_raw_create_gas_value_transfer_memory.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) contract_0 = Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -50,7 +47,6 @@ def test_raw_create_gas_value_transfer_memory( gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) # Source: lll # { [0] (GAS) (CREATE 10 0 8000) [[1]] (SUB @0 (GAS)) } contract_0 = pre.deploy_contract( # noqa: F841 @@ -59,7 +55,6 @@ def test_raw_create_gas_value_transfer_memory( + Op.SSTORE(key=0x1, value=Op.SUB(Op.MLOAD(offset=0x0), Op.GAS)) + Op.STOP, nonce=0, - address=Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_delegate_call_gas.py b/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_delegate_call_gas.py index 47fda58f764..9ff87ffdc2a 100644 --- a/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_delegate_call_gas.py +++ b/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_delegate_call_gas.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_raw_delegate_call_gas( ) -> None: """Test_raw_delegate_call_gas.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x4F31B3206FBF0E0E598B9B1A7D8AC86302A0FF1D8930738F1BEBAE9B67173E52 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -51,9 +48,7 @@ def test_raw_delegate_call_gas( addr = pre.deploy_contract( # noqa: F841 code=Op.SSTORE(key=0x2, value=Op.GAS) + Op.STOP, nonce=0, - address=Address(0xE497CD0909C3691E0B6D2A42E26F36696FC27BA5), # noqa: E501 ) - pre[sender] = Account(balance=0xE8D4A51000) # Source: lll # { [0] (GAS) (DELEGATECALL 30000 0 0 0 0) [[1]] (SUB @0 (GAS)) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -61,7 +56,7 @@ def test_raw_delegate_call_gas( + Op.POP( Op.DELEGATECALL( gas=0x7530, - address=0xE497CD0909C3691E0B6D2A42E26F36696FC27BA5, + address=addr, args_offset=0x0, args_size=0x0, ret_offset=0x0, @@ -71,7 +66,6 @@ def test_raw_delegate_call_gas( + Op.SSTORE(key=0x1, value=Op.SUB(Op.MLOAD(offset=0x0), Op.GAS)) + Op.STOP, nonce=0, - address=Address(0x8DFC4F381EEE03447D510A61A1266821A480BD85), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_delegate_call_gas_ask.py b/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_delegate_call_gas_ask.py index b58dbe0a593..64eeacabb25 100644 --- a/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_delegate_call_gas_ask.py +++ b/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_delegate_call_gas_ask.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_raw_delegate_call_gas_ask( ) -> None: """Test_raw_delegate_call_gas_ask.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x4F31B3206FBF0E0E598B9B1A7D8AC86302A0FF1D8930738F1BEBAE9B67173E52 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -53,9 +50,7 @@ def test_raw_delegate_call_gas_ask( addr = pre.deploy_contract( # noqa: F841 code=Op.SSTORE(key=0x2, value=Op.GAS) + Op.STOP, nonce=0, - address=Address(0xE497CD0909C3691E0B6D2A42E26F36696FC27BA5), # noqa: E501 ) - pre[sender] = Account(balance=0xE8D4A51000) # Source: lll # { [0] (GAS) (DELEGATECALL 3000000 0 0 0 0) [[1]] (SUB @0 (GAS)) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -63,7 +58,7 @@ def test_raw_delegate_call_gas_ask( + Op.POP( Op.DELEGATECALL( gas=0x2DC6C0, - address=0xE497CD0909C3691E0B6D2A42E26F36696FC27BA5, + address=addr, args_offset=0x0, args_size=0x0, ret_offset=0x0, @@ -73,7 +68,6 @@ def test_raw_delegate_call_gas_ask( + Op.SSTORE(key=0x1, value=Op.SUB(Op.MLOAD(offset=0x0), Op.GAS)) + Op.STOP, nonce=0, - address=Address(0xDC20EAF593590F91C2439B61F29CF075006750FF), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_delegate_call_gas_memory.py b/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_delegate_call_gas_memory.py index b49b1a0c366..3db2620bb5a 100644 --- a/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_delegate_call_gas_memory.py +++ b/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_delegate_call_gas_memory.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_raw_delegate_call_gas_memory( ) -> None: """Test_raw_delegate_call_gas_memory.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x4F31B3206FBF0E0E598B9B1A7D8AC86302A0FF1D8930738F1BEBAE9B67173E52 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -53,9 +50,7 @@ def test_raw_delegate_call_gas_memory( addr = pre.deploy_contract( # noqa: F841 code=Op.SSTORE(key=0x2, value=Op.GAS) + Op.STOP, nonce=0, - address=Address(0xE497CD0909C3691E0B6D2A42E26F36696FC27BA5), # noqa: E501 ) - pre[sender] = Account(balance=0xE8D4A51000) # Source: lll # { [0] (GAS) (DELEGATECALL 30000 0 8000 0 8000) [[1]] (SUB @0 (GAS)) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -63,7 +58,7 @@ def test_raw_delegate_call_gas_memory( + Op.POP( Op.DELEGATECALL( gas=0x7530, - address=0xE497CD0909C3691E0B6D2A42E26F36696FC27BA5, + address=addr, args_offset=0x0, args_size=0x1F40, ret_offset=0x0, @@ -73,7 +68,6 @@ def test_raw_delegate_call_gas_memory( + Op.SSTORE(key=0x1, value=Op.SUB(Op.MLOAD(offset=0x0), Op.GAS)) + Op.STOP, nonce=0, - address=Address(0x2DA2093C616EE035CC42F6A9297B0C3838D01605), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_delegate_call_gas_memory_ask.py b/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_delegate_call_gas_memory_ask.py index 7f8d9d66a8a..37333476bf2 100644 --- a/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_delegate_call_gas_memory_ask.py +++ b/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_delegate_call_gas_memory_ask.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_raw_delegate_call_gas_memory_ask( ) -> None: """Test_raw_delegate_call_gas_memory_ask.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x4F31B3206FBF0E0E598B9B1A7D8AC86302A0FF1D8930738F1BEBAE9B67173E52 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -53,9 +50,7 @@ def test_raw_delegate_call_gas_memory_ask( addr = pre.deploy_contract( # noqa: F841 code=Op.SSTORE(key=0x2, value=Op.GAS) + Op.STOP, nonce=0, - address=Address(0xE497CD0909C3691E0B6D2A42E26F36696FC27BA5), # noqa: E501 ) - pre[sender] = Account(balance=0xE8D4A51000) # Source: lll # { [0] (GAS) (DELEGATECALL 3000000 0 8000 0 8000) [[1]] (SUB @0 (GAS)) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -63,7 +58,7 @@ def test_raw_delegate_call_gas_memory_ask( + Op.POP( Op.DELEGATECALL( gas=0x2DC6C0, - address=0xE497CD0909C3691E0B6D2A42E26F36696FC27BA5, + address=addr, args_offset=0x0, args_size=0x1F40, ret_offset=0x0, @@ -73,7 +68,6 @@ def test_raw_delegate_call_gas_memory_ask( + Op.SSTORE(key=0x1, value=Op.SUB(Op.MLOAD(offset=0x0), Op.GAS)) + Op.STOP, nonce=0, - address=Address(0x8759CFBF878E9FF3CD4D3D7413FC8A44B7935CEC), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_ext_code_copy_gas.py b/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_ext_code_copy_gas.py index 53f904f24e1..c75b732ee35 100644 --- a/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_ext_code_copy_gas.py +++ b/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_ext_code_copy_gas.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_raw_ext_code_copy_gas( ) -> None: """Test_raw_ext_code_copy_gas.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x4F31B3206FBF0E0E598B9B1A7D8AC86302A0FF1D8930738F1BEBAE9B67173E52 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -53,23 +50,15 @@ def test_raw_ext_code_copy_gas( "0112233445566778899101112131415161718191202122232425" ), nonce=0, - address=Address(0x4A84C43FBA78AE75CBC15C5B63CAA15DA55F4464), # noqa: E501 ) - pre[sender] = Account(balance=0xE8D4A51000) # Source: lll # { [0] (GAS) (EXTCODECOPY 32 0 20) [[1]] (SUB @0 (GAS)) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 code=Op.MSTORE(offset=0x0, value=Op.GAS) - + Op.EXTCODECOPY( - address=0x4A84C43FBA78AE75CBC15C5B63CAA15DA55F4464, - dest_offset=0x20, - offset=0x0, - size=0x14, - ) + + Op.EXTCODECOPY(address=addr, dest_offset=0x20, offset=0x0, size=0x14) + Op.SSTORE(key=0x1, value=Op.SUB(Op.MLOAD(offset=0x0), Op.GAS)) + Op.STOP, nonce=0, - address=Address(0x3D74E06FE0AF85E65C8B2F5DCFF3FA076F5B5BB8), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_ext_code_copy_memory_gas.py b/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_ext_code_copy_memory_gas.py index 83af5181cb5..a03431f4f6c 100644 --- a/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_ext_code_copy_memory_gas.py +++ b/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_ext_code_copy_memory_gas.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_raw_ext_code_copy_memory_gas( ) -> None: """Test_raw_ext_code_copy_memory_gas.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x4F31B3206FBF0E0E598B9B1A7D8AC86302A0FF1D8930738F1BEBAE9B67173E52 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -55,23 +52,17 @@ def test_raw_ext_code_copy_memory_gas( "0112233445566778899101112131415161718191202122232425" ), nonce=0, - address=Address(0x4A84C43FBA78AE75CBC15C5B63CAA15DA55F4464), # noqa: E501 ) - pre[sender] = Account(balance=0xE8D4A51000) # Source: lll # { [0] (GAS) (EXTCODECOPY 32 0 11120) [[1]] (SUB @0 (GAS)) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 code=Op.MSTORE(offset=0x0, value=Op.GAS) + Op.EXTCODECOPY( - address=0x4A84C43FBA78AE75CBC15C5B63CAA15DA55F4464, - dest_offset=0x20, - offset=0x0, - size=0x2B70, + address=addr, dest_offset=0x20, offset=0x0, size=0x2B70 ) + Op.SSTORE(key=0x1, value=Op.SUB(Op.MLOAD(offset=0x0), Op.GAS)) + Op.STOP, nonce=0, - address=Address(0x792ED227B10FCD174ACC9E5A69C1F1471A138C5D), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_ext_code_size_gas.py b/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_ext_code_size_gas.py index fe08562662f..4da7798cbdc 100644 --- a/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_ext_code_size_gas.py +++ b/tests/ported_static/stEIP150singleCodeGasPrices/test_raw_ext_code_size_gas.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_raw_ext_code_size_gas( ) -> None: """Test_raw_ext_code_size_gas.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x4F31B3206FBF0E0E598B9B1A7D8AC86302A0FF1D8930738F1BEBAE9B67173E52 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -53,20 +50,15 @@ def test_raw_ext_code_size_gas( "0112233445566778899101112131415161718191202122232425" ), nonce=0, - address=Address(0x4A84C43FBA78AE75CBC15C5B63CAA15DA55F4464), # noqa: E501 ) - pre[sender] = Account(balance=0xE8D4A51000) # Source: lll # { [0] (GAS) (EXTCODESIZE ) [[1]] (SUB @0 (GAS)) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 code=Op.MSTORE(offset=0x0, value=Op.GAS) - + Op.POP( - Op.EXTCODESIZE(address=0x4A84C43FBA78AE75CBC15C5B63CAA15DA55F4464) - ) + + Op.POP(Op.EXTCODESIZE(address=addr)) + Op.SSTORE(key=0x1, value=Op.SUB(Op.MLOAD(offset=0x0), Op.GAS)) + Op.STOP, nonce=0, - address=Address(0x585F8515632DD8B3ACCE933A4C2DE8BA66A09A36), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stEIP1559/test_base_fee_diff_places.py b/tests/ported_static/stEIP1559/test_base_fee_diff_places.py index 5699d94c79f..51016abbbae 100644 --- a/tests/ported_static/stEIP1559/test_base_fee_diff_places.py +++ b/tests/ported_static/stEIP1559/test_base_fee_diff_places.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -268,9 +267,7 @@ def test_base_fee_diff_places( contract_10 = Address(0x000000000000000000000000000000000060BACC) contract_11 = Address(0x00000000000000000000000000000000DEADDEAD) contract_12 = Address(0x00000000000000000000000000000060BACCFA57) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0x3635C9ADC5DEA00000, nonce=1) env = Environment( fee_recipient=coinbase, @@ -329,6 +326,73 @@ def test_base_fee_diff_places( ) # Source: yul # berlin { + # // basefee is still not supported in Yul 0.8.5 + # + # + # mstore(0, verbatim_0i_1o(hex"48")) + # + # + # return(0, 0x20) // return the result as our return value + # } + contract_4 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x0, value=Op.BASEFEE) + + Op.RETURN(offset=0x0, size=0x20), + balance=0xDE0B6B3A7640000, + nonce=1, + address=Address(0x000000000000000000000000000000000000CA11), # noqa: E501 + ) + # Source: yul + # berlin { + # // basefee is still not supported in Yul 0.8.5 + # + # + # mstore(0, verbatim_0i_1o(hex"48")) + # + # + # sstore(0,mload(0)) + # invalid() + # } + contract_9 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x0, value=Op.BASEFEE) + + Op.SSTORE(key=0x0, value=Op.MLOAD(offset=0x0)) + + Op.INVALID, + storage={0: 24743}, + balance=0xDE0B6B3A7640000, + nonce=1, + address=Address(0x0000000000000000000000000000000000060006), # noqa: E501 + ) + # Source: yul + # berlin { + # // basefee is still not supported in Yul 0.8.5 + # + # + # mstore(0, verbatim_0i_1o(hex"48")) + # + # + # sstore(0,mload(0)) + # revert(0,0x20) + # } + contract_10 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x0, value=Op.BASEFEE) + + Op.SSTORE(key=0x0, value=Op.MLOAD(offset=0x0)) + + Op.REVERT(offset=0x0, size=0x20), + storage={0: 24743}, + balance=0xDE0B6B3A7640000, + nonce=1, + address=Address(0x000000000000000000000000000000000060BACC), # noqa: E501 + ) + # Source: yul + # berlin { + # selfdestruct(0) + # } + contract_11 = pre.deploy_contract( # noqa: F841 + code=Op.SELFDESTRUCT(address=0x0), + balance=0xDE0B6B3A7640000, + nonce=1, + address=Address(0x00000000000000000000000000000000DEADDEAD), # noqa: E501 + ) + # Source: yul + # berlin { # let addr := 0x20C0DE # let length := extcodesize(addr) # @@ -355,6 +419,120 @@ def test_base_fee_diff_places( ) # Source: yul # berlin { + # if iszero(callcode(gas(), 0xca11, 0, 0, 0, 0, 0x20)) + # { revert(0,0x20) } + # + # return(0, 0x20) // return the result as our return value + # } + contract_6 = pre.deploy_contract( # noqa: F841 + code=Op.JUMPI( + pc=0x15, + condition=Op.ISZERO( + Op.CALLCODE( + gas=Op.GAS, + address=0xCA11, + value=Op.DUP1, + args_offset=Op.DUP1, + args_size=Op.DUP1, + ret_offset=0x0, + ret_size=0x20, + ) + ), + ) + + Op.RETURN(offset=0x0, size=0x20) + + Op.JUMPDEST + + Op.REVERT(offset=0x0, size=0x20), + balance=0xDE0B6B3A7640000, + nonce=1, + address=Address(0x00000000000000000000000000000000CA1100F2), # noqa: E501 + ) + # Source: yul + # berlin { + # if iszero(call(gas(), 0xca11, 0, 0, 0, 0, 0x20)) + # { revert(0,0x20) } + # + # return(0, 0x20) // return the result as our return value + # } + contract_5 = pre.deploy_contract( # noqa: F841 + code=Op.JUMPI( + pc=0x15, + condition=Op.ISZERO( + Op.CALL( + gas=Op.GAS, + address=0xCA11, + value=Op.DUP1, + args_offset=Op.DUP1, + args_size=Op.DUP1, + ret_offset=0x0, + ret_size=0x20, + ) + ), + ) + + Op.RETURN(offset=0x0, size=0x20) + + Op.JUMPDEST + + Op.REVERT(offset=0x0, size=0x20), + balance=0xDE0B6B3A7640000, + nonce=1, + address=Address(0x00000000000000000000000000000000CA1100F1), # noqa: E501 + ) + # Source: yul + # berlin { + # if iszero(staticcall(gas(), 0xca11, 0, 0, 0, 0x20)) + # { revert(0,0x20) } + # + # return(0, 0x20) // return the result as our return value + # } + contract_8 = pre.deploy_contract( # noqa: F841 + code=Op.JUMPI( + pc=0x14, + condition=Op.ISZERO( + Op.STATICCALL( + gas=Op.GAS, + address=0xCA11, + args_offset=Op.DUP1, + args_size=Op.DUP1, + ret_offset=0x0, + ret_size=0x20, + ) + ), + ) + + Op.RETURN(offset=0x0, size=0x20) + + Op.JUMPDEST + + Op.REVERT(offset=0x0, size=0x20), + balance=0xDE0B6B3A7640000, + nonce=1, + address=Address(0x00000000000000000000000000000000CA1100FA), # noqa: E501 + ) + # Source: yul + # berlin { + # if iszero(delegatecall(gas(), 0xca11, 0, 0, 0, 0x20)) + # { revert(0,0x20) } + # + # return(0, 0x20) // return the result as our return value + # } + contract_7 = pre.deploy_contract( # noqa: F841 + code=Op.JUMPI( + pc=0x14, + condition=Op.ISZERO( + Op.DELEGATECALL( + gas=Op.GAS, + address=0xCA11, + args_offset=Op.DUP1, + args_size=Op.DUP1, + ret_offset=0x0, + ret_size=0x20, + ) + ), + ) + + Op.RETURN(offset=0x0, size=0x20) + + Op.JUMPDEST + + Op.REVERT(offset=0x0, size=0x20), + balance=0xDE0B6B3A7640000, + nonce=1, + address=Address(0x00000000000000000000000000000000CA1100F4), # noqa: E501 + ) + # Source: yul + # berlin { # let action := calldataload(4) # let res := 1 // If the result of a call is revert, revert here too # let addr := 1 // If the result of CREATE[2] is zero, it reverted @@ -986,187 +1164,6 @@ def test_base_fee_diff_places( ) # Source: yul # berlin { - # // basefee is still not supported in Yul 0.8.5 - # - # - # mstore(0, verbatim_0i_1o(hex"48")) - # - # - # return(0, 0x20) // return the result as our return value - # } - contract_4 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x0, value=Op.BASEFEE) - + Op.RETURN(offset=0x0, size=0x20), - balance=0xDE0B6B3A7640000, - nonce=1, - address=Address(0x000000000000000000000000000000000000CA11), # noqa: E501 - ) - # Source: yul - # berlin { - # if iszero(call(gas(), 0xca11, 0, 0, 0, 0, 0x20)) - # { revert(0,0x20) } - # - # return(0, 0x20) // return the result as our return value - # } - contract_5 = pre.deploy_contract( # noqa: F841 - code=Op.JUMPI( - pc=0x15, - condition=Op.ISZERO( - Op.CALL( - gas=Op.GAS, - address=0xCA11, - value=Op.DUP1, - args_offset=Op.DUP1, - args_size=Op.DUP1, - ret_offset=0x0, - ret_size=0x20, - ) - ), - ) - + Op.RETURN(offset=0x0, size=0x20) - + Op.JUMPDEST - + Op.REVERT(offset=0x0, size=0x20), - balance=0xDE0B6B3A7640000, - nonce=1, - address=Address(0x00000000000000000000000000000000CA1100F1), # noqa: E501 - ) - # Source: yul - # berlin { - # if iszero(callcode(gas(), 0xca11, 0, 0, 0, 0, 0x20)) - # { revert(0,0x20) } - # - # return(0, 0x20) // return the result as our return value - # } - contract_6 = pre.deploy_contract( # noqa: F841 - code=Op.JUMPI( - pc=0x15, - condition=Op.ISZERO( - Op.CALLCODE( - gas=Op.GAS, - address=0xCA11, - value=Op.DUP1, - args_offset=Op.DUP1, - args_size=Op.DUP1, - ret_offset=0x0, - ret_size=0x20, - ) - ), - ) - + Op.RETURN(offset=0x0, size=0x20) - + Op.JUMPDEST - + Op.REVERT(offset=0x0, size=0x20), - balance=0xDE0B6B3A7640000, - nonce=1, - address=Address(0x00000000000000000000000000000000CA1100F2), # noqa: E501 - ) - # Source: yul - # berlin { - # if iszero(delegatecall(gas(), 0xca11, 0, 0, 0, 0x20)) - # { revert(0,0x20) } - # - # return(0, 0x20) // return the result as our return value - # } - contract_7 = pre.deploy_contract( # noqa: F841 - code=Op.JUMPI( - pc=0x14, - condition=Op.ISZERO( - Op.DELEGATECALL( - gas=Op.GAS, - address=0xCA11, - args_offset=Op.DUP1, - args_size=Op.DUP1, - ret_offset=0x0, - ret_size=0x20, - ) - ), - ) - + Op.RETURN(offset=0x0, size=0x20) - + Op.JUMPDEST - + Op.REVERT(offset=0x0, size=0x20), - balance=0xDE0B6B3A7640000, - nonce=1, - address=Address(0x00000000000000000000000000000000CA1100F4), # noqa: E501 - ) - # Source: yul - # berlin { - # if iszero(staticcall(gas(), 0xca11, 0, 0, 0, 0x20)) - # { revert(0,0x20) } - # - # return(0, 0x20) // return the result as our return value - # } - contract_8 = pre.deploy_contract( # noqa: F841 - code=Op.JUMPI( - pc=0x14, - condition=Op.ISZERO( - Op.STATICCALL( - gas=Op.GAS, - address=0xCA11, - args_offset=Op.DUP1, - args_size=Op.DUP1, - ret_offset=0x0, - ret_size=0x20, - ) - ), - ) - + Op.RETURN(offset=0x0, size=0x20) - + Op.JUMPDEST - + Op.REVERT(offset=0x0, size=0x20), - balance=0xDE0B6B3A7640000, - nonce=1, - address=Address(0x00000000000000000000000000000000CA1100FA), # noqa: E501 - ) - # Source: yul - # berlin { - # // basefee is still not supported in Yul 0.8.5 - # - # - # mstore(0, verbatim_0i_1o(hex"48")) - # - # - # sstore(0,mload(0)) - # invalid() - # } - contract_9 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x0, value=Op.BASEFEE) - + Op.SSTORE(key=0x0, value=Op.MLOAD(offset=0x0)) - + Op.INVALID, - storage={0: 24743}, - balance=0xDE0B6B3A7640000, - nonce=1, - address=Address(0x0000000000000000000000000000000000060006), # noqa: E501 - ) - # Source: yul - # berlin { - # // basefee is still not supported in Yul 0.8.5 - # - # - # mstore(0, verbatim_0i_1o(hex"48")) - # - # - # sstore(0,mload(0)) - # revert(0,0x20) - # } - contract_10 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x0, value=Op.BASEFEE) - + Op.SSTORE(key=0x0, value=Op.MLOAD(offset=0x0)) - + Op.REVERT(offset=0x0, size=0x20), - storage={0: 24743}, - balance=0xDE0B6B3A7640000, - nonce=1, - address=Address(0x000000000000000000000000000000000060BACC), # noqa: E501 - ) - # Source: yul - # berlin { - # selfdestruct(0) - # } - contract_11 = pre.deploy_contract( # noqa: F841 - code=Op.SELFDESTRUCT(address=0x0), - balance=0xDE0B6B3A7640000, - nonce=1, - address=Address(0x00000000000000000000000000000000DEADDEAD), # noqa: E501 - ) - # Source: yul - # berlin { # let depth := calldataload(0) # # if eq(depth,0) { @@ -1221,7 +1218,6 @@ def test_base_fee_diff_places( nonce=1, address=Address(0x00000000000000000000000000000060BACCFA57), # noqa: E501 ) - pre[sender] = Account(balance=0x3635C9ADC5DEA00000, nonce=1) tx_data = [ Bytes("693c6139") + Hash(0x0), diff --git a/tests/ported_static/stEIP1559/test_gas_price_diff_places.py b/tests/ported_static/stEIP1559/test_gas_price_diff_places.py index e291c7968eb..40115726f8a 100644 --- a/tests/ported_static/stEIP1559/test_gas_price_diff_places.py +++ b/tests/ported_static/stEIP1559/test_gas_price_diff_places.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -268,9 +267,7 @@ def test_gas_price_diff_places( contract_10 = Address(0x000000000000000000000000000000000060BACC) contract_11 = Address(0x00000000000000000000000000000000DEADDEAD) contract_12 = Address(0x00000000000000000000000000000060BACCFA57) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0x3635C9ADC5DEA00000, nonce=1) env = Environment( fee_recipient=coinbase, @@ -323,6 +320,66 @@ def test_gas_price_diff_places( ) # Source: yul # berlin { + # mstore(0, gasprice()) + # + # + # return(0, 0x20) // return the result as our return value + # } + contract_4 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x0, value=Op.GASPRICE) + + Op.RETURN(offset=0x0, size=0x20), + balance=0xDE0B6B3A7640000, + nonce=1, + address=Address(0x000000000000000000000000000000000000CA11), # noqa: E501 + ) + # Source: yul + # berlin { + # mstore(0, gasprice()) + # + # + # sstore(0,mload(0)) + # invalid() + # } + contract_9 = pre.deploy_contract( # noqa: F841 + code=Op.GASPRICE + + Op.PUSH1[0x0] + + Op.MSTORE(offset=Op.DUP2, value=Op.DUP2) + + Op.SSTORE + + Op.INVALID, + storage={0: 24743}, + balance=0xDE0B6B3A7640000, + nonce=1, + address=Address(0x0000000000000000000000000000000000060006), # noqa: E501 + ) + # Source: yul + # berlin { + # mstore(0, gasprice()) + # + # + # sstore(0,mload(0)) + # revert(0,0x20) + # } + contract_10 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x0, value=Op.GASPRICE) + + Op.SSTORE(key=0x0, value=Op.MLOAD(offset=0x0)) + + Op.REVERT(offset=0x0, size=0x20), + storage={0: 24743}, + balance=0xDE0B6B3A7640000, + nonce=1, + address=Address(0x000000000000000000000000000000000060BACC), # noqa: E501 + ) + # Source: yul + # berlin { + # selfdestruct(0) + # } + contract_11 = pre.deploy_contract( # noqa: F841 + code=Op.SELFDESTRUCT(address=0x0), + balance=0xDE0B6B3A7640000, + nonce=1, + address=Address(0x00000000000000000000000000000000DEADDEAD), # noqa: E501 + ) + # Source: yul + # berlin { # let addr := 0x20C0DE # let length := extcodesize(addr) # @@ -349,6 +406,120 @@ def test_gas_price_diff_places( ) # Source: yul # berlin { + # if iszero(callcode(gas(), 0xca11, 0, 0, 0, 0, 0x20)) + # { revert(0,0x20) } + # + # return(0, 0x20) // return the result as our return value + # } + contract_6 = pre.deploy_contract( # noqa: F841 + code=Op.JUMPI( + pc=0x15, + condition=Op.ISZERO( + Op.CALLCODE( + gas=Op.GAS, + address=0xCA11, + value=Op.DUP1, + args_offset=Op.DUP1, + args_size=Op.DUP1, + ret_offset=0x0, + ret_size=0x20, + ) + ), + ) + + Op.RETURN(offset=0x0, size=0x20) + + Op.JUMPDEST + + Op.REVERT(offset=0x0, size=0x20), + balance=0xDE0B6B3A7640000, + nonce=1, + address=Address(0x00000000000000000000000000000000CA1100F2), # noqa: E501 + ) + # Source: yul + # berlin { + # if iszero(call(gas(), 0xca11, 0, 0, 0, 0, 0x20)) + # { revert(0,0x20) } + # + # return(0, 0x20) // return the result as our return value + # } + contract_5 = pre.deploy_contract( # noqa: F841 + code=Op.JUMPI( + pc=0x15, + condition=Op.ISZERO( + Op.CALL( + gas=Op.GAS, + address=0xCA11, + value=Op.DUP1, + args_offset=Op.DUP1, + args_size=Op.DUP1, + ret_offset=0x0, + ret_size=0x20, + ) + ), + ) + + Op.RETURN(offset=0x0, size=0x20) + + Op.JUMPDEST + + Op.REVERT(offset=0x0, size=0x20), + balance=0xDE0B6B3A7640000, + nonce=1, + address=Address(0x00000000000000000000000000000000CA1100F1), # noqa: E501 + ) + # Source: yul + # berlin { + # if iszero(staticcall(gas(), 0xca11, 0, 0, 0, 0x20)) + # { revert(0,0x20) } + # + # return(0, 0x20) // return the result as our return value + # } + contract_8 = pre.deploy_contract( # noqa: F841 + code=Op.JUMPI( + pc=0x14, + condition=Op.ISZERO( + Op.STATICCALL( + gas=Op.GAS, + address=0xCA11, + args_offset=Op.DUP1, + args_size=Op.DUP1, + ret_offset=0x0, + ret_size=0x20, + ) + ), + ) + + Op.RETURN(offset=0x0, size=0x20) + + Op.JUMPDEST + + Op.REVERT(offset=0x0, size=0x20), + balance=0xDE0B6B3A7640000, + nonce=1, + address=Address(0x00000000000000000000000000000000CA1100FA), # noqa: E501 + ) + # Source: yul + # berlin { + # if iszero(delegatecall(gas(), 0xca11, 0, 0, 0, 0x20)) + # { revert(0,0x20) } + # + # return(0, 0x20) // return the result as our return value + # } + contract_7 = pre.deploy_contract( # noqa: F841 + code=Op.JUMPI( + pc=0x14, + condition=Op.ISZERO( + Op.DELEGATECALL( + gas=Op.GAS, + address=0xCA11, + args_offset=Op.DUP1, + args_size=Op.DUP1, + ret_offset=0x0, + ret_size=0x20, + ) + ), + ) + + Op.RETURN(offset=0x0, size=0x20) + + Op.JUMPDEST + + Op.REVERT(offset=0x0, size=0x20), + balance=0xDE0B6B3A7640000, + nonce=1, + address=Address(0x00000000000000000000000000000000CA1100F4), # noqa: E501 + ) + # Source: yul + # berlin { # let action := calldataload(4) # let res := 1 // If the result of a call is revert, revert here too # let addr := 1 // If the result of CREATE[2] is zero, it reverted @@ -983,180 +1154,6 @@ def test_gas_price_diff_places( ) # Source: yul # berlin { - # mstore(0, gasprice()) - # - # - # return(0, 0x20) // return the result as our return value - # } - contract_4 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x0, value=Op.GASPRICE) - + Op.RETURN(offset=0x0, size=0x20), - balance=0xDE0B6B3A7640000, - nonce=1, - address=Address(0x000000000000000000000000000000000000CA11), # noqa: E501 - ) - # Source: yul - # berlin { - # if iszero(call(gas(), 0xca11, 0, 0, 0, 0, 0x20)) - # { revert(0,0x20) } - # - # return(0, 0x20) // return the result as our return value - # } - contract_5 = pre.deploy_contract( # noqa: F841 - code=Op.JUMPI( - pc=0x15, - condition=Op.ISZERO( - Op.CALL( - gas=Op.GAS, - address=0xCA11, - value=Op.DUP1, - args_offset=Op.DUP1, - args_size=Op.DUP1, - ret_offset=0x0, - ret_size=0x20, - ) - ), - ) - + Op.RETURN(offset=0x0, size=0x20) - + Op.JUMPDEST - + Op.REVERT(offset=0x0, size=0x20), - balance=0xDE0B6B3A7640000, - nonce=1, - address=Address(0x00000000000000000000000000000000CA1100F1), # noqa: E501 - ) - # Source: yul - # berlin { - # if iszero(callcode(gas(), 0xca11, 0, 0, 0, 0, 0x20)) - # { revert(0,0x20) } - # - # return(0, 0x20) // return the result as our return value - # } - contract_6 = pre.deploy_contract( # noqa: F841 - code=Op.JUMPI( - pc=0x15, - condition=Op.ISZERO( - Op.CALLCODE( - gas=Op.GAS, - address=0xCA11, - value=Op.DUP1, - args_offset=Op.DUP1, - args_size=Op.DUP1, - ret_offset=0x0, - ret_size=0x20, - ) - ), - ) - + Op.RETURN(offset=0x0, size=0x20) - + Op.JUMPDEST - + Op.REVERT(offset=0x0, size=0x20), - balance=0xDE0B6B3A7640000, - nonce=1, - address=Address(0x00000000000000000000000000000000CA1100F2), # noqa: E501 - ) - # Source: yul - # berlin { - # if iszero(delegatecall(gas(), 0xca11, 0, 0, 0, 0x20)) - # { revert(0,0x20) } - # - # return(0, 0x20) // return the result as our return value - # } - contract_7 = pre.deploy_contract( # noqa: F841 - code=Op.JUMPI( - pc=0x14, - condition=Op.ISZERO( - Op.DELEGATECALL( - gas=Op.GAS, - address=0xCA11, - args_offset=Op.DUP1, - args_size=Op.DUP1, - ret_offset=0x0, - ret_size=0x20, - ) - ), - ) - + Op.RETURN(offset=0x0, size=0x20) - + Op.JUMPDEST - + Op.REVERT(offset=0x0, size=0x20), - balance=0xDE0B6B3A7640000, - nonce=1, - address=Address(0x00000000000000000000000000000000CA1100F4), # noqa: E501 - ) - # Source: yul - # berlin { - # if iszero(staticcall(gas(), 0xca11, 0, 0, 0, 0x20)) - # { revert(0,0x20) } - # - # return(0, 0x20) // return the result as our return value - # } - contract_8 = pre.deploy_contract( # noqa: F841 - code=Op.JUMPI( - pc=0x14, - condition=Op.ISZERO( - Op.STATICCALL( - gas=Op.GAS, - address=0xCA11, - args_offset=Op.DUP1, - args_size=Op.DUP1, - ret_offset=0x0, - ret_size=0x20, - ) - ), - ) - + Op.RETURN(offset=0x0, size=0x20) - + Op.JUMPDEST - + Op.REVERT(offset=0x0, size=0x20), - balance=0xDE0B6B3A7640000, - nonce=1, - address=Address(0x00000000000000000000000000000000CA1100FA), # noqa: E501 - ) - # Source: yul - # berlin { - # mstore(0, gasprice()) - # - # - # sstore(0,mload(0)) - # invalid() - # } - contract_9 = pre.deploy_contract( # noqa: F841 - code=Op.GASPRICE - + Op.PUSH1[0x0] - + Op.MSTORE(offset=Op.DUP2, value=Op.DUP2) - + Op.SSTORE - + Op.INVALID, - storage={0: 24743}, - balance=0xDE0B6B3A7640000, - nonce=1, - address=Address(0x0000000000000000000000000000000000060006), # noqa: E501 - ) - # Source: yul - # berlin { - # mstore(0, gasprice()) - # - # - # sstore(0,mload(0)) - # revert(0,0x20) - # } - contract_10 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x0, value=Op.GASPRICE) - + Op.SSTORE(key=0x0, value=Op.MLOAD(offset=0x0)) - + Op.REVERT(offset=0x0, size=0x20), - storage={0: 24743}, - balance=0xDE0B6B3A7640000, - nonce=1, - address=Address(0x000000000000000000000000000000000060BACC), # noqa: E501 - ) - # Source: yul - # berlin { - # selfdestruct(0) - # } - contract_11 = pre.deploy_contract( # noqa: F841 - code=Op.SELFDESTRUCT(address=0x0), - balance=0xDE0B6B3A7640000, - nonce=1, - address=Address(0x00000000000000000000000000000000DEADDEAD), # noqa: E501 - ) - # Source: yul - # berlin { # let depth := calldataload(0) # # if eq(depth,0) { @@ -1208,7 +1205,6 @@ def test_gas_price_diff_places( nonce=1, address=Address(0x00000000000000000000000000000060BACCFA57), # noqa: E501 ) - pre[sender] = Account(balance=0x3635C9ADC5DEA00000, nonce=1) tx_data = [ Bytes("693c6139") + Hash(0x0), diff --git a/tests/ported_static/stEIP1559/test_low_fee_cap.py b/tests/ported_static/stEIP1559/test_low_fee_cap.py index 3d4f4f31f76..82deed00eff 100644 --- a/tests/ported_static/stEIP1559/test_low_fee_cap.py +++ b/tests/ported_static/stEIP1559/test_low_fee_cap.py @@ -7,8 +7,6 @@ import pytest from execution_testing import ( - EOA, - Account, Address, Alloc, Bytes, @@ -35,9 +33,7 @@ def test_low_fee_cap( ) -> None: """Ori Pomerantz qbzzt1@gmail.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xDE0C95357363DA5C1C5A73BD7C2781CA5C9FECC1014103B5E1D1E990AE8208EC - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000, nonce=1) env = Environment( fee_recipient=coinbase, @@ -56,9 +52,7 @@ def test_low_fee_cap( code=Op.SSTORE(key=0x0, value=0x2) + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xD71B14C239FC39327F25764DD784C85EF0285FDA), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000, nonce=1) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stEIP1559/test_low_gas_limit.py b/tests/ported_static/stEIP1559/test_low_gas_limit.py index 302f0728e2d..d2baa131eae 100644 --- a/tests/ported_static/stEIP1559/test_low_gas_limit.py +++ b/tests/ported_static/stEIP1559/test_low_gas_limit.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -73,9 +72,7 @@ def test_low_gas_limit( ) -> None: """Ori Pomerantz qbzzt1@gmail.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xDE0C95357363DA5C1C5A73BD7C2781CA5C9FECC1014103B5E1D1E990AE8208EC - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000, nonce=1) env = Environment( fee_recipient=coinbase, @@ -96,9 +93,7 @@ def test_low_gas_limit( storage={0: 24743}, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xEF0454D0376D1921B9A83868282725853C293AB5), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000, nonce=1) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stEIP1559/test_low_gas_price_old_types.py b/tests/ported_static/stEIP1559/test_low_gas_price_old_types.py index 580ee63f8a7..48974cd0123 100644 --- a/tests/ported_static/stEIP1559/test_low_gas_price_old_types.py +++ b/tests/ported_static/stEIP1559/test_low_gas_price_old_types.py @@ -7,8 +7,6 @@ import pytest from execution_testing import ( - EOA, - Account, Address, Alloc, Bytes, @@ -61,9 +59,7 @@ def test_low_gas_price_old_types( ) -> None: """Ori Pomerantz qbzzt1@gmail.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xDE0C95357363DA5C1C5A73BD7C2781CA5C9FECC1014103B5E1D1E990AE8208EC - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000, nonce=1) env = Environment( fee_recipient=coinbase, @@ -82,9 +78,7 @@ def test_low_gas_price_old_types( code=Op.SSTORE(key=0x0, value=0x2) + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xD71B14C239FC39327F25764DD784C85EF0285FDA), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000, nonce=1) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stEIP1559/test_out_of_funds.py b/tests/ported_static/stEIP1559/test_out_of_funds.py index de865a0fce1..8684ccdbf0d 100644 --- a/tests/ported_static/stEIP1559/test_out_of_funds.py +++ b/tests/ported_static/stEIP1559/test_out_of_funds.py @@ -7,8 +7,6 @@ import pytest from execution_testing import ( - EOA, - Account, Address, Alloc, Bytes, @@ -74,9 +72,7 @@ def test_out_of_funds( ) -> None: """Ori Pomerantz qbzzt1@gmail.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xDE0C95357363DA5C1C5A73BD7C2781CA5C9FECC1014103B5E1D1E990AE8208EC - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000, nonce=1) env = Environment( fee_recipient=coinbase, @@ -95,9 +91,7 @@ def test_out_of_funds( code=Op.SSTORE(key=0x0, value=0x2) + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xD71B14C239FC39327F25764DD784C85EF0285FDA), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000, nonce=1) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stEIP1559/test_out_of_funds_old_types.py b/tests/ported_static/stEIP1559/test_out_of_funds_old_types.py index 466316f9880..faa5538f101 100644 --- a/tests/ported_static/stEIP1559/test_out_of_funds_old_types.py +++ b/tests/ported_static/stEIP1559/test_out_of_funds_old_types.py @@ -7,8 +7,6 @@ import pytest from execution_testing import ( - EOA, - Account, Address, Alloc, Bytes, @@ -101,9 +99,7 @@ def test_out_of_funds_old_types( ) -> None: """Ori Pomerantz qbzzt1@gmail.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xDE0C95357363DA5C1C5A73BD7C2781CA5C9FECC1014103B5E1D1E990AE8208EC - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000, nonce=1) env = Environment( fee_recipient=coinbase, @@ -122,9 +118,7 @@ def test_out_of_funds_old_types( code=Op.SSTORE(key=0x0, value=0x2) + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xD71B14C239FC39327F25764DD784C85EF0285FDA), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000, nonce=1) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stEIP1559/test_sender_balance.py b/tests/ported_static/stEIP1559/test_sender_balance.py index 4e1428d6048..c248718b4df 100644 --- a/tests/ported_static/stEIP1559/test_sender_balance.py +++ b/tests/ported_static/stEIP1559/test_sender_balance.py @@ -50,6 +50,7 @@ def test_sender_balance( gas_limit=30000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: yul # london # { @@ -60,7 +61,6 @@ def test_sender_balance( nonce=0, address=Address(0x420132F96200BA8E5C98298A85633C35C4F052EF), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stEIP1559/test_tip_too_high.py b/tests/ported_static/stEIP1559/test_tip_too_high.py index eab3dd91b22..5a019d933c0 100644 --- a/tests/ported_static/stEIP1559/test_tip_too_high.py +++ b/tests/ported_static/stEIP1559/test_tip_too_high.py @@ -7,8 +7,6 @@ import pytest from execution_testing import ( - EOA, - Account, Address, Alloc, Bytes, @@ -35,9 +33,7 @@ def test_tip_too_high( ) -> None: """Ori Pomerantz qbzzt1@gmail.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xDE0C95357363DA5C1C5A73BD7C2781CA5C9FECC1014103B5E1D1E990AE8208EC - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000, nonce=1) env = Environment( fee_recipient=coinbase, @@ -57,9 +53,7 @@ def test_tip_too_high( code=Op.SSTORE(key=0x0, value=0x2) + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xEC75F5D282F63DA54CB0DAD4FF8EAAA070D2DA2B), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000, nonce=1) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stEIP1559/test_transaction_intinsic_bug_paris.py b/tests/ported_static/stEIP1559/test_transaction_intinsic_bug_paris.py index 19d8a6a9e78..46e0c57138f 100644 --- a/tests/ported_static/stEIP1559/test_transaction_intinsic_bug_paris.py +++ b/tests/ported_static/stEIP1559/test_transaction_intinsic_bug_paris.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,10 +33,7 @@ def test_transaction_intinsic_bug_paris( ) -> None: """Bug discovered on ropsten https://github.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - addr = Address(0x85B89DB0E2AEF2A23F50801209A3DE4C65C58D9D) - sender = EOA( - key=0x91E0C3C68D9DE64B3299188625BEBD08C8B66D1C7E853E155F997C465E8F5F47 - ) + sender = pre.fund_eoa(amount=0x2FAF094, nonce=1) env = Environment( fee_recipient=coinbase, @@ -48,8 +44,7 @@ def test_transaction_intinsic_bug_paris( gas_limit=71794957647893862, ) - pre[addr] = Account(balance=10) - pre[sender] = Account(balance=0x2FAF094, nonce=1) + addr = pre.fund_eoa(amount=10) # noqa: F841 tx = Transaction( sender=sender, diff --git a/tests/ported_static/stEIP1559/test_val_causes_oof.py b/tests/ported_static/stEIP1559/test_val_causes_oof.py index da081c1728b..dfbb5a3e162 100644 --- a/tests/ported_static/stEIP1559/test_val_causes_oof.py +++ b/tests/ported_static/stEIP1559/test_val_causes_oof.py @@ -7,8 +7,6 @@ import pytest from execution_testing import ( - EOA, - Account, Address, Alloc, Bytes, @@ -126,9 +124,7 @@ def test_val_causes_oof( ) -> None: """Ori Pomerantz qbzzt1@gmail.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x7608AB0A661408930040C5E3EB5B0C6520ACBB6CE5B28DDBE53676109E8EA24B - ) + sender = pre.fund_eoa(amount=0x5F5E100, nonce=1) env = Environment( fee_recipient=coinbase, @@ -160,9 +156,7 @@ def test_val_causes_oof( + Op.JUMP(pc=0x3), balance=0x5AF3107A4000, nonce=0, - address=Address(0x71E12B76AB6BE1EFBC98AC17EBFE5FAF488DA45E), # noqa: E501 ) - pre[sender] = Account(balance=0x5F5E100, nonce=1) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stEIP158Specific/test_call_one_v_call_suicide.py b/tests/ported_static/stEIP158Specific/test_call_one_v_call_suicide.py index bde6b6d42f0..d99dcdf7185 100644 --- a/tests/ported_static/stEIP158Specific/test_call_one_v_call_suicide.py +++ b/tests/ported_static/stEIP158Specific/test_call_one_v_call_suicide.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_call_one_v_call_suicide( ) -> None: """Test_call_one_v_call_suicide.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x4F31B3206FBF0E0E598B9B1A7D8AC86302A0FF1D8930738F1BEBAE9B67173E52 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -46,7 +43,6 @@ def test_call_one_v_call_suicide( gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) # Source: lll # { [0](GAS) (CALL 60000 1 0 0 0 0) [[100]] (SUB @0 (GAS)) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 diff --git a/tests/ported_static/stEIP158Specific/test_call_one_v_call_suicide2.py b/tests/ported_static/stEIP158Specific/test_call_one_v_call_suicide2.py index 32da5c2a438..2c222ca68f4 100644 --- a/tests/ported_static/stEIP158Specific/test_call_one_v_call_suicide2.py +++ b/tests/ported_static/stEIP158Specific/test_call_one_v_call_suicide2.py @@ -48,6 +48,17 @@ def test_call_one_v_call_suicide2( ) pre[sender] = Account(balance=0xE8D4A51000) + pre[addr_2] = Account(balance=0, nonce=1) + # Source: lll + # { (SELFDESTRUCT ) } + addr = pre.deploy_contract( # noqa: F841 + code=Op.SELFDESTRUCT( + address=0xEB201D2887816E041F6E807E804F64F3A7A226FE + ) + + Op.STOP, + nonce=0, + address=Address(0x99378E0DB04E57AE174AD69770E1B7A0AA805930), # noqa: E501 + ) # Source: lll # { [0](GAS) (CALL 60000 1 0 0 0 0) [[100]] (SUB @0 (GAS)) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -69,17 +80,6 @@ def test_call_one_v_call_suicide2( nonce=0, address=Address(0xEA04224539257FBE043981AA6058FBC1D5E21B1A), # noqa: E501 ) - # Source: lll - # { (SELFDESTRUCT ) } - addr = pre.deploy_contract( # noqa: F841 - code=Op.SELFDESTRUCT( - address=0xEB201D2887816E041F6E807E804F64F3A7A226FE - ) - + Op.STOP, - nonce=0, - address=Address(0x99378E0DB04E57AE174AD69770E1B7A0AA805930), # noqa: E501 - ) - pre[addr_2] = Account(balance=0, nonce=1) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stEIP158Specific/test_call_to_empty_then_call_error_paris.py b/tests/ported_static/stEIP158Specific/test_call_to_empty_then_call_error_paris.py index a53da088e68..c0efd41acce 100644 --- a/tests/ported_static/stEIP158Specific/test_call_to_empty_then_call_error_paris.py +++ b/tests/ported_static/stEIP158Specific/test_call_to_empty_then_call_error_paris.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,10 +32,7 @@ def test_call_to_empty_then_call_error_paris( ) -> None: """Test_call_to_empty_then_call_error_paris.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - addr_2 = Address(0x76FAE819612A29489A1A43208613D8F8557B8898) - sender = EOA( - key=0x4F31B3206FBF0E0E598B9B1A7D8AC86302A0FF1D8930738F1BEBAE9B67173E52 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -47,14 +43,20 @@ def test_call_to_empty_then_call_error_paris( gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) + addr_2 = pre.fund_eoa(amount=10) # noqa: F841 + # Source: lll + # { (GAS) } + addr = pre.deploy_contract( # noqa: F841 + code=Op.GAS + Op.STOP, + nonce=0, + ) # Source: lll # { (CALL 0 0 0 0 0 0) (CALL 0 0 0 0 0 0) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 code=Op.POP( Op.CALL( gas=0x0, - address=0x76FAE819612A29489A1A43208613D8F8557B8898, + address=addr_2, value=0x0, args_offset=0x0, args_size=0x0, @@ -64,7 +66,7 @@ def test_call_to_empty_then_call_error_paris( ) + Op.CALL( gas=0x0, - address=0xAB4CDAE660B629C6F7BE5A12139558E6296AD0B5, + address=addr, value=0x0, args_offset=0x0, args_size=0x0, @@ -73,16 +75,7 @@ def test_call_to_empty_then_call_error_paris( ) + Op.STOP, nonce=0, - address=Address(0x2FD4E62119E6702B1B340B14AAB503AF144D0DA4), # noqa: E501 - ) - # Source: lll - # { (GAS) } - addr = pre.deploy_contract( # noqa: F841 - code=Op.GAS + Op.STOP, - nonce=0, - address=Address(0xAB4CDAE660B629C6F7BE5A12139558E6296AD0B5), # noqa: E501 ) - pre[addr_2] = Account(balance=10) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stEIP158Specific/test_call_zero_v_call_suicide.py b/tests/ported_static/stEIP158Specific/test_call_zero_v_call_suicide.py index f632140f042..901902b9a5b 100644 --- a/tests/ported_static/stEIP158Specific/test_call_zero_v_call_suicide.py +++ b/tests/ported_static/stEIP158Specific/test_call_zero_v_call_suicide.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_call_zero_v_call_suicide( ) -> None: """Test_call_zero_v_call_suicide.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x4F31B3206FBF0E0E598B9B1A7D8AC86302A0FF1D8930738F1BEBAE9B67173E52 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -46,7 +43,6 @@ def test_call_zero_v_call_suicide( gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) # Source: lll # { [0](GAS) (CALL 60000 0 0 0 0 0) [[100]] (SUB @0 (GAS)) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 diff --git a/tests/ported_static/stEIP158Specific/test_exp_empty.py b/tests/ported_static/stEIP158Specific/test_exp_empty.py index d748a2036c4..9b7b323744c 100644 --- a/tests/ported_static/stEIP158Specific/test_exp_empty.py +++ b/tests/ported_static/stEIP158Specific/test_exp_empty.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_exp_empty( ) -> None: """Test_exp_empty.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x4F31B3206FBF0E0E598B9B1A7D8AC86302A0FF1D8930738F1BEBAE9B67173E52 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -46,7 +43,6 @@ def test_exp_empty( gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) # Source: lll # { [0](GAS) [[1]](EXP 0 12) [[2]](SUB @0 (GAS)) [0](GAS) [[3]](EXP 12 0) [[4]](SUB @0 (GAS)) [0](GAS) [[5]](EXP 0 0xffffffffffffffff) [[6]](SUB @0 (GAS)) [0](GAS) [[7]](EXP 0 0xffffffffffffffffffffffffffffffff) [[8]](SUB @0 (GAS)) [0](GAS) [[9]](EXP 0 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) [[10]](SUB @0 (GAS)) [0](GAS) [[11]](EXP 0xffffffffffffffff 0) [[12]](SUB @0 (GAS)) [0](GAS) [[13]](EXP 0xffffffffffffffffffffffffffffffff 0) [[14]](SUB @0 (GAS)) [0] (GAS) [[15]](EXP 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0) [[100]] (SUB @0 (GAS)) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -92,7 +88,6 @@ def test_exp_empty( + Op.SSTORE(key=0x64, value=Op.SUB(Op.MLOAD(offset=0x0), Op.GAS)) + Op.STOP, nonce=0, - address=Address(0x8A3C9879FC69C8C45C1201C27DA63312E9E9F6FE), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stEIP158Specific/test_extcodesize_to_epmty_paris.py b/tests/ported_static/stEIP158Specific/test_extcodesize_to_epmty_paris.py index fa7b6f50122..35e01d26d30 100644 --- a/tests/ported_static/stEIP158Specific/test_extcodesize_to_epmty_paris.py +++ b/tests/ported_static/stEIP158Specific/test_extcodesize_to_epmty_paris.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,10 +32,7 @@ def test_extcodesize_to_epmty_paris( ) -> None: """Test_extcodesize_to_epmty_paris.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - addr = Address(0x76FAE819612A29489A1A43208613D8F8557B8898) - sender = EOA( - key=0x4F31B3206FBF0E0E598B9B1A7D8AC86302A0FF1D8930738F1BEBAE9B67173E52 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -47,24 +43,17 @@ def test_extcodesize_to_epmty_paris( gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) + addr = pre.fund_eoa(amount=10) # noqa: F841 # Source: lll # { [0](GAS) [[1]] (EXTCODESIZE ) [[100]] (SUB @0 (GAS)) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 code=Op.MSTORE(offset=0x0, value=Op.GAS) - + Op.SSTORE( - key=0x1, - value=Op.EXTCODESIZE( - address=0x76FAE819612A29489A1A43208613D8F8557B8898 - ), - ) + + Op.SSTORE(key=0x1, value=Op.EXTCODESIZE(address=addr)) + Op.SSTORE(key=0x64, value=Op.SUB(Op.MLOAD(offset=0x0), Op.GAS)) + Op.STOP, storage={1: 1536}, nonce=0, - address=Address(0x6A7CA130BA6213231C23332FA5FCAB8CCB85C04B), # noqa: E501 ) - pre[addr] = Account(balance=10) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stEIP158Specific/test_vitalik_transaction_test_paris.py b/tests/ported_static/stEIP158Specific/test_vitalik_transaction_test_paris.py index b11681ea432..0dd5b77613a 100644 --- a/tests/ported_static/stEIP158Specific/test_vitalik_transaction_test_paris.py +++ b/tests/ported_static/stEIP158Specific/test_vitalik_transaction_test_paris.py @@ -14,6 +14,7 @@ Environment, StateTestFiller, Transaction, + compute_create_address, ) from execution_testing.vm import Op @@ -155,7 +156,7 @@ def test_vitalik_transaction_test_paris( post = { coinbase: Account(storage={}, code=b"", nonce=1), sender: Account(storage={}, code=b"", nonce=336), - Address(0x1BC78AE0E5EC5CB439F1D5355D6F90D38343E109): Account( + compute_create_address(address=sender, nonce=335): Account( storage={}, code=b"", nonce=3 ), Address(0x51F9D7F98E997BDD6BEBDE4C2DD27BE8C99303AA): Account( diff --git a/tests/ported_static/stEIP2930/test_transaction_costs.py b/tests/ported_static/stEIP2930/test_transaction_costs.py index 65245a0c468..3695bf9a542 100644 --- a/tests/ported_static/stEIP2930/test_transaction_costs.py +++ b/tests/ported_static/stEIP2930/test_transaction_costs.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, AccessList, Account, Address, @@ -120,9 +119,7 @@ def test_transaction_costs( ) -> None: """Ori Pomerantz qbzzt1@gmail.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x7778A3B885EA30938725C6E00831943A454477163CDBC252DEBEB9612B4FA5F7 - ) + sender = pre.fund_eoa(amount=0x5FA9C18) env = Environment( fee_recipient=coinbase, @@ -139,9 +136,7 @@ def test_transaction_costs( code=Op.STOP, balance=0xBA1A9CE0BA1A9CE, nonce=0, - address=Address(0x1BF4BD50BBDA0F09948556F87D37F86F2E19E84A), # noqa: E501 ) - pre[sender] = Account(balance=0x5FA9C18) expect_entries: list[dict] = [ # EIP-7981 changes access list costs in Amsterdam+. Balance is a diff --git a/tests/ported_static/stEIP3651_warmcoinbase/test_coinbase_warm_account_call_gas.py b/tests/ported_static/stEIP3651_warmcoinbase/test_coinbase_warm_account_call_gas.py index a07f84bf4e4..6bdb6c49c1a 100644 --- a/tests/ported_static/stEIP3651_warmcoinbase/test_coinbase_warm_account_call_gas.py +++ b/tests/ported_static/stEIP3651_warmcoinbase/test_coinbase_warm_account_call_gas.py @@ -107,6 +107,8 @@ def test_coinbase_warm_account_call_gas( gas_limit=100000000, ) + pre[coinbase] = Account(balance=0xBA1A9CE0BA1A9CE, nonce=1) + pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE, nonce=1) # Source: yul # berlin # { @@ -257,8 +259,6 @@ def test_coinbase_warm_account_call_gas( nonce=1, address=Address(0xA4A48FC5F3526A9BC06A0136AB0BA1D9574D15BA), # noqa: E501 ) - pre[coinbase] = Account(balance=0xBA1A9CE0BA1A9CE, nonce=1) - pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE, nonce=1) tx_data = [ Bytes("693c6139") + Hash(0x0), diff --git a/tests/ported_static/stEIP3651_warmcoinbase/test_coinbase_warm_account_call_gas_fail.py b/tests/ported_static/stEIP3651_warmcoinbase/test_coinbase_warm_account_call_gas_fail.py index 39144c983eb..cc58c53e55a 100644 --- a/tests/ported_static/stEIP3651_warmcoinbase/test_coinbase_warm_account_call_gas_fail.py +++ b/tests/ported_static/stEIP3651_warmcoinbase/test_coinbase_warm_account_call_gas_fail.py @@ -83,83 +83,8 @@ def test_coinbase_warm_account_call_gas_fail( gas_limit=100000000, ) - # Source: yul - # berlin - # { - # // Depending on the called contract here, the subcall will perform - # // another call/delegatecall/staticcall/callcode that will only succeed # noqa: E501 - # // if coinbase is considered warm by default (post-Shanghai). - # let calladdr := calldataload(4) - # - # let callgas := 100 - # switch calladdr - # case { - # // Extra: COINBASE + 6xPUSH1 + DUP6 + 2xPOP - # callgas := add(callgas, 27) - # } - # case { - # // Extra: COINBASE + 6xPUSH1 + DUP6 + 2xPOP - # callgas := add(callgas, 27) - # } - # case { - # // Extra: COINBASE + 5xPUSH1 + DUP6 + 2xPOP - # callgas := add(callgas, 24) - # } - # case { - # // Extra: COINBASE + 5xPUSH1 + DUP6 + 2xPOP - # callgas := add(callgas, 24) - # } - # // Call and save result - # sstore(0, call(callgas, calladdr, 0, 0, 0, 0, 0)) - # - # } - target = pre.deploy_contract( # noqa: F841 - code=Op.PUSH1[0x0] - + Op.DUP1 * 4 - + Op.CALLDATALOAD(offset=0x4) - + Op.PUSH1[0x64] - + Op.DUP2 - + Op.JUMPI( - pc=0x88, - condition=Op.EQ( - 0x8DDF5D9A5251C41EFD2949F53DB0A464116C7C6E, Op.DUP1 - ), - ) - + Op.JUMPI( - pc=0x88, - condition=Op.EQ( - 0x498516B6B2F25CB6A8E011A7C37A617B77E7D500, Op.DUP1 - ), - ) - + Op.JUMPI( - pc=0x80, - condition=Op.EQ( - 0x8873820BB96DAA39DB93AE64A9D6397E4C6A48D7, Op.DUP1 - ), - ) - + Op.PUSH20[0x303B6790D019874A107418EB549E4E7766A64728] - + Op.JUMPI(pc=0x79, condition=Op.EQ) - + Op.JUMPDEST - + Op.SSTORE(key=0x0, value=Op.CALL) - + Op.STOP - + Op.JUMPDEST - + Op.PUSH1[0x18] - + Op.ADD - + Op.JUMP(pc=0x73) - + Op.JUMPDEST - + Op.POP - + Op.PUSH1[0x18] - + Op.ADD - + Op.JUMP(pc=0x73) - + Op.JUMPDEST - + Op.POP - + Op.PUSH1[0x1B] - + Op.ADD - + Op.JUMP(pc=0x73), - balance=0xBA1A9CE0BA1A9CE, - nonce=1, - address=Address(0x0A92FC97BB4C47B3D5E9E96FBB1C3FC2F07DBA81), # noqa: E501 - ) + pre[coinbase] = Account(balance=0xBA1A9CE0BA1A9CE, nonce=1) + pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE, nonce=1) # Source: yul # berlin # { @@ -242,8 +167,83 @@ def test_coinbase_warm_account_call_gas_fail( nonce=1, address=Address(0x303B6790D019874A107418EB549E4E7766A64728), # noqa: E501 ) - pre[coinbase] = Account(balance=0xBA1A9CE0BA1A9CE, nonce=1) - pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE, nonce=1) + # Source: yul + # berlin + # { + # // Depending on the called contract here, the subcall will perform + # // another call/delegatecall/staticcall/callcode that will only succeed # noqa: E501 + # // if coinbase is considered warm by default (post-Shanghai). + # let calladdr := calldataload(4) + # + # let callgas := 100 + # switch calladdr + # case { + # // Extra: COINBASE + 6xPUSH1 + DUP6 + 2xPOP + # callgas := add(callgas, 27) + # } + # case { + # // Extra: COINBASE + 6xPUSH1 + DUP6 + 2xPOP + # callgas := add(callgas, 27) + # } + # case { + # // Extra: COINBASE + 5xPUSH1 + DUP6 + 2xPOP + # callgas := add(callgas, 24) + # } + # case { + # // Extra: COINBASE + 5xPUSH1 + DUP6 + 2xPOP + # callgas := add(callgas, 24) + # } + # // Call and save result + # sstore(0, call(callgas, calladdr, 0, 0, 0, 0, 0)) + # + # } + target = pre.deploy_contract( # noqa: F841 + code=Op.PUSH1[0x0] + + Op.DUP1 * 4 + + Op.CALLDATALOAD(offset=0x4) + + Op.PUSH1[0x64] + + Op.DUP2 + + Op.JUMPI( + pc=0x88, + condition=Op.EQ( + 0x8DDF5D9A5251C41EFD2949F53DB0A464116C7C6E, Op.DUP1 + ), + ) + + Op.JUMPI( + pc=0x88, + condition=Op.EQ( + 0x498516B6B2F25CB6A8E011A7C37A617B77E7D500, Op.DUP1 + ), + ) + + Op.JUMPI( + pc=0x80, + condition=Op.EQ( + 0x8873820BB96DAA39DB93AE64A9D6397E4C6A48D7, Op.DUP1 + ), + ) + + Op.PUSH20[0x303B6790D019874A107418EB549E4E7766A64728] + + Op.JUMPI(pc=0x79, condition=Op.EQ) + + Op.JUMPDEST + + Op.SSTORE(key=0x0, value=Op.CALL) + + Op.STOP + + Op.JUMPDEST + + Op.PUSH1[0x18] + + Op.ADD + + Op.JUMP(pc=0x73) + + Op.JUMPDEST + + Op.POP + + Op.PUSH1[0x18] + + Op.ADD + + Op.JUMP(pc=0x73) + + Op.JUMPDEST + + Op.POP + + Op.PUSH1[0x1B] + + Op.ADD + + Op.JUMP(pc=0x73), + balance=0xBA1A9CE0BA1A9CE, + nonce=1, + address=Address(0x0A92FC97BB4C47B3D5E9E96FBB1C3FC2F07DBA81), # noqa: E501 + ) tx_data = [ Bytes("693c6139") + Hash(addr, left_padding=True), diff --git a/tests/ported_static/stEIP3855_push0/test_push0.py b/tests/ported_static/stEIP3855_push0/test_push0.py index 06c9b25f0ae..82a91325613 100644 --- a/tests/ported_static/stEIP3855_push0/test_push0.py +++ b/tests/ported_static/stEIP3855_push0/test_push0.py @@ -159,6 +159,25 @@ def test_push0( nonce=0, address=Address(0x0000000000000000000000000000000000000400), # noqa: E501 ) + # Source: raw + # 0x60ff5f5360016000f3 + contract_6 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE8(offset=Op.PUSH0, value=0xFF) + + Op.RETURN(offset=0x0, size=0x1), + nonce=0, + address=Address(0x0000000000000000000000000000000000000600), # noqa: E501 + ) + # Source: raw + # 0x6004565f5b60015f5500 + contract_7 = pre.deploy_contract( # noqa: F841 + code=Op.JUMP(pc=0x4) + + Op.PUSH0 + + Op.JUMPDEST + + Op.SSTORE(key=Op.PUSH0, value=0x1) + + Op.STOP, + nonce=0, + address=Address(0x0000000000000000000000000000000000000700), # noqa: E501 + ) # Source: yul # berlin # { @@ -187,25 +206,6 @@ def test_push0( nonce=0, address=Address(0x0000000000000000000000000000000000000500), # noqa: E501 ) - # Source: raw - # 0x60ff5f5360016000f3 - contract_6 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE8(offset=Op.PUSH0, value=0xFF) - + Op.RETURN(offset=0x0, size=0x1), - nonce=0, - address=Address(0x0000000000000000000000000000000000000600), # noqa: E501 - ) - # Source: raw - # 0x6004565f5b60015f5500 - contract_7 = pre.deploy_contract( # noqa: F841 - code=Op.JUMP(pc=0x4) - + Op.PUSH0 - + Op.JUMPDEST - + Op.SSTORE(key=Op.PUSH0, value=0x1) - + Op.STOP, - nonce=0, - address=Address(0x0000000000000000000000000000000000000700), # noqa: E501 - ) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stEIP3855_push0/test_push0_gas.py b/tests/ported_static/stEIP3855_push0/test_push0_gas.py index 8ca1722597c..e9a870b6600 100644 --- a/tests/ported_static/stEIP3855_push0/test_push0_gas.py +++ b/tests/ported_static/stEIP3855_push0/test_push0_gas.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_push0_gas( ) -> None: """Test_push0_gas.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xDC4EFA209AECDD4C2D5201A419EA27506151B4EC687F14A613229E310932491B - ) + sender = pre.fund_eoa(amount=0x989680) env = Environment( fee_recipient=coinbase, @@ -46,7 +43,6 @@ def test_push0_gas( gas_limit=89128960, ) - pre[sender] = Account(balance=0x989680) # Source: raw # 0x5a6000555f5a6000540360015500 target = pre.deploy_contract( # noqa: F841 @@ -55,7 +51,6 @@ def test_push0_gas( + Op.SSTORE(key=0x1, value=Op.SUB(Op.SLOAD(key=0x0), Op.GAS)) + Op.STOP, nonce=0, - address=Address(0xC1ACA9DA71F5EA8DB94B3428D8CBE5D544472FF7), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stEIP3860_limitmeterinitcode/test_create2_init_code_size_limit.py b/tests/ported_static/stEIP3860_limitmeterinitcode/test_create2_init_code_size_limit.py index d1c6d456398..02b8f8dd203 100644 --- a/tests/ported_static/stEIP3860_limitmeterinitcode/test_create2_init_code_size_limit.py +++ b/tests/ported_static/stEIP3860_limitmeterinitcode/test_create2_init_code_size_limit.py @@ -79,33 +79,6 @@ def test_create2_init_code_size_limit( # Source: yul # berlin # { - # mstore(0, calldataload(0)) - # let call_result := call(10000000, 0xc94f5374fce5edbc8e2a8697c15331677e6ebf0b, 0, 0, calldatasize(), 0, 0) # noqa: E501 - # sstore(0, call_result) - # sstore(1, 1) - # } - contract_0 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x0, value=Op.CALLDATALOAD(offset=0x0)) - + Op.SSTORE( - key=0x0, - value=Op.CALL( - gas=0x989680, - address=0xC94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, - value=Op.DUP1, - args_offset=Op.DUP2, - args_size=Op.CALLDATASIZE, - ret_offset=Op.DUP1, - ret_size=0x0, - ), - ) - + Op.SSTORE(key=Op.DUP1, value=0x1) - + Op.STOP, - nonce=0, - address=Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B), # noqa: E501 - ) - # Source: yul - # berlin - # { # // :yul { codecopy(0x00, 0x00, 0x0a) return(0x00, 0x0a) } # mstore(0, 0x600a80600080396000f300000000000000000000000000000000000000000000) # noqa: E501 # // get initcode size from calldata @@ -138,6 +111,33 @@ def test_create2_init_code_size_limit( nonce=0, address=Address(0xC94F5374FCE5EDBC8E2A8697C15331677E6EBF0B), # noqa: E501 ) + # Source: yul + # berlin + # { + # mstore(0, calldataload(0)) + # let call_result := call(10000000, 0xc94f5374fce5edbc8e2a8697c15331677e6ebf0b, 0, 0, calldatasize(), 0, 0) # noqa: E501 + # sstore(0, call_result) + # sstore(1, 1) + # } + contract_0 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x0, value=Op.CALLDATALOAD(offset=0x0)) + + Op.SSTORE( + key=0x0, + value=Op.CALL( + gas=0x989680, + address=contract_1, + value=Op.DUP1, + args_offset=Op.DUP2, + args_size=Op.CALLDATASIZE, + ret_offset=Op.DUP1, + ret_size=0x0, + ), + ) + + Op.SSTORE(key=Op.DUP1, value=0x1) + + Op.STOP, + nonce=0, + address=Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B), # noqa: E501 + ) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stEIP3860_limitmeterinitcode/test_create_init_code_size_limit.py b/tests/ported_static/stEIP3860_limitmeterinitcode/test_create_init_code_size_limit.py index 0c8d60ecd47..dc9500e9b45 100644 --- a/tests/ported_static/stEIP3860_limitmeterinitcode/test_create_init_code_size_limit.py +++ b/tests/ported_static/stEIP3860_limitmeterinitcode/test_create_init_code_size_limit.py @@ -80,33 +80,6 @@ def test_create_init_code_size_limit( # Source: yul # berlin # { - # mstore(0, calldataload(0)) - # let call_result := call(10000000, 0xc0de, 0, 0, calldatasize(), 0, 0) - # sstore(0, call_result) - # sstore(1, 1) - # } - contract_0 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x0, value=Op.CALLDATALOAD(offset=0x0)) - + Op.SSTORE( - key=0x0, - value=Op.CALL( - gas=0x989680, - address=0xC0DE, - value=Op.DUP1, - args_offset=Op.DUP2, - args_size=Op.CALLDATASIZE, - ret_offset=Op.DUP1, - ret_size=0x0, - ), - ) - + Op.SSTORE(key=Op.DUP1, value=0x1) - + Op.STOP, - nonce=1, - address=Address(0xBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB), # noqa: E501 - ) - # Source: yul - # berlin - # { # // :yul { codecopy(0x00, 0x00, 0x0a) return(0x00, 0x0a) } # mstore(0, 0x600a80600080396000f300000000000000000000000000000000000000000000) # noqa: E501 # // get initcode size from calldata @@ -138,6 +111,33 @@ def test_create_init_code_size_limit( nonce=1, address=Address(0x000000000000000000000000000000000000C0DE), # noqa: E501 ) + # Source: yul + # berlin + # { + # mstore(0, calldataload(0)) + # let call_result := call(10000000, 0xc0de, 0, 0, calldatasize(), 0, 0) + # sstore(0, call_result) + # sstore(1, 1) + # } + contract_0 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x0, value=Op.CALLDATALOAD(offset=0x0)) + + Op.SSTORE( + key=0x0, + value=Op.CALL( + gas=0x989680, + address=contract_1, + value=Op.DUP1, + args_offset=Op.DUP2, + args_size=Op.CALLDATASIZE, + ret_offset=Op.DUP1, + ret_size=0x0, + ), + ) + + Op.SSTORE(key=Op.DUP1, value=0x1) + + Op.STOP, + nonce=1, + address=Address(0xBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB), # noqa: E501 + ) expect_entries_: list[dict] = [ { @@ -148,7 +148,7 @@ def test_create_init_code_size_limit( contract_0: Account(storage={0: 1, 1: 1}), contract_1: Account( storage={ - 0: 0x5F6BAAEB5B7C97725F84D1569C4ABC85135F4716, + 0: compute_create_address(address=contract_1, nonce=1), 10: 46323, }, ), diff --git a/tests/ported_static/stEIP3860_limitmeterinitcode/test_creation_tx_init_code_size_limit.py b/tests/ported_static/stEIP3860_limitmeterinitcode/test_creation_tx_init_code_size_limit.py index 5b2b0b9a600..ff9a504ca81 100644 --- a/tests/ported_static/stEIP3860_limitmeterinitcode/test_creation_tx_init_code_size_limit.py +++ b/tests/ported_static/stEIP3860_limitmeterinitcode/test_creation_tx_init_code_size_limit.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -52,7 +51,6 @@ ), ], ) -@pytest.mark.pre_alloc_mutable def test_creation_tx_init_code_size_limit( state_test: StateTestFiller, pre: Alloc, @@ -63,9 +61,7 @@ def test_creation_tx_init_code_size_limit( ) -> None: """Test_creation_tx_init_code_size_limit.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0xBEBC200) env = Environment( fee_recipient=coinbase, @@ -76,8 +72,6 @@ def test_creation_tx_init_code_size_limit( gas_limit=20000000, ) - pre[sender] = Account(balance=0xBEBC200) - expect_entries_: list[dict] = [ { "indexes": {"data": [0], "gas": -1, "value": -1}, diff --git a/tests/ported_static/stEIP4844_blobtransactions/test_empty_blobhash_list.py b/tests/ported_static/stEIP4844_blobtransactions/test_empty_blobhash_list.py index bb690f34429..e97a3c33320 100644 --- a/tests/ported_static/stEIP4844_blobtransactions/test_empty_blobhash_list.py +++ b/tests/ported_static/stEIP4844_blobtransactions/test_empty_blobhash_list.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, AccessList, Account, Address, @@ -39,9 +38,7 @@ def test_empty_blobhash_list( ) -> None: """BLOB000.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -62,9 +59,7 @@ def test_empty_blobhash_list( code=Op.SSTORE(key=0x0, value=Op.BLOBHASH(index=0x0)) + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xC4DCF66BD4CDEFE4CE7FBA4951BE4E9F580122C5), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, @@ -78,7 +73,7 @@ def test_empty_blobhash_list( blob_versioned_hashes=[], access_list=[ AccessList( - address=Address(0xC4DCF66BD4CDEFE4CE7FBA4951BE4E9F580122C5), + address=target, storage_keys=[ Hash( "0x0000000000000000000000000000000000000000000000000000000000000000" # noqa: E501 diff --git a/tests/ported_static/stEIP4844_blobtransactions/test_opcode_blobh_bounds.py b/tests/ported_static/stEIP4844_blobtransactions/test_opcode_blobh_bounds.py index 133cbc915d7..dadd17acd8c 100644 --- a/tests/ported_static/stEIP4844_blobtransactions/test_opcode_blobh_bounds.py +++ b/tests/ported_static/stEIP4844_blobtransactions/test_opcode_blobh_bounds.py @@ -51,6 +51,7 @@ def test_opcode_blobh_bounds( gas_limit=68719476736, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { # ; Can also add lll style comments here @@ -82,7 +83,6 @@ def test_opcode_blobh_bounds( nonce=0, address=Address(0xC8126E943C569C35DF09619F8E1E67460ACFF695), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, @@ -103,7 +103,7 @@ def test_opcode_blobh_bounds( ], access_list=[ AccessList( - address=Address(0xC8126E943C569C35DF09619F8E1E67460ACFF695), + address=target, storage_keys=[ Hash( "0x0000000000000000000000000000000000000000000000000000000000000000" # noqa: E501 diff --git a/tests/ported_static/stEIP4844_blobtransactions/test_opcode_blobhash_out_of_range.py b/tests/ported_static/stEIP4844_blobtransactions/test_opcode_blobhash_out_of_range.py index 826156302d4..39c73145913 100644 --- a/tests/ported_static/stEIP4844_blobtransactions/test_opcode_blobhash_out_of_range.py +++ b/tests/ported_static/stEIP4844_blobtransactions/test_opcode_blobhash_out_of_range.py @@ -51,6 +51,7 @@ def test_opcode_blobhash_out_of_range( gas_limit=68719476736, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { # ; Can also add lll style comments here @@ -66,7 +67,6 @@ def test_opcode_blobhash_out_of_range( nonce=0, address=Address(0x0C4D6F62D3C85069CEA2411284BD520AC87FB7EB), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, @@ -87,7 +87,7 @@ def test_opcode_blobhash_out_of_range( ], access_list=[ AccessList( - address=Address(0x0C4D6F62D3C85069CEA2411284BD520AC87FB7EB), + address=target, storage_keys=[ Hash( "0x0000000000000000000000000000000000000000000000000000000000000000" # noqa: E501 diff --git a/tests/ported_static/stEIP4844_blobtransactions/test_wrong_blobhash_version.py b/tests/ported_static/stEIP4844_blobtransactions/test_wrong_blobhash_version.py index eedcbcc90d4..33ae23f221a 100644 --- a/tests/ported_static/stEIP4844_blobtransactions/test_wrong_blobhash_version.py +++ b/tests/ported_static/stEIP4844_blobtransactions/test_wrong_blobhash_version.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, AccessList, Account, Address, @@ -39,9 +38,7 @@ def test_wrong_blobhash_version( ) -> None: """BLOB001.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -62,9 +59,7 @@ def test_wrong_blobhash_version( code=Op.SSTORE(key=0x0, value=Op.BLOBHASH(index=0x0)) + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xC4DCF66BD4CDEFE4CE7FBA4951BE4E9F580122C5), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, @@ -85,7 +80,7 @@ def test_wrong_blobhash_version( ], access_list=[ AccessList( - address=Address(0xC4DCF66BD4CDEFE4CE7FBA4951BE4E9F580122C5), + address=target, storage_keys=[ Hash( "0x0000000000000000000000000000000000000000000000000000000000000000" # noqa: E501 diff --git a/tests/ported_static/stEIP5656_MCOPY/test_mcopy.py b/tests/ported_static/stEIP5656_MCOPY/test_mcopy.py index 7104590b343..acae638389f 100644 --- a/tests/ported_static/stEIP5656_MCOPY/test_mcopy.py +++ b/tests/ported_static/stEIP5656_MCOPY/test_mcopy.py @@ -179,6 +179,7 @@ def test_mcopy( gas_limit=1000000, ) + pre[sender] = Account(balance=0x3B9ACA00) # Source: yul # cancun { # // Fill memory at [0-96] (3x32) with the pattern of unique bytes. @@ -219,7 +220,6 @@ def test_mcopy( nonce=1, address=Address(0xBFD584EC9DC8FBADCEA812C707E1765B4DF8FA6C), # noqa: E501 ) - pre[sender] = Account(balance=0x3B9ACA00) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stEIP5656_MCOPY/test_mcopy_memory_expansion_cost.py b/tests/ported_static/stEIP5656_MCOPY/test_mcopy_memory_expansion_cost.py index 0cd3770cd3a..c6b1b90837d 100644 --- a/tests/ported_static/stEIP5656_MCOPY/test_mcopy_memory_expansion_cost.py +++ b/tests/ported_static/stEIP5656_MCOPY/test_mcopy_memory_expansion_cost.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -169,7 +168,6 @@ ), ], ) -@pytest.mark.pre_alloc_mutable def test_mcopy_memory_expansion_cost( state_test: StateTestFiller, pre: Alloc, @@ -180,9 +178,7 @@ def test_mcopy_memory_expansion_cost( ) -> None: """Test cases for the memory expansion cost in the MCOPY instruction.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xF79127A3004ABDE26A4CBD80C428CB10F829FA11B54D36E7B326F4F4A5927ACF - ) + sender = pre.fund_eoa(amount=0x3B9ACA00) env = Environment( fee_recipient=coinbase, @@ -215,9 +211,7 @@ def test_mcopy_memory_expansion_cost( + Op.STOP, storage={0: 0xFA11ED}, nonce=1, - address=Address(0x147DAECF943FA4FB48D1B7287571525B0BAEFEB9), # noqa: E501 ) - pre[sender] = Account(balance=0x3B9ACA00) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stExample/test_eip1559.py b/tests/ported_static/stExample/test_eip1559.py index 91874978154..7b107d1f969 100644 --- a/tests/ported_static/stExample/test_eip1559.py +++ b/tests/ported_static/stExample/test_eip1559.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, AccessList, Account, Address, @@ -35,9 +34,7 @@ def test_eip1559( ) -> None: """Ori Pomerantz qbzzt1@gmail.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xDE0C95357363DA5C1C5A73BD7C2781CA5C9FECC1014103B5E1D1E990AE8208EC - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000, nonce=1) env = Environment( fee_recipient=coinbase, @@ -59,9 +56,7 @@ def test_eip1559( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=1, - address=Address(0x38DC047054D46298A5BB7ED3A0BAD84BF69090D4), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000, nonce=1) tx = Transaction( sender=sender, @@ -73,7 +68,7 @@ def test_eip1559( nonce=1, access_list=[ AccessList( - address=Address(0x38DC047054D46298A5BB7ED3A0BAD84BF69090D4), + address=target, storage_keys=[ Hash( "0x0000000000000000000000000000000000000000000000000000000000000000" # noqa: E501 diff --git a/tests/ported_static/stExample/test_invalid_tr.py b/tests/ported_static/stExample/test_invalid_tr.py index cb30f1f7e18..c55aa6717b0 100644 --- a/tests/ported_static/stExample/test_invalid_tr.py +++ b/tests/ported_static/stExample/test_invalid_tr.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_invalid_tr( ) -> None: """A state test with invalid transaction example filler.""" coinbase = Address(0x7704D8A022A1BA8F3539FC82C7D7FB065ABC0DF3) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -55,9 +52,7 @@ def test_invalid_tr( code=Op.SSTORE(key=0x0, value=Op.ADD(0x1, 0x1)) + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x4567F627ABB612A28ED0A355E3FA9BF1E455677A), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stExample/test_merge_test.py b/tests/ported_static/stExample/test_merge_test.py index e494566df93..a15fb3a5cc0 100644 --- a/tests/ported_static/stExample/test_merge_test.py +++ b/tests/ported_static/stExample/test_merge_test.py @@ -48,6 +48,7 @@ def test_merge_test( gas_limit=16777216, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000, nonce=1) # Source: lll # { # (sstore 0 (gasprice)) @@ -63,7 +64,6 @@ def test_merge_test( nonce=1, address=Address(0x49A0FE79E28D1D65E16CDF53ACAFEAE7BACCAC0E), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000, nonce=1) tx = Transaction( sender=sender, @@ -75,7 +75,7 @@ def test_merge_test( nonce=1, access_list=[ AccessList( - address=Address(0x49A0FE79E28D1D65E16CDF53ACAFEAE7BACCAC0E), + address=target, storage_keys=[ Hash( "0x0000000000000000000000000000000000000000000000000000000000000000" # noqa: E501 diff --git a/tests/ported_static/stExample/test_yul_example.py b/tests/ported_static/stExample/test_yul_example.py index b942b283782..710c01076b7 100644 --- a/tests/ported_static/stExample/test_yul_example.py +++ b/tests/ported_static/stExample/test_yul_example.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_yul_example( ) -> None: """An example test for using simple yul contracts in the test.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x40AC0FC28C27E961EE46EC43355A094DE205856EDBD4654CF2577C2608D4EC1E - ) + sender = pre.fund_eoa(amount=0xBA1A9CE0BA1A9CE) env = Environment( fee_recipient=coinbase, @@ -60,9 +57,7 @@ def test_yul_example( code=Op.SSTORE(key=0x0, value=0x3) + Op.RETURN(offset=0x0, size=0x20), balance=0xBA1A9CE0BA1A9CE, nonce=0, - address=Address(0xF30C160326A04ECB32E7651C0A8F373468BEA269), # noqa: E501 ) - pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stHomesteadSpecific/test_contract_creation_oo_gdont_leave_empty_contract_via_transaction.py b/tests/ported_static/stHomesteadSpecific/test_contract_creation_oo_gdont_leave_empty_contract_via_transaction.py index 2c3ffd26dc8..82d92551fc3 100644 --- a/tests/ported_static/stHomesteadSpecific/test_contract_creation_oo_gdont_leave_empty_contract_via_transaction.py +++ b/tests/ported_static/stHomesteadSpecific/test_contract_creation_oo_gdont_leave_empty_contract_via_transaction.py @@ -52,6 +52,13 @@ def test_contract_creation_oo_gdont_leave_empty_contract_via_transaction( pre[sender] = Account(balance=0x10C8E0) # Source: lll + # {(SSTORE 1 1)} + contract_1 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x1, value=0x1) + Op.STOP, + nonce=0, + address=Address(0x1000000000000000000000000000000000000001), # noqa: E501 + ) + # Source: lll # {(CALL 50000 0x1000000000000000000000000000000000000001 0 0 64 0 64)} contract_0 = pre.deploy_contract( # noqa: F841 code=Op.CALL( @@ -68,13 +75,6 @@ def test_contract_creation_oo_gdont_leave_empty_contract_via_transaction( nonce=0, address=Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B), # noqa: E501 ) - # Source: lll - # {(SSTORE 1 1)} - contract_1 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x1, value=0x1) + Op.STOP, - nonce=0, - address=Address(0x1000000000000000000000000000000000000001), # noqa: E501 - ) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stHomesteadSpecific/test_create_contract_via_contract.py b/tests/ported_static/stHomesteadSpecific/test_create_contract_via_contract.py index 1311ab5ae55..1989648a8b1 100644 --- a/tests/ported_static/stHomesteadSpecific/test_create_contract_via_contract.py +++ b/tests/ported_static/stHomesteadSpecific/test_create_contract_via_contract.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,9 +33,7 @@ def test_create_contract_via_contract( """Test_create_contract_via_contract.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) contract_0 = Address(0x1000000000000000000000000000000000000001) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0xF4240) env = Environment( fee_recipient=coinbase, @@ -47,13 +44,11 @@ def test_create_contract_via_contract( gas_limit=1000000, ) - pre[sender] = Account(balance=0xF4240) # Source: lll # { (CREATE 0 0 0)} contract_0 = pre.deploy_contract( # noqa: F841 code=Op.CREATE(value=0x0, offset=0x0, size=0x0) + Op.STOP, nonce=0, - address=Address(0x1000000000000000000000000000000000000001), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stHomesteadSpecific/test_create_contract_via_contract_oog_init_code.py b/tests/ported_static/stHomesteadSpecific/test_create_contract_via_contract_oog_init_code.py index f29201b4c80..7b3e101416a 100644 --- a/tests/ported_static/stHomesteadSpecific/test_create_contract_via_contract_oog_init_code.py +++ b/tests/ported_static/stHomesteadSpecific/test_create_contract_via_contract_oog_init_code.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -15,6 +14,7 @@ Environment, StateTestFiller, Transaction, + compute_create_address, ) from execution_testing.vm import Op @@ -36,9 +36,7 @@ def test_create_contract_via_contract_oog_init_code( """Test_create_contract_via_contract_oog_init_code.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) contract_0 = Address(0x1000000000000000000000000000000000000001) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0x10C8E0) env = Environment( fee_recipient=coinbase, @@ -49,7 +47,6 @@ def test_create_contract_via_contract_oog_init_code( gas_limit=1000000, ) - pre[sender] = Account(balance=0x10C8E0) # Source: lll # { (MSTORE 0 0x602060406000f0600c600055)(CREATE 0 20 12)} contract_0 = pre.deploy_contract( # noqa: F841 @@ -57,7 +54,6 @@ def test_create_contract_via_contract_oog_init_code( + Op.CREATE(value=0x0, offset=0x14, size=0xC) + Op.STOP, nonce=0, - address=Address(0x1000000000000000000000000000000000000001), # noqa: E501 ) tx = Transaction( @@ -68,8 +64,9 @@ def test_create_contract_via_contract_oog_init_code( ) post = { - Address( - 0x4FF884BFFC83E888AE11B32B1D94BF9BC8D1732F + compute_create_address( + address=compute_create_address(address=contract_0, nonce=0), + nonce=0, ): Account.NONEXISTENT, } diff --git a/tests/ported_static/stHomesteadSpecific/test_create_contract_via_transaction_cost53000.py b/tests/ported_static/stHomesteadSpecific/test_create_contract_via_transaction_cost53000.py index 2a3844b3d4f..aaa0ab8e85f 100644 --- a/tests/ported_static/stHomesteadSpecific/test_create_contract_via_transaction_cost53000.py +++ b/tests/ported_static/stHomesteadSpecific/test_create_contract_via_transaction_cost53000.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -27,16 +26,13 @@ ], ) @pytest.mark.valid_from("Cancun") -@pytest.mark.pre_alloc_mutable def test_create_contract_via_transaction_cost53000( state_test: StateTestFiller, pre: Alloc, ) -> None: """Trigger transaction creating gasPrice in the state.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0xF4240) env = Environment( fee_recipient=coinbase, @@ -47,8 +43,6 @@ def test_create_contract_via_transaction_cost53000( gas_limit=1000000, ) - pre[sender] = Account(balance=0xF4240) - tx = Transaction( sender=sender, to=None, diff --git a/tests/ported_static/stInitCodeTest/test_call_contract_to_create_contract_no_cash.py b/tests/ported_static/stInitCodeTest/test_call_contract_to_create_contract_no_cash.py index 16dde5285eb..4298cd98ba6 100644 --- a/tests/ported_static/stInitCodeTest/test_call_contract_to_create_contract_no_cash.py +++ b/tests/ported_static/stInitCodeTest/test_call_contract_to_create_contract_no_cash.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_call_contract_to_create_contract_no_cash( ) -> None: """Test_call_contract_to_create_contract_no_cash.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xF79127A3004ABDE26A4CBD80C428CB10F829FA11B54D36E7B326F4F4A5927ACF - ) + sender = pre.fund_eoa(amount=0x3B9ACA00) env = Environment( fee_recipient=coinbase, @@ -60,9 +57,7 @@ def test_call_contract_to_create_contract_no_cash( + Op.STOP, balance=10000, nonce=0, - address=Address(0x985ACA92559C5B1B9CD7897FEC0F7C7993AD0D60), # noqa: E501 ) - pre[sender] = Account(balance=0x3B9ACA00) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stInitCodeTest/test_call_contract_to_create_contract_oog.py b/tests/ported_static/stInitCodeTest/test_call_contract_to_create_contract_oog.py index e62d3575c99..32bd64fd55a 100644 --- a/tests/ported_static/stInitCodeTest/test_call_contract_to_create_contract_oog.py +++ b/tests/ported_static/stInitCodeTest/test_call_contract_to_create_contract_oog.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_call_contract_to_create_contract_oog( ) -> None: """Test_call_contract_to_create_contract_oog.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xF79127A3004ABDE26A4CBD80C428CB10F829FA11B54D36E7B326F4F4A5927ACF - ) + sender = pre.fund_eoa(amount=0x3B9ACA00) env = Environment( fee_recipient=coinbase, @@ -66,7 +63,6 @@ def test_call_contract_to_create_contract_oog( nonce=0, address=Address(0x1BC6342E077E772B0F4CC48116BC171F9A35D09E), # noqa: E501 ) - pre[sender] = Account(balance=0x3B9ACA00) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stInitCodeTest/test_call_contract_to_create_contract_which_would_create_contract_if_called.py b/tests/ported_static/stInitCodeTest/test_call_contract_to_create_contract_which_would_create_contract_if_called.py index 0f968466a78..16fb7d6b4df 100644 --- a/tests/ported_static/stInitCodeTest/test_call_contract_to_create_contract_which_would_create_contract_if_called.py +++ b/tests/ported_static/stInitCodeTest/test_call_contract_to_create_contract_which_would_create_contract_if_called.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -37,9 +36,7 @@ def test_call_contract_to_create_contract_which_would_create_contract_if_called( """Test_call_contract_to_create_contract_which_would_create_contract_i...""" # noqa: E501 coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) contract_0 = Address(0x095E7BAEA6A6C7C4C2DFEB977EFAC326AF552D87) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0x3B9ACA00) env = Environment( fee_recipient=coinbase, @@ -71,7 +68,6 @@ def test_call_contract_to_create_contract_which_would_create_contract_if_called( nonce=0, address=Address(0x095E7BAEA6A6C7C4C2DFEB977EFAC326AF552D87), # noqa: E501 ) - pre[sender] = Account(balance=0x3B9ACA00) tx = Transaction( sender=sender, @@ -82,11 +78,14 @@ def test_call_contract_to_create_contract_which_would_create_contract_if_called( post = { contract_0: Account( - storage={0: 0xD2571607E241ECF590ED94B12D87C94BABE36DB6}, + storage={ + 0: compute_create_address(address=contract_0, nonce=0), + }, nonce=1, ), - Address( - 0x62C01474F089B07DAE603491675DC5B5748F7049 + compute_create_address( + address=compute_create_address(address=contract_0, nonce=0), + nonce=0, ): Account.NONEXISTENT, sender: Account(nonce=1), compute_create_address(address=contract_0, nonce=0): Account( diff --git a/tests/ported_static/stInitCodeTest/test_call_recursive_contract.py b/tests/ported_static/stInitCodeTest/test_call_recursive_contract.py index 3735404acc9..971bc2d4760 100644 --- a/tests/ported_static/stInitCodeTest/test_call_recursive_contract.py +++ b/tests/ported_static/stInitCodeTest/test_call_recursive_contract.py @@ -47,6 +47,7 @@ def test_call_recursive_contract( gas_limit=100000000, ) + pre[sender] = Account(balance=0x989680) # Source: lll # {[[ 2 ]](ADDRESS)(CODECOPY 0 0 32)(CREATE 0 0 32)} contract_0 = pre.deploy_contract( # noqa: F841 @@ -57,7 +58,6 @@ def test_call_recursive_contract( nonce=40, address=Address(0x095E7BAEA6A6C7C4C2DFEB977EFAC326AF552D87), # noqa: E501 ) - pre[sender] = Account(balance=0x989680) tx = Transaction( sender=sender, @@ -68,11 +68,7 @@ def test_call_recursive_contract( ) post = { - contract_0: Account( - storage={2: 0x95E7BAEA6A6C7C4C2DFEB977EFAC326AF552D87}, - balance=1, - nonce=41, - ), + contract_0: Account(storage={2: contract_0}, balance=1, nonce=41), Address( 0x1A4C83E1A9834CDC7E4A905FF7F0CF44AED73180 ): Account.NONEXISTENT, diff --git a/tests/ported_static/stInitCodeTest/test_call_the_contract_to_create_empty_contract.py b/tests/ported_static/stInitCodeTest/test_call_the_contract_to_create_empty_contract.py index dfb3de3012d..08cb3cc54f5 100644 --- a/tests/ported_static/stInitCodeTest/test_call_the_contract_to_create_empty_contract.py +++ b/tests/ported_static/stInitCodeTest/test_call_the_contract_to_create_empty_contract.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -37,9 +36,7 @@ def test_call_the_contract_to_create_empty_contract( """Test_call_the_contract_to_create_empty_contract.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) contract_0 = Address(0x095E7BAEA6A6C7C4C2DFEB977EFAC326AF552D87) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0x989680) env = Environment( fee_recipient=coinbase, @@ -55,9 +52,7 @@ def test_call_the_contract_to_create_empty_contract( contract_0 = pre.deploy_contract( # noqa: F841 code=Op.CREATE(value=0x0, offset=0x0, size=0x20) + Op.STOP, nonce=0, - address=Address(0x095E7BAEA6A6C7C4C2DFEB977EFAC326AF552D87), # noqa: E501 ) - pre[sender] = Account(balance=0x989680) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stInitCodeTest/test_out_of_gas_contract_creation.py b/tests/ported_static/stInitCodeTest/test_out_of_gas_contract_creation.py index 2911e3a4d69..9525495cff9 100644 --- a/tests/ported_static/stInitCodeTest/test_out_of_gas_contract_creation.py +++ b/tests/ported_static/stInitCodeTest/test_out_of_gas_contract_creation.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -59,7 +58,6 @@ ), ], ) -@pytest.mark.pre_alloc_mutable def test_out_of_gas_contract_creation( state_test: StateTestFiller, pre: Alloc, @@ -70,8 +68,8 @@ def test_out_of_gas_contract_creation( ) -> None: """Test_out_of_gas_contract_creation.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 + sender = pre.fund_eoa( + amount=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF # noqa: E501 ) env = Environment( @@ -83,10 +81,6 @@ def test_out_of_gas_contract_creation( gas_limit=100000000000000, ) - pre[sender] = Account( - balance=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF # noqa: E501 - ) - expect_entries_: list[dict] = [ { "indexes": {"data": 0, "gas": 1, "value": -1}, diff --git a/tests/ported_static/stInitCodeTest/test_return_test.py b/tests/ported_static/stInitCodeTest/test_return_test.py index ec66c49dd59..63721b3fe3b 100644 --- a/tests/ported_static/stInitCodeTest/test_return_test.py +++ b/tests/ported_static/stInitCodeTest/test_return_test.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_return_test( coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) contract_0 = Address(0x194F5374FCE5EDBC8E2A8697C15331677E6EBF0B) contract_1 = Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0x989680) env = Environment( fee_recipient=coinbase, @@ -48,13 +45,22 @@ def test_return_test( gas_limit=10000000, ) + # Source: lll + # {(MSTORE 0 0x15) (RETURN 31 1)} + contract_1 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x0, value=0x15) + + Op.RETURN(offset=0x1F, size=0x1) + + Op.STOP, + balance=0x186A0, + nonce=0, + ) # Source: lll # {(CALL 2000 0xb94f5374fce5edbc8e2a8697c15331677e6ebf0b 0 30 1 31 1) [[0]](MLOAD 0) (RETURN 30 2)} # noqa: E501 contract_0 = pre.deploy_contract( # noqa: F841 code=Op.POP( Op.CALL( gas=0x7D0, - address=0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, + address=contract_1, value=0x0, args_offset=0x1E, args_size=0x1, @@ -66,18 +72,6 @@ def test_return_test( + Op.RETURN(offset=0x1E, size=0x2) + Op.STOP, nonce=0, - address=Address(0x194F5374FCE5EDBC8E2A8697C15331677E6EBF0B), # noqa: E501 - ) - pre[sender] = Account(balance=0x989680) - # Source: lll - # {(MSTORE 0 0x15) (RETURN 31 1)} - contract_1 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x0, value=0x15) - + Op.RETURN(offset=0x1F, size=0x1) - + Op.STOP, - balance=0x186A0, - nonce=0, - address=Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stInitCodeTest/test_transaction_create_stop_in_initcode.py b/tests/ported_static/stInitCodeTest/test_transaction_create_stop_in_initcode.py index e4e8f335ae2..15156479273 100644 --- a/tests/ported_static/stInitCodeTest/test_transaction_create_stop_in_initcode.py +++ b/tests/ported_static/stInitCodeTest/test_transaction_create_stop_in_initcode.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -26,16 +25,13 @@ ["state_tests/stInitCodeTest/TransactionCreateStopInInitcodeFiller.json"], ) @pytest.mark.valid_from("Cancun") -@pytest.mark.pre_alloc_mutable def test_transaction_create_stop_in_initcode( state_test: StateTestFiller, pre: Alloc, ) -> None: """Test_transaction_create_stop_in_initcode.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0xF4240) env = Environment( fee_recipient=coinbase, @@ -46,8 +42,6 @@ def test_transaction_create_stop_in_initcode( gas_limit=1000000, ) - pre[sender] = Account(balance=0xF4240) - tx = Transaction( sender=sender, to=None, diff --git a/tests/ported_static/stLogTests/test_log0_empty_mem.py b/tests/ported_static/stLogTests/test_log0_empty_mem.py index 9fb9491d611..8569ed72148 100644 --- a/tests/ported_static/stLogTests/test_log0_empty_mem.py +++ b/tests/ported_static/stLogTests/test_log0_empty_mem.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_log0_empty_mem( ) -> None: """Test_log0_empty_mem.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,6 +43,13 @@ def test_log0_empty_mem( gas_limit=1000000, ) + # Source: lll + # { (LOG0 0 0) } + addr = pre.deploy_contract( # noqa: F841 + code=Op.LOG0(offset=0x0, size=0x0) + Op.STOP, + balance=0xDE0B6B3A7640000, + nonce=0, + ) # Source: lll # { [[ 0 ]] (CALL 1000 23 0 0 0 0) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -53,7 +57,7 @@ def test_log0_empty_mem( key=0x0, value=Op.CALL( gas=0x3E8, - address=0xC2A943E837808399D9C1B946C6188739D4D4475E, + address=addr, value=0x17, args_offset=0x0, args_size=0x0, @@ -64,17 +68,7 @@ def test_log0_empty_mem( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x1E5597B6168FE79952CB2DE7AF91C3449BC95BD4), # noqa: E501 - ) - # Source: lll - # { (LOG0 0 0) } - addr = pre.deploy_contract( # noqa: F841 - code=Op.LOG0(offset=0x0, size=0x0) + Op.STOP, - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0xC2A943E837808399D9C1B946C6188739D4D4475E), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stLogTests/test_log0_log_mem_start_too_high.py b/tests/ported_static/stLogTests/test_log0_log_mem_start_too_high.py index 836c248590b..cddabdb16d0 100644 --- a/tests/ported_static/stLogTests/test_log0_log_mem_start_too_high.py +++ b/tests/ported_static/stLogTests/test_log0_log_mem_start_too_high.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_log0_log_mem_start_too_high( ) -> None: """Test_log0_log_mem_start_too_high.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,6 +43,21 @@ def test_log0_log_mem_start_too_high( gas_limit=1000000, ) + # Source: lll + # { (MSTORE 0 0xaabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd) (LOG0 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 1) } # noqa: E501 + addr = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE( + offset=0x0, + value=0xAABBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCDD, # noqa: E501 + ) + + Op.LOG0( + offset=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, # noqa: E501 + size=0x1, + ) + + Op.STOP, + balance=0xDE0B6B3A7640000, + nonce=0, + ) # Source: lll # { [[ 0 ]] (CALL 1000 23 0 0 0 0) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -53,7 +65,7 @@ def test_log0_log_mem_start_too_high( key=0x0, value=Op.CALL( gas=0x3E8, - address=0x4E46DD6CCD823BBE05D8CEAF0CA778101F8D8E6B, + address=addr, value=0x17, args_offset=0x0, args_size=0x0, @@ -64,25 +76,7 @@ def test_log0_log_mem_start_too_high( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x1E5597B6168FE79952CB2DE7AF91C3449BC95BD4), # noqa: E501 - ) - # Source: lll - # { (MSTORE 0 0xaabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd) (LOG0 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 1) } # noqa: E501 - addr = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE( - offset=0x0, - value=0xAABBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCDD, # noqa: E501 - ) - + Op.LOG0( - offset=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, # noqa: E501 - size=0x1, - ) - + Op.STOP, - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0x4E46DD6CCD823BBE05D8CEAF0CA778101F8D8E6B), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stLogTests/test_log0_log_memsize_too_high.py b/tests/ported_static/stLogTests/test_log0_log_memsize_too_high.py index 3ae97a5aa54..1a45b8be972 100644 --- a/tests/ported_static/stLogTests/test_log0_log_memsize_too_high.py +++ b/tests/ported_static/stLogTests/test_log0_log_memsize_too_high.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_log0_log_memsize_too_high( ) -> None: """Test_log0_log_memsize_too_high.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,6 +43,21 @@ def test_log0_log_memsize_too_high( gas_limit=1000000, ) + # Source: lll + # { (MSTORE 0 0xaabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd) (LOG0 1 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) } # noqa: E501 + addr = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE( + offset=0x0, + value=0xAABBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCDD, # noqa: E501 + ) + + Op.LOG0( + offset=0x1, + size=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, # noqa: E501 + ) + + Op.STOP, + balance=0xDE0B6B3A7640000, + nonce=0, + ) # Source: lll # { [[ 0 ]] (CALL 1000 23 0 0 0 0) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -53,7 +65,7 @@ def test_log0_log_memsize_too_high( key=0x0, value=Op.CALL( gas=0x3E8, - address=0x6573BB447199FC94C98AD0F26068653C70DA4044, + address=addr, value=0x17, args_offset=0x0, args_size=0x0, @@ -64,25 +76,7 @@ def test_log0_log_memsize_too_high( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x1E5597B6168FE79952CB2DE7AF91C3449BC95BD4), # noqa: E501 - ) - # Source: lll - # { (MSTORE 0 0xaabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd) (LOG0 1 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) } # noqa: E501 - addr = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE( - offset=0x0, - value=0xAABBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCDD, # noqa: E501 - ) - + Op.LOG0( - offset=0x1, - size=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, # noqa: E501 - ) - + Op.STOP, - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0x6573BB447199FC94C98AD0F26068653C70DA4044), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stLogTests/test_log0_log_memsize_zero.py b/tests/ported_static/stLogTests/test_log0_log_memsize_zero.py index 84c0ed789bf..c65a16813a5 100644 --- a/tests/ported_static/stLogTests/test_log0_log_memsize_zero.py +++ b/tests/ported_static/stLogTests/test_log0_log_memsize_zero.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_log0_log_memsize_zero( ) -> None: """Test_log0_log_memsize_zero.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,6 +43,18 @@ def test_log0_log_memsize_zero( gas_limit=1000000, ) + # Source: lll + # { (MSTORE 0 0xaabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd) (LOG0 1 0) } # noqa: E501 + addr = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE( + offset=0x0, + value=0xAABBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCDD, # noqa: E501 + ) + + Op.LOG0(offset=0x1, size=0x0) + + Op.STOP, + balance=0xDE0B6B3A7640000, + nonce=0, + ) # Source: lll # { [[ 0 ]] (CALL 1000 23 0 0 0 0) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -53,7 +62,7 @@ def test_log0_log_memsize_zero( key=0x0, value=Op.CALL( gas=0x3E8, - address=0x2F70A6BCEE18358A07F12FF4630E0A802D8C293A, + address=addr, value=0x17, args_offset=0x0, args_size=0x0, @@ -64,22 +73,7 @@ def test_log0_log_memsize_zero( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x1E5597B6168FE79952CB2DE7AF91C3449BC95BD4), # noqa: E501 - ) - # Source: lll - # { (MSTORE 0 0xaabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd) (LOG0 1 0) } # noqa: E501 - addr = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE( - offset=0x0, - value=0xAABBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCDD, # noqa: E501 - ) - + Op.LOG0(offset=0x1, size=0x0) - + Op.STOP, - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0x2F70A6BCEE18358A07F12FF4630E0A802D8C293A), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stLogTests/test_log0_non_empty_mem.py b/tests/ported_static/stLogTests/test_log0_non_empty_mem.py index b4bbb933d39..ade885f9145 100644 --- a/tests/ported_static/stLogTests/test_log0_non_empty_mem.py +++ b/tests/ported_static/stLogTests/test_log0_non_empty_mem.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_log0_non_empty_mem( ) -> None: """Test_log0_non_empty_mem.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,6 +43,18 @@ def test_log0_non_empty_mem( gas_limit=1000000, ) + # Source: lll + # { (MSTORE 0 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) (LOG0 0 32) } # noqa: E501 + addr = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE( + offset=0x0, + value=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, # noqa: E501 + ) + + Op.LOG0(offset=0x0, size=0x20) + + Op.STOP, + balance=0xDE0B6B3A7640000, + nonce=0, + ) # Source: lll # { [[ 0 ]] (CALL 1000 23 0 0 0 0) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -53,7 +62,7 @@ def test_log0_non_empty_mem( key=0x0, value=Op.CALL( gas=0x3E8, - address=0x86BB6680BEC59591FA113B66365D1BF87A4C6910, + address=addr, value=0x17, args_offset=0x0, args_size=0x0, @@ -64,22 +73,7 @@ def test_log0_non_empty_mem( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x1E5597B6168FE79952CB2DE7AF91C3449BC95BD4), # noqa: E501 - ) - # Source: lll - # { (MSTORE 0 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) (LOG0 0 32) } # noqa: E501 - addr = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE( - offset=0x0, - value=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, # noqa: E501 - ) - + Op.LOG0(offset=0x0, size=0x20) - + Op.STOP, - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0x86BB6680BEC59591FA113B66365D1BF87A4C6910), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stLogTests/test_log0_non_empty_mem_log_mem_size1.py b/tests/ported_static/stLogTests/test_log0_non_empty_mem_log_mem_size1.py index 84e1cb5e27e..30dbc528cf9 100644 --- a/tests/ported_static/stLogTests/test_log0_non_empty_mem_log_mem_size1.py +++ b/tests/ported_static/stLogTests/test_log0_non_empty_mem_log_mem_size1.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_log0_non_empty_mem_log_mem_size1( ) -> None: """Test_log0_non_empty_mem_log_mem_size1.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,6 +43,18 @@ def test_log0_non_empty_mem_log_mem_size1( gas_limit=1000000, ) + # Source: lll + # { (MSTORE 0 0xaabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd) (LOG0 0 1) } # noqa: E501 + addr = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE( + offset=0x0, + value=0xAABBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCDD, # noqa: E501 + ) + + Op.LOG0(offset=0x0, size=0x1) + + Op.STOP, + balance=0xDE0B6B3A7640000, + nonce=0, + ) # Source: lll # { [[ 0 ]] (CALL 1000 23 0 0 0 0) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -53,7 +62,7 @@ def test_log0_non_empty_mem_log_mem_size1( key=0x0, value=Op.CALL( gas=0x3E8, - address=0x2DA68E115CD98F7D70E0B7CFABE76581FD2D667, + address=addr, value=0x17, args_offset=0x0, args_size=0x0, @@ -64,22 +73,7 @@ def test_log0_non_empty_mem_log_mem_size1( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x1E5597B6168FE79952CB2DE7AF91C3449BC95BD4), # noqa: E501 - ) - # Source: lll - # { (MSTORE 0 0xaabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd) (LOG0 0 1) } # noqa: E501 - addr = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE( - offset=0x0, - value=0xAABBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCDD, # noqa: E501 - ) - + Op.LOG0(offset=0x0, size=0x1) - + Op.STOP, - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0x02DA68E115CD98F7D70E0B7CFABE76581FD2D667), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stLogTests/test_log0_non_empty_mem_log_mem_size1_log_mem_start31.py b/tests/ported_static/stLogTests/test_log0_non_empty_mem_log_mem_size1_log_mem_start31.py index 0a97323c3b7..588dc0232c1 100644 --- a/tests/ported_static/stLogTests/test_log0_non_empty_mem_log_mem_size1_log_mem_start31.py +++ b/tests/ported_static/stLogTests/test_log0_non_empty_mem_log_mem_size1_log_mem_start31.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_log0_non_empty_mem_log_mem_size1_log_mem_start31( ) -> None: """Test_log0_non_empty_mem_log_mem_size1_log_mem_start31.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -48,6 +45,18 @@ def test_log0_non_empty_mem_log_mem_size1_log_mem_start31( gas_limit=1000000, ) + # Source: lll + # { (MSTORE 0 0xaabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd) (LOG0 31 1) } # noqa: E501 + addr = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE( + offset=0x0, + value=0xAABBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCDD, # noqa: E501 + ) + + Op.LOG0(offset=0x1F, size=0x1) + + Op.STOP, + balance=0xDE0B6B3A7640000, + nonce=0, + ) # Source: lll # { [[ 0 ]] (CALL 1000 23 0 0 0 0) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -55,7 +64,7 @@ def test_log0_non_empty_mem_log_mem_size1_log_mem_start31( key=0x0, value=Op.CALL( gas=0x3E8, - address=0x897FEE72AFB437BE678EE00C486726DA08ADB887, + address=addr, value=0x17, args_offset=0x0, args_size=0x0, @@ -66,22 +75,7 @@ def test_log0_non_empty_mem_log_mem_size1_log_mem_start31( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x1E5597B6168FE79952CB2DE7AF91C3449BC95BD4), # noqa: E501 - ) - # Source: lll - # { (MSTORE 0 0xaabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd) (LOG0 31 1) } # noqa: E501 - addr = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE( - offset=0x0, - value=0xAABBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCDD, # noqa: E501 - ) - + Op.LOG0(offset=0x1F, size=0x1) - + Op.STOP, - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0x897FEE72AFB437BE678EE00C486726DA08ADB887), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stLogTests/test_log1_caller.py b/tests/ported_static/stLogTests/test_log1_caller.py index 28c4c58fe0d..1047550d155 100644 --- a/tests/ported_static/stLogTests/test_log1_caller.py +++ b/tests/ported_static/stLogTests/test_log1_caller.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_log1_caller( ) -> None: """Test_log1_caller.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,6 +43,15 @@ def test_log1_caller( gas_limit=1000000, ) + # Source: lll + # { (MSTORE8 0 0xff) (LOG1 0 32 (CALLER)) } + addr = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE8(offset=0x0, value=0xFF) + + Op.LOG1(offset=0x0, size=0x20, topic_1=Op.CALLER) + + Op.STOP, + balance=0xDE0B6B3A7640000, + nonce=0, + ) # Source: lll # { [[ 0 ]] (CALL 1000 23 0 0 0 0) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -53,7 +59,7 @@ def test_log1_caller( key=0x0, value=Op.CALL( gas=0x3E8, - address=0x488E90E8584A9B411FD53CFBB85544DE674BB24F, + address=addr, value=0x17, args_offset=0x0, args_size=0x0, @@ -64,19 +70,7 @@ def test_log1_caller( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x1E5597B6168FE79952CB2DE7AF91C3449BC95BD4), # noqa: E501 - ) - # Source: lll - # { (MSTORE8 0 0xff) (LOG1 0 32 (CALLER)) } - addr = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE8(offset=0x0, value=0xFF) - + Op.LOG1(offset=0x0, size=0x20, topic_1=Op.CALLER) - + Op.STOP, - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0x488E90E8584A9B411FD53CFBB85544DE674BB24F), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stLogTests/test_log1_empty_mem.py b/tests/ported_static/stLogTests/test_log1_empty_mem.py index 09d975a868f..c4a3eac61c4 100644 --- a/tests/ported_static/stLogTests/test_log1_empty_mem.py +++ b/tests/ported_static/stLogTests/test_log1_empty_mem.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_log1_empty_mem( ) -> None: """Test_log1_empty_mem.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,6 +43,13 @@ def test_log1_empty_mem( gas_limit=1000000, ) + # Source: lll + # { (LOG1 0 0 0) } + addr = pre.deploy_contract( # noqa: F841 + code=Op.LOG1(offset=0x0, size=0x0, topic_1=0x0) + Op.STOP, + balance=0xDE0B6B3A7640000, + nonce=0, + ) # Source: lll # { [[ 0 ]] (CALL 1000 23 0 0 0 0) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -53,7 +57,7 @@ def test_log1_empty_mem( key=0x0, value=Op.CALL( gas=0x3E8, - address=0xA86CBC14A38774A22B21CC067FF70DD74CC18E7F, + address=addr, value=0x17, args_offset=0x0, args_size=0x0, @@ -64,17 +68,7 @@ def test_log1_empty_mem( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x1E5597B6168FE79952CB2DE7AF91C3449BC95BD4), # noqa: E501 - ) - # Source: lll - # { (LOG1 0 0 0) } - addr = pre.deploy_contract( # noqa: F841 - code=Op.LOG1(offset=0x0, size=0x0, topic_1=0x0) + Op.STOP, - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0xA86CBC14A38774A22B21CC067FF70DD74CC18E7F), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stLogTests/test_log1_log_mem_start_too_high.py b/tests/ported_static/stLogTests/test_log1_log_mem_start_too_high.py index 480acfd7a72..cc40876e27e 100644 --- a/tests/ported_static/stLogTests/test_log1_log_mem_start_too_high.py +++ b/tests/ported_static/stLogTests/test_log1_log_mem_start_too_high.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_log1_log_mem_start_too_high( ) -> None: """Test_log1_log_mem_start_too_high.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,6 +43,22 @@ def test_log1_log_mem_start_too_high( gas_limit=1000000, ) + # Source: lll + # { (MSTORE 0 0xaabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd) (LOG1 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 1 0) } # noqa: E501 + addr = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE( + offset=0x0, + value=0xAABBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCDD, # noqa: E501 + ) + + Op.LOG1( + offset=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, # noqa: E501 + size=0x1, + topic_1=0x0, + ) + + Op.STOP, + balance=0xDE0B6B3A7640000, + nonce=0, + ) # Source: lll # { [[ 0 ]] (CALL 1000 23 0 0 0 0) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -53,7 +66,7 @@ def test_log1_log_mem_start_too_high( key=0x0, value=Op.CALL( gas=0x3E8, - address=0x2884BD4A36D3BF28249C493EEFC971380A638684, + address=addr, value=0x17, args_offset=0x0, args_size=0x0, @@ -64,26 +77,7 @@ def test_log1_log_mem_start_too_high( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x1E5597B6168FE79952CB2DE7AF91C3449BC95BD4), # noqa: E501 - ) - # Source: lll - # { (MSTORE 0 0xaabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd) (LOG1 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 1 0) } # noqa: E501 - addr = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE( - offset=0x0, - value=0xAABBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCDD, # noqa: E501 - ) - + Op.LOG1( - offset=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, # noqa: E501 - size=0x1, - topic_1=0x0, - ) - + Op.STOP, - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0x2884BD4A36D3BF28249C493EEFC971380A638684), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stLogTests/test_log1_log_memsize_too_high.py b/tests/ported_static/stLogTests/test_log1_log_memsize_too_high.py index 5a65ba8f2fa..22c8d411255 100644 --- a/tests/ported_static/stLogTests/test_log1_log_memsize_too_high.py +++ b/tests/ported_static/stLogTests/test_log1_log_memsize_too_high.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_log1_log_memsize_too_high( ) -> None: """Test_log1_log_memsize_too_high.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,6 +43,22 @@ def test_log1_log_memsize_too_high( gas_limit=1000000, ) + # Source: lll + # { (MSTORE 0 0xaabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd) (LOG1 1 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0) } # noqa: E501 + addr = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE( + offset=0x0, + value=0xAABBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCDD, # noqa: E501 + ) + + Op.LOG1( + offset=0x1, + size=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, # noqa: E501 + topic_1=0x0, + ) + + Op.STOP, + balance=0xDE0B6B3A7640000, + nonce=0, + ) # Source: lll # { [[ 0 ]] (CALL 1000 23 0 0 0 0) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -53,7 +66,7 @@ def test_log1_log_memsize_too_high( key=0x0, value=Op.CALL( gas=0x3E8, - address=0x232172C10FC2B2CB5CCBC4349B5D177EB640EDC0, + address=addr, value=0x17, args_offset=0x0, args_size=0x0, @@ -64,26 +77,7 @@ def test_log1_log_memsize_too_high( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x1E5597B6168FE79952CB2DE7AF91C3449BC95BD4), # noqa: E501 - ) - # Source: lll - # { (MSTORE 0 0xaabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd) (LOG1 1 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0) } # noqa: E501 - addr = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE( - offset=0x0, - value=0xAABBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCDD, # noqa: E501 - ) - + Op.LOG1( - offset=0x1, - size=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, # noqa: E501 - topic_1=0x0, - ) - + Op.STOP, - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0x232172C10FC2B2CB5CCBC4349B5D177EB640EDC0), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stLogTests/test_log1_log_memsize_zero.py b/tests/ported_static/stLogTests/test_log1_log_memsize_zero.py index f325df6918c..1c69477bcff 100644 --- a/tests/ported_static/stLogTests/test_log1_log_memsize_zero.py +++ b/tests/ported_static/stLogTests/test_log1_log_memsize_zero.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_log1_log_memsize_zero( ) -> None: """Test_log1_log_memsize_zero.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,6 +43,18 @@ def test_log1_log_memsize_zero( gas_limit=1000000, ) + # Source: lll + # { (MSTORE 0 0xaabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd) (LOG1 1 0 0) } # noqa: E501 + addr = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE( + offset=0x0, + value=0xAABBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCDD, # noqa: E501 + ) + + Op.LOG1(offset=0x1, size=0x0, topic_1=0x0) + + Op.STOP, + balance=0xDE0B6B3A7640000, + nonce=0, + ) # Source: lll # { [[ 0 ]] (CALL 1000 23 0 0 0 0) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -53,7 +62,7 @@ def test_log1_log_memsize_zero( key=0x0, value=Op.CALL( gas=0x3E8, - address=0xC1F290174E61D4F7F40C5E11677591C31E0F63C7, + address=addr, value=0x17, args_offset=0x0, args_size=0x0, @@ -64,22 +73,7 @@ def test_log1_log_memsize_zero( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x1E5597B6168FE79952CB2DE7AF91C3449BC95BD4), # noqa: E501 - ) - # Source: lll - # { (MSTORE 0 0xaabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd) (LOG1 1 0 0) } # noqa: E501 - addr = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE( - offset=0x0, - value=0xAABBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCDD, # noqa: E501 - ) - + Op.LOG1(offset=0x1, size=0x0, topic_1=0x0) - + Op.STOP, - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0xC1F290174E61D4F7F40C5E11677591C31E0F63C7), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stLogTests/test_log1_max_topic.py b/tests/ported_static/stLogTests/test_log1_max_topic.py index e029f52403d..c53b2d36149 100644 --- a/tests/ported_static/stLogTests/test_log1_max_topic.py +++ b/tests/ported_static/stLogTests/test_log1_max_topic.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_log1_max_topic( ) -> None: """Test_log1_max_topic.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,6 +43,22 @@ def test_log1_max_topic( gas_limit=1000000, ) + # Source: lll + # { (MSTORE 0 0xaabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd) (LOG1 0 32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) } # noqa: E501 + addr = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE( + offset=0x0, + value=0xAABBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCDD, # noqa: E501 + ) + + Op.LOG1( + offset=0x0, + size=0x20, + topic_1=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, # noqa: E501 + ) + + Op.STOP, + balance=0xDE0B6B3A7640000, + nonce=0, + ) # Source: lll # { [[ 0 ]] (CALL 1000 23 0 0 0 0) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -53,7 +66,7 @@ def test_log1_max_topic( key=0x0, value=Op.CALL( gas=0x3E8, - address=0xFAA3ACCE157A3DEDD9D750DD925F6067D252752E, + address=addr, value=0x17, args_offset=0x0, args_size=0x0, @@ -64,26 +77,7 @@ def test_log1_max_topic( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x1E5597B6168FE79952CB2DE7AF91C3449BC95BD4), # noqa: E501 - ) - # Source: lll - # { (MSTORE 0 0xaabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd) (LOG1 0 32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) } # noqa: E501 - addr = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE( - offset=0x0, - value=0xAABBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCDD, # noqa: E501 - ) - + Op.LOG1( - offset=0x0, - size=0x20, - topic_1=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, # noqa: E501 - ) - + Op.STOP, - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0xFAA3ACCE157A3DEDD9D750DD925F6067D252752E), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stLogTests/test_log1_non_empty_mem.py b/tests/ported_static/stLogTests/test_log1_non_empty_mem.py index 9a34219bd54..87119697c9c 100644 --- a/tests/ported_static/stLogTests/test_log1_non_empty_mem.py +++ b/tests/ported_static/stLogTests/test_log1_non_empty_mem.py @@ -46,6 +46,20 @@ def test_log1_non_empty_mem( gas_limit=1000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: lll + # { (MSTORE 0 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) (LOG1 0 32 0) } # noqa: E501 + addr = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE( + offset=0x0, + value=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, # noqa: E501 + ) + + Op.LOG1(offset=0x0, size=0x20, topic_1=0x0) + + Op.STOP, + balance=0xDE0B6B3A7640000, + nonce=0, + address=Address(0x6727EA02222B905F7708C2B4CB20898F34DFF1DD), # noqa: E501 + ) # Source: lll # { [[ 0 ]] (CALL 1000 23 0 0 0 0) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -66,20 +80,6 @@ def test_log1_non_empty_mem( nonce=0, address=Address(0x1E5597B6168FE79952CB2DE7AF91C3449BC95BD4), # noqa: E501 ) - # Source: lll - # { (MSTORE 0 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) (LOG1 0 32 0) } # noqa: E501 - addr = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE( - offset=0x0, - value=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, # noqa: E501 - ) - + Op.LOG1(offset=0x0, size=0x20, topic_1=0x0) - + Op.STOP, - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0x6727EA02222B905F7708C2B4CB20898F34DFF1DD), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stLogTests/test_log1_non_empty_mem_log_mem_size1.py b/tests/ported_static/stLogTests/test_log1_non_empty_mem_log_mem_size1.py index 1ca4825fbb6..415c2cf396f 100644 --- a/tests/ported_static/stLogTests/test_log1_non_empty_mem_log_mem_size1.py +++ b/tests/ported_static/stLogTests/test_log1_non_empty_mem_log_mem_size1.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_log1_non_empty_mem_log_mem_size1( ) -> None: """Test_log1_non_empty_mem_log_mem_size1.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,6 +43,18 @@ def test_log1_non_empty_mem_log_mem_size1( gas_limit=1000000, ) + # Source: lll + # { (MSTORE 0 0xaabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd) (LOG1 0 1 0) } # noqa: E501 + addr = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE( + offset=0x0, + value=0xAABBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCDD, # noqa: E501 + ) + + Op.LOG1(offset=0x0, size=0x1, topic_1=0x0) + + Op.STOP, + balance=0xDE0B6B3A7640000, + nonce=0, + ) # Source: lll # { [[ 0 ]] (CALL 1000 23 0 0 0 0) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -53,7 +62,7 @@ def test_log1_non_empty_mem_log_mem_size1( key=0x0, value=Op.CALL( gas=0x3E8, - address=0xAA71C9D8F626B8430A90ADE1BC39F086C51A2E13, + address=addr, value=0x17, args_offset=0x0, args_size=0x0, @@ -64,22 +73,7 @@ def test_log1_non_empty_mem_log_mem_size1( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x1E5597B6168FE79952CB2DE7AF91C3449BC95BD4), # noqa: E501 - ) - # Source: lll - # { (MSTORE 0 0xaabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd) (LOG1 0 1 0) } # noqa: E501 - addr = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE( - offset=0x0, - value=0xAABBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCDD, # noqa: E501 - ) - + Op.LOG1(offset=0x0, size=0x1, topic_1=0x0) - + Op.STOP, - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0xAA71C9D8F626B8430A90ADE1BC39F086C51A2E13), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stLogTests/test_log1_non_empty_mem_log_mem_size1_log_mem_start31.py b/tests/ported_static/stLogTests/test_log1_non_empty_mem_log_mem_size1_log_mem_start31.py index abf92753a06..d459d004d50 100644 --- a/tests/ported_static/stLogTests/test_log1_non_empty_mem_log_mem_size1_log_mem_start31.py +++ b/tests/ported_static/stLogTests/test_log1_non_empty_mem_log_mem_size1_log_mem_start31.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_log1_non_empty_mem_log_mem_size1_log_mem_start31( ) -> None: """Test_log1_non_empty_mem_log_mem_size1_log_mem_start31.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -48,6 +45,18 @@ def test_log1_non_empty_mem_log_mem_size1_log_mem_start31( gas_limit=1000000, ) + # Source: lll + # { (MSTORE 0 0xaabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd) (LOG1 31 1 0) } # noqa: E501 + addr = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE( + offset=0x0, + value=0xAABBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCDD, # noqa: E501 + ) + + Op.LOG1(offset=0x1F, size=0x1, topic_1=0x0) + + Op.STOP, + balance=0xDE0B6B3A7640000, + nonce=0, + ) # Source: lll # { [[ 0 ]] (CALL 1000 23 0 0 0 0) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -55,7 +64,7 @@ def test_log1_non_empty_mem_log_mem_size1_log_mem_start31( key=0x0, value=Op.CALL( gas=0x3E8, - address=0xB0C981060788593ED6C8A538DE7CBDC696D8D76C, + address=addr, value=0x17, args_offset=0x0, args_size=0x0, @@ -66,22 +75,7 @@ def test_log1_non_empty_mem_log_mem_size1_log_mem_start31( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x1E5597B6168FE79952CB2DE7AF91C3449BC95BD4), # noqa: E501 - ) - # Source: lll - # { (MSTORE 0 0xaabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd) (LOG1 31 1 0) } # noqa: E501 - addr = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE( - offset=0x0, - value=0xAABBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCDD, # noqa: E501 - ) - + Op.LOG1(offset=0x1F, size=0x1, topic_1=0x0) - + Op.STOP, - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0xB0C981060788593ED6C8A538DE7CBDC696D8D76C), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stLogTests/test_log2_caller.py b/tests/ported_static/stLogTests/test_log2_caller.py index a953a227c99..f719f43f081 100644 --- a/tests/ported_static/stLogTests/test_log2_caller.py +++ b/tests/ported_static/stLogTests/test_log2_caller.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_log2_caller( ) -> None: """Test_log2_caller.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,6 +43,15 @@ def test_log2_caller( gas_limit=1000000, ) + # Source: lll + # { (MSTORE8 0 0xff) (LOG2 0 32 0 (CALLER) ) } + addr = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE8(offset=0x0, value=0xFF) + + Op.LOG2(offset=0x0, size=0x20, topic_1=0x0, topic_2=Op.CALLER) + + Op.STOP, + balance=0xDE0B6B3A7640000, + nonce=0, + ) # Source: lll # { [[ 0 ]] (CALL 1000 23 0 0 0 0) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -53,7 +59,7 @@ def test_log2_caller( key=0x0, value=Op.CALL( gas=0x3E8, - address=0x861CCCBD560D81A33AAC05190E986540663C6BBA, + address=addr, value=0x17, args_offset=0x0, args_size=0x0, @@ -64,19 +70,7 @@ def test_log2_caller( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x1E5597B6168FE79952CB2DE7AF91C3449BC95BD4), # noqa: E501 - ) - # Source: lll - # { (MSTORE8 0 0xff) (LOG2 0 32 0 (CALLER) ) } - addr = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE8(offset=0x0, value=0xFF) - + Op.LOG2(offset=0x0, size=0x20, topic_1=0x0, topic_2=Op.CALLER) - + Op.STOP, - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0x861CCCBD560D81A33AAC05190E986540663C6BBA), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stLogTests/test_log2_empty_mem.py b/tests/ported_static/stLogTests/test_log2_empty_mem.py index b2f67b628b0..1413a36e56d 100644 --- a/tests/ported_static/stLogTests/test_log2_empty_mem.py +++ b/tests/ported_static/stLogTests/test_log2_empty_mem.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_log2_empty_mem( ) -> None: """Test_log2_empty_mem.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,6 +43,13 @@ def test_log2_empty_mem( gas_limit=1000000, ) + # Source: lll + # { (LOG2 0 0 0 0) } + addr = pre.deploy_contract( # noqa: F841 + code=Op.LOG2(offset=0x0, size=0x0, topic_1=0x0, topic_2=0x0) + Op.STOP, + balance=0xDE0B6B3A7640000, + nonce=0, + ) # Source: lll # { [[ 0 ]] (CALL 1000 23 0 0 0 0) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -53,7 +57,7 @@ def test_log2_empty_mem( key=0x0, value=Op.CALL( gas=0x3E8, - address=0xE0A9386910935A6148822DDB2A8361DF15EF268F, + address=addr, value=0x17, args_offset=0x0, args_size=0x0, @@ -64,17 +68,7 @@ def test_log2_empty_mem( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x1E5597B6168FE79952CB2DE7AF91C3449BC95BD4), # noqa: E501 - ) - # Source: lll - # { (LOG2 0 0 0 0) } - addr = pre.deploy_contract( # noqa: F841 - code=Op.LOG2(offset=0x0, size=0x0, topic_1=0x0, topic_2=0x0) + Op.STOP, - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0xE0A9386910935A6148822DDB2A8361DF15EF268F), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stLogTests/test_log2_log_mem_start_too_high.py b/tests/ported_static/stLogTests/test_log2_log_mem_start_too_high.py index 67855b705af..b3e9f3ea501 100644 --- a/tests/ported_static/stLogTests/test_log2_log_mem_start_too_high.py +++ b/tests/ported_static/stLogTests/test_log2_log_mem_start_too_high.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_log2_log_mem_start_too_high( ) -> None: """Test_log2_log_mem_start_too_high.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,6 +43,23 @@ def test_log2_log_mem_start_too_high( gas_limit=1000000, ) + # Source: lll + # { (MSTORE 0 0xaabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd) (LOG2 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 1 0 0) } # noqa: E501 + addr = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE( + offset=0x0, + value=0xAABBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCDD, # noqa: E501 + ) + + Op.LOG2( + offset=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, # noqa: E501 + size=0x1, + topic_1=0x0, + topic_2=0x0, + ) + + Op.STOP, + balance=0xDE0B6B3A7640000, + nonce=0, + ) # Source: lll # { [[ 0 ]] (CALL 1000 23 0 0 0 0) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -53,7 +67,7 @@ def test_log2_log_mem_start_too_high( key=0x0, value=Op.CALL( gas=0x3E8, - address=0x9C6A28DAEC9E2AF2FA5C362EEDC028ACD207E63B, + address=addr, value=0x17, args_offset=0x0, args_size=0x0, @@ -64,27 +78,7 @@ def test_log2_log_mem_start_too_high( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x1E5597B6168FE79952CB2DE7AF91C3449BC95BD4), # noqa: E501 - ) - # Source: lll - # { (MSTORE 0 0xaabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd) (LOG2 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 1 0 0) } # noqa: E501 - addr = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE( - offset=0x0, - value=0xAABBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCDD, # noqa: E501 - ) - + Op.LOG2( - offset=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, # noqa: E501 - size=0x1, - topic_1=0x0, - topic_2=0x0, - ) - + Op.STOP, - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0x9C6A28DAEC9E2AF2FA5C362EEDC028ACD207E63B), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stLogTests/test_log2_log_memsize_too_high.py b/tests/ported_static/stLogTests/test_log2_log_memsize_too_high.py index 4a2ef34539d..2e03f0322f3 100644 --- a/tests/ported_static/stLogTests/test_log2_log_memsize_too_high.py +++ b/tests/ported_static/stLogTests/test_log2_log_memsize_too_high.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_log2_log_memsize_too_high( ) -> None: """Test_log2_log_memsize_too_high.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,6 +43,23 @@ def test_log2_log_memsize_too_high( gas_limit=1000000, ) + # Source: lll + # { (MSTORE 0 0xaabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd) (LOG2 1 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0 0) } # noqa: E501 + addr = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE( + offset=0x0, + value=0xAABBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCDD, # noqa: E501 + ) + + Op.LOG2( + offset=0x1, + size=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, # noqa: E501 + topic_1=0x0, + topic_2=0x0, + ) + + Op.STOP, + balance=0xDE0B6B3A7640000, + nonce=0, + ) # Source: lll # { [[ 0 ]] (CALL 1000 23 0 0 0 0) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -53,7 +67,7 @@ def test_log2_log_memsize_too_high( key=0x0, value=Op.CALL( gas=0x3E8, - address=0x3BAD71F49AD0CABDA27D388877A6CF157E9A3471, + address=addr, value=0x17, args_offset=0x0, args_size=0x0, @@ -64,27 +78,7 @@ def test_log2_log_memsize_too_high( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x1E5597B6168FE79952CB2DE7AF91C3449BC95BD4), # noqa: E501 - ) - # Source: lll - # { (MSTORE 0 0xaabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd) (LOG2 1 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0 0) } # noqa: E501 - addr = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE( - offset=0x0, - value=0xAABBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCDD, # noqa: E501 - ) - + Op.LOG2( - offset=0x1, - size=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, # noqa: E501 - topic_1=0x0, - topic_2=0x0, - ) - + Op.STOP, - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0x3BAD71F49AD0CABDA27D388877A6CF157E9A3471), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stLogTests/test_log2_log_memsize_zero.py b/tests/ported_static/stLogTests/test_log2_log_memsize_zero.py index e59a0f8f026..e8dcfaf31d4 100644 --- a/tests/ported_static/stLogTests/test_log2_log_memsize_zero.py +++ b/tests/ported_static/stLogTests/test_log2_log_memsize_zero.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_log2_log_memsize_zero( ) -> None: """Test_log2_log_memsize_zero.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,6 +43,18 @@ def test_log2_log_memsize_zero( gas_limit=1000000, ) + # Source: lll + # { (MSTORE 0 0xaabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd) (LOG2 1 0 0 0) } # noqa: E501 + addr = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE( + offset=0x0, + value=0xAABBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCDD, # noqa: E501 + ) + + Op.LOG2(offset=0x1, size=0x0, topic_1=0x0, topic_2=0x0) + + Op.STOP, + balance=0xDE0B6B3A7640000, + nonce=0, + ) # Source: lll # { [[ 0 ]] (CALL 1000 23 0 0 0 0) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -53,7 +62,7 @@ def test_log2_log_memsize_zero( key=0x0, value=Op.CALL( gas=0x3E8, - address=0x5FE859FD0650FAB879E19018F55B76BE2E4C6391, + address=addr, value=0x17, args_offset=0x0, args_size=0x0, @@ -64,22 +73,7 @@ def test_log2_log_memsize_zero( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x1E5597B6168FE79952CB2DE7AF91C3449BC95BD4), # noqa: E501 - ) - # Source: lll - # { (MSTORE 0 0xaabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd) (LOG2 1 0 0 0) } # noqa: E501 - addr = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE( - offset=0x0, - value=0xAABBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCDD, # noqa: E501 - ) - + Op.LOG2(offset=0x1, size=0x0, topic_1=0x0, topic_2=0x0) - + Op.STOP, - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0x5FE859FD0650FAB879E19018F55B76BE2E4C6391), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stLogTests/test_log2_max_topic.py b/tests/ported_static/stLogTests/test_log2_max_topic.py index 53adc2e753f..b75f87756b4 100644 --- a/tests/ported_static/stLogTests/test_log2_max_topic.py +++ b/tests/ported_static/stLogTests/test_log2_max_topic.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_log2_max_topic( ) -> None: """Test_log2_max_topic.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,6 +43,23 @@ def test_log2_max_topic( gas_limit=1000000, ) + # Source: lll + # { (MSTORE 0 0xaabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd) (LOG2 0 32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) } # noqa: E501 + addr = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE( + offset=0x0, + value=0xAABBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCDD, # noqa: E501 + ) + + Op.LOG2( + offset=0x0, + size=0x20, + topic_1=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, # noqa: E501 + topic_2=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, # noqa: E501 + ) + + Op.STOP, + balance=0xDE0B6B3A7640000, + nonce=0, + ) # Source: lll # { [[ 0 ]] (CALL 1000 23 0 0 0 0) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -53,7 +67,7 @@ def test_log2_max_topic( key=0x0, value=Op.CALL( gas=0x3E8, - address=0x317504258A7AACAC178DA9B86E047C40C8A0A15B, + address=addr, value=0x17, args_offset=0x0, args_size=0x0, @@ -64,27 +78,7 @@ def test_log2_max_topic( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x1E5597B6168FE79952CB2DE7AF91C3449BC95BD4), # noqa: E501 - ) - # Source: lll - # { (MSTORE 0 0xaabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd) (LOG2 0 32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) } # noqa: E501 - addr = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE( - offset=0x0, - value=0xAABBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCDD, # noqa: E501 - ) - + Op.LOG2( - offset=0x0, - size=0x20, - topic_1=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, # noqa: E501 - topic_2=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, # noqa: E501 - ) - + Op.STOP, - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0x317504258A7AACAC178DA9B86E047C40C8A0A15B), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stLogTests/test_log2_non_empty_mem.py b/tests/ported_static/stLogTests/test_log2_non_empty_mem.py index b92d47ce8aa..2f1e7cd061b 100644 --- a/tests/ported_static/stLogTests/test_log2_non_empty_mem.py +++ b/tests/ported_static/stLogTests/test_log2_non_empty_mem.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_log2_non_empty_mem( ) -> None: """Test_log2_non_empty_mem.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,6 +43,18 @@ def test_log2_non_empty_mem( gas_limit=1000000, ) + # Source: lll + # { (MSTORE 0 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) (LOG2 0 32 0 0) } # noqa: E501 + addr = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE( + offset=0x0, + value=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, # noqa: E501 + ) + + Op.LOG2(offset=0x0, size=0x20, topic_1=0x0, topic_2=0x0) + + Op.STOP, + balance=0xDE0B6B3A7640000, + nonce=0, + ) # Source: lll # { [[ 0 ]] (CALL 1000 23 0 0 0 0) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -53,7 +62,7 @@ def test_log2_non_empty_mem( key=0x0, value=Op.CALL( gas=0x3E8, - address=0xFD7C64173AC47172BBAED3CC40C7ECCEE3BBE114, + address=addr, value=0x17, args_offset=0x0, args_size=0x0, @@ -64,22 +73,7 @@ def test_log2_non_empty_mem( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x1E5597B6168FE79952CB2DE7AF91C3449BC95BD4), # noqa: E501 - ) - # Source: lll - # { (MSTORE 0 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) (LOG2 0 32 0 0) } # noqa: E501 - addr = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE( - offset=0x0, - value=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, # noqa: E501 - ) - + Op.LOG2(offset=0x0, size=0x20, topic_1=0x0, topic_2=0x0) - + Op.STOP, - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0xFD7C64173AC47172BBAED3CC40C7ECCEE3BBE114), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stLogTests/test_log2_non_empty_mem_log_mem_size1.py b/tests/ported_static/stLogTests/test_log2_non_empty_mem_log_mem_size1.py index 509c5c59fd9..21c251780cd 100644 --- a/tests/ported_static/stLogTests/test_log2_non_empty_mem_log_mem_size1.py +++ b/tests/ported_static/stLogTests/test_log2_non_empty_mem_log_mem_size1.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_log2_non_empty_mem_log_mem_size1( ) -> None: """Test_log2_non_empty_mem_log_mem_size1.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,6 +43,18 @@ def test_log2_non_empty_mem_log_mem_size1( gas_limit=1000000, ) + # Source: lll + # { (MSTORE 0 0xaabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd) (LOG2 0 1 0 0) } # noqa: E501 + addr = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE( + offset=0x0, + value=0xAABBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCDD, # noqa: E501 + ) + + Op.LOG2(offset=0x0, size=0x1, topic_1=0x0, topic_2=0x0) + + Op.STOP, + balance=0xDE0B6B3A7640000, + nonce=0, + ) # Source: lll # { [[ 0 ]] (CALL 1000 23 0 0 0 0) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -53,7 +62,7 @@ def test_log2_non_empty_mem_log_mem_size1( key=0x0, value=Op.CALL( gas=0x3E8, - address=0x9B06D70A66BB79592EDCFA38DA878F8610EBC1A8, + address=addr, value=0x17, args_offset=0x0, args_size=0x0, @@ -64,22 +73,7 @@ def test_log2_non_empty_mem_log_mem_size1( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x1E5597B6168FE79952CB2DE7AF91C3449BC95BD4), # noqa: E501 - ) - # Source: lll - # { (MSTORE 0 0xaabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd) (LOG2 0 1 0 0) } # noqa: E501 - addr = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE( - offset=0x0, - value=0xAABBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCDD, # noqa: E501 - ) - + Op.LOG2(offset=0x0, size=0x1, topic_1=0x0, topic_2=0x0) - + Op.STOP, - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0x9B06D70A66BB79592EDCFA38DA878F8610EBC1A8), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stLogTests/test_log2_non_empty_mem_log_mem_size1_log_mem_start31.py b/tests/ported_static/stLogTests/test_log2_non_empty_mem_log_mem_size1_log_mem_start31.py index cc8cc5478a2..d717f6e86ee 100644 --- a/tests/ported_static/stLogTests/test_log2_non_empty_mem_log_mem_size1_log_mem_start31.py +++ b/tests/ported_static/stLogTests/test_log2_non_empty_mem_log_mem_size1_log_mem_start31.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_log2_non_empty_mem_log_mem_size1_log_mem_start31( ) -> None: """Test_log2_non_empty_mem_log_mem_size1_log_mem_start31.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -48,6 +45,18 @@ def test_log2_non_empty_mem_log_mem_size1_log_mem_start31( gas_limit=1000000, ) + # Source: lll + # { (MSTORE 0 0xaabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd) (LOG2 31 1 0 0) } # noqa: E501 + addr = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE( + offset=0x0, + value=0xAABBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCDD, # noqa: E501 + ) + + Op.LOG2(offset=0x1F, size=0x1, topic_1=0x0, topic_2=0x0) + + Op.STOP, + balance=0xDE0B6B3A7640000, + nonce=0, + ) # Source: lll # { [[ 0 ]] (CALL 1000 23 0 0 0 0) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -55,7 +64,7 @@ def test_log2_non_empty_mem_log_mem_size1_log_mem_start31( key=0x0, value=Op.CALL( gas=0x3E8, - address=0x54972C7257A6C4CDC7C3C144E8CCB3D8EB7AFE19, + address=addr, value=0x17, args_offset=0x0, args_size=0x0, @@ -66,22 +75,7 @@ def test_log2_non_empty_mem_log_mem_size1_log_mem_start31( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x1E5597B6168FE79952CB2DE7AF91C3449BC95BD4), # noqa: E501 - ) - # Source: lll - # { (MSTORE 0 0xaabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd) (LOG2 31 1 0 0) } # noqa: E501 - addr = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE( - offset=0x0, - value=0xAABBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCDD, # noqa: E501 - ) - + Op.LOG2(offset=0x1F, size=0x1, topic_1=0x0, topic_2=0x0) - + Op.STOP, - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0x54972C7257A6C4CDC7C3C144E8CCB3D8EB7AFE19), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stLogTests/test_log3_caller.py b/tests/ported_static/stLogTests/test_log3_caller.py index 60eb43c854c..8c7d121b848 100644 --- a/tests/ported_static/stLogTests/test_log3_caller.py +++ b/tests/ported_static/stLogTests/test_log3_caller.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_log3_caller( ) -> None: """Test_log3_caller.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,6 +43,17 @@ def test_log3_caller( gas_limit=1000000, ) + # Source: lll + # { (MSTORE8 0 0xff) (LOG3 0 32 0 0 (CALLER) ) } + addr = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE8(offset=0x0, value=0xFF) + + Op.LOG3( + offset=0x0, size=0x20, topic_1=0x0, topic_2=0x0, topic_3=Op.CALLER + ) + + Op.STOP, + balance=0xDE0B6B3A7640000, + nonce=0, + ) # Source: lll # { [[ 0 ]] (CALL 1000 23 0 0 0 0) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -53,7 +61,7 @@ def test_log3_caller( key=0x0, value=Op.CALL( gas=0x3E8, - address=0x6C5DA6457F756A77C392C72FE884F7F650428AEF, + address=addr, value=0x17, args_offset=0x0, args_size=0x0, @@ -64,21 +72,7 @@ def test_log3_caller( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x1E5597B6168FE79952CB2DE7AF91C3449BC95BD4), # noqa: E501 - ) - # Source: lll - # { (MSTORE8 0 0xff) (LOG3 0 32 0 0 (CALLER) ) } - addr = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE8(offset=0x0, value=0xFF) - + Op.LOG3( - offset=0x0, size=0x20, topic_1=0x0, topic_2=0x0, topic_3=Op.CALLER - ) - + Op.STOP, - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0x6C5DA6457F756A77C392C72FE884F7F650428AEF), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stLogTests/test_log3_empty_mem.py b/tests/ported_static/stLogTests/test_log3_empty_mem.py index 6553322b8ff..9f8d986475d 100644 --- a/tests/ported_static/stLogTests/test_log3_empty_mem.py +++ b/tests/ported_static/stLogTests/test_log3_empty_mem.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_log3_empty_mem( ) -> None: """Test_log3_empty_mem.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,6 +43,16 @@ def test_log3_empty_mem( gas_limit=1000000, ) + # Source: lll + # { (LOG3 0 0 0 0 0) } + addr = pre.deploy_contract( # noqa: F841 + code=Op.LOG3( + offset=0x0, size=0x0, topic_1=0x0, topic_2=0x0, topic_3=0x0 + ) + + Op.STOP, + balance=0xDE0B6B3A7640000, + nonce=0, + ) # Source: lll # { [[ 0 ]] (CALL 1000 23 0 0 0 0) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -53,7 +60,7 @@ def test_log3_empty_mem( key=0x0, value=Op.CALL( gas=0x3E8, - address=0x7314CC13D5F8CF58DB63F7C590A16C8CA956B249, + address=addr, value=0x17, args_offset=0x0, args_size=0x0, @@ -64,20 +71,7 @@ def test_log3_empty_mem( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x1E5597B6168FE79952CB2DE7AF91C3449BC95BD4), # noqa: E501 - ) - # Source: lll - # { (LOG3 0 0 0 0 0) } - addr = pre.deploy_contract( # noqa: F841 - code=Op.LOG3( - offset=0x0, size=0x0, topic_1=0x0, topic_2=0x0, topic_3=0x0 - ) - + Op.STOP, - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0x7314CC13D5F8CF58DB63F7C590A16C8CA956B249), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stLogTests/test_log3_log_mem_start_too_high.py b/tests/ported_static/stLogTests/test_log3_log_mem_start_too_high.py index cd4ea28c61b..c0b58437f75 100644 --- a/tests/ported_static/stLogTests/test_log3_log_mem_start_too_high.py +++ b/tests/ported_static/stLogTests/test_log3_log_mem_start_too_high.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_log3_log_mem_start_too_high( ) -> None: """Test_log3_log_mem_start_too_high.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,26 +43,6 @@ def test_log3_log_mem_start_too_high( gas_limit=1000000, ) - # Source: lll - # { [[ 0 ]] (CALL 1000 23 0 0 0 0) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.CALL( - gas=0x3E8, - address=0x1034F91C93DA34534EFF3F8EFA3A807A417E2496, - value=0x17, - args_offset=0x0, - args_size=0x0, - ret_offset=0x0, - ret_size=0x0, - ), - ) - + Op.STOP, - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0x1E5597B6168FE79952CB2DE7AF91C3449BC95BD4), # noqa: E501 - ) # Source: lll # { (MSTORE 0 0xaabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd) (LOG3 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 1 0 0 0) } # noqa: E501 addr = pre.deploy_contract( # noqa: F841 @@ -83,9 +60,26 @@ def test_log3_log_mem_start_too_high( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x1034F91C93DA34534EFF3F8EFA3A807A417E2496), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: lll + # { [[ 0 ]] (CALL 1000 23 0 0 0 0) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.CALL( + gas=0x3E8, + address=addr, + value=0x17, + args_offset=0x0, + args_size=0x0, + ret_offset=0x0, + ret_size=0x0, + ), + ) + + Op.STOP, + balance=0xDE0B6B3A7640000, + nonce=0, + ) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stLogTests/test_log3_log_memsize_too_high.py b/tests/ported_static/stLogTests/test_log3_log_memsize_too_high.py index cc560713c0e..b41f6cb0b79 100644 --- a/tests/ported_static/stLogTests/test_log3_log_memsize_too_high.py +++ b/tests/ported_static/stLogTests/test_log3_log_memsize_too_high.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_log3_log_memsize_too_high( ) -> None: """Test_log3_log_memsize_too_high.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,26 +43,6 @@ def test_log3_log_memsize_too_high( gas_limit=1000000, ) - # Source: lll - # { [[ 0 ]] (CALL 1000 23 0 0 0 0) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.CALL( - gas=0x3E8, - address=0x9C9665291C53FC348FC97C4ACA92EA13459C8367, - value=0x17, - args_offset=0x0, - args_size=0x0, - ret_offset=0x0, - ret_size=0x0, - ), - ) - + Op.STOP, - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0x1E5597B6168FE79952CB2DE7AF91C3449BC95BD4), # noqa: E501 - ) # Source: lll # { (MSTORE 0 0xaabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd) (LOG3 1 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0 0 0) } # noqa: E501 addr = pre.deploy_contract( # noqa: F841 @@ -83,9 +60,26 @@ def test_log3_log_memsize_too_high( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x9C9665291C53FC348FC97C4ACA92EA13459C8367), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: lll + # { [[ 0 ]] (CALL 1000 23 0 0 0 0) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.CALL( + gas=0x3E8, + address=addr, + value=0x17, + args_offset=0x0, + args_size=0x0, + ret_offset=0x0, + ret_size=0x0, + ), + ) + + Op.STOP, + balance=0xDE0B6B3A7640000, + nonce=0, + ) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stLogTests/test_log3_log_memsize_zero.py b/tests/ported_static/stLogTests/test_log3_log_memsize_zero.py index ff468b4db18..55ea2718000 100644 --- a/tests/ported_static/stLogTests/test_log3_log_memsize_zero.py +++ b/tests/ported_static/stLogTests/test_log3_log_memsize_zero.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_log3_log_memsize_zero( ) -> None: """Test_log3_log_memsize_zero.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,6 +43,18 @@ def test_log3_log_memsize_zero( gas_limit=1000000, ) + # Source: lll + # { (MSTORE 0 0xaabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd) (LOG3 1 0 0 0 0) } # noqa: E501 + addr = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE( + offset=0x0, + value=0xAABBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCDD, # noqa: E501 + ) + + Op.LOG3(offset=0x1, size=0x0, topic_1=0x0, topic_2=0x0, topic_3=0x0) + + Op.STOP, + balance=0xDE0B6B3A7640000, + nonce=0, + ) # Source: lll # { [[ 0 ]] (CALL 1000 23 0 0 0 0) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -53,7 +62,7 @@ def test_log3_log_memsize_zero( key=0x0, value=Op.CALL( gas=0x3E8, - address=0x561CEB099A0D44D31649D7270095033C4003881F, + address=addr, value=0x17, args_offset=0x0, args_size=0x0, @@ -64,22 +73,7 @@ def test_log3_log_memsize_zero( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x1E5597B6168FE79952CB2DE7AF91C3449BC95BD4), # noqa: E501 - ) - # Source: lll - # { (MSTORE 0 0xaabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd) (LOG3 1 0 0 0 0) } # noqa: E501 - addr = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE( - offset=0x0, - value=0xAABBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCDD, # noqa: E501 - ) - + Op.LOG3(offset=0x1, size=0x0, topic_1=0x0, topic_2=0x0, topic_3=0x0) - + Op.STOP, - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0x561CEB099A0D44D31649D7270095033C4003881F), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stLogTests/test_log3_max_topic.py b/tests/ported_static/stLogTests/test_log3_max_topic.py index 62ca782a779..4b3acca45b9 100644 --- a/tests/ported_static/stLogTests/test_log3_max_topic.py +++ b/tests/ported_static/stLogTests/test_log3_max_topic.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_log3_max_topic( ) -> None: """Test_log3_max_topic.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,26 +43,6 @@ def test_log3_max_topic( gas_limit=1000000, ) - # Source: lll - # { [[ 0 ]] (CALL 1000 23 0 0 0 0) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.CALL( - gas=0x3E8, - address=0x3105241BE1236A8BD2D48B82BDD4DA7C7FCEC2D7, - value=0x17, - args_offset=0x0, - args_size=0x0, - ret_offset=0x0, - ret_size=0x0, - ), - ) - + Op.STOP, - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0x1E5597B6168FE79952CB2DE7AF91C3449BC95BD4), # noqa: E501 - ) # Source: lll # { (MSTORE 0 0xaabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd) (LOG3 0 32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) } # noqa: E501 addr = pre.deploy_contract( # noqa: F841 @@ -83,9 +60,26 @@ def test_log3_max_topic( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x3105241BE1236A8BD2D48B82BDD4DA7C7FCEC2D7), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: lll + # { [[ 0 ]] (CALL 1000 23 0 0 0 0) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.CALL( + gas=0x3E8, + address=addr, + value=0x17, + args_offset=0x0, + args_size=0x0, + ret_offset=0x0, + ret_size=0x0, + ), + ) + + Op.STOP, + balance=0xDE0B6B3A7640000, + nonce=0, + ) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stLogTests/test_log3_non_empty_mem.py b/tests/ported_static/stLogTests/test_log3_non_empty_mem.py index 1572af57abc..3310575f7e3 100644 --- a/tests/ported_static/stLogTests/test_log3_non_empty_mem.py +++ b/tests/ported_static/stLogTests/test_log3_non_empty_mem.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_log3_non_empty_mem( ) -> None: """Test_log3_non_empty_mem.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,6 +43,18 @@ def test_log3_non_empty_mem( gas_limit=1000000, ) + # Source: lll + # { (MSTORE 0 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) (LOG3 0 32 0 0 0) } # noqa: E501 + addr = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE( + offset=0x0, + value=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, # noqa: E501 + ) + + Op.LOG3(offset=0x0, size=0x20, topic_1=0x0, topic_2=0x0, topic_3=0x0) + + Op.STOP, + balance=0xDE0B6B3A7640000, + nonce=0, + ) # Source: lll # { [[ 0 ]] (CALL 1000 23 0 0 0 0) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -53,7 +62,7 @@ def test_log3_non_empty_mem( key=0x0, value=Op.CALL( gas=0x3E8, - address=0xF9578A6384BFFF36932A673BB3B0A9B92290E65C, + address=addr, value=0x17, args_offset=0x0, args_size=0x0, @@ -64,22 +73,7 @@ def test_log3_non_empty_mem( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x1E5597B6168FE79952CB2DE7AF91C3449BC95BD4), # noqa: E501 - ) - # Source: lll - # { (MSTORE 0 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) (LOG3 0 32 0 0 0) } # noqa: E501 - addr = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE( - offset=0x0, - value=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, # noqa: E501 - ) - + Op.LOG3(offset=0x0, size=0x20, topic_1=0x0, topic_2=0x0, topic_3=0x0) - + Op.STOP, - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0xF9578A6384BFFF36932A673BB3B0A9B92290E65C), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stLogTests/test_log3_non_empty_mem_log_mem_size1.py b/tests/ported_static/stLogTests/test_log3_non_empty_mem_log_mem_size1.py index 69099c0d2f5..76f639fe3f2 100644 --- a/tests/ported_static/stLogTests/test_log3_non_empty_mem_log_mem_size1.py +++ b/tests/ported_static/stLogTests/test_log3_non_empty_mem_log_mem_size1.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_log3_non_empty_mem_log_mem_size1( ) -> None: """Test_log3_non_empty_mem_log_mem_size1.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,6 +43,18 @@ def test_log3_non_empty_mem_log_mem_size1( gas_limit=1000000, ) + # Source: lll + # { (MSTORE 0 0xaabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd) (LOG3 0 1 0 0 0) } # noqa: E501 + addr = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE( + offset=0x0, + value=0xAABBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCDD, # noqa: E501 + ) + + Op.LOG3(offset=0x0, size=0x1, topic_1=0x0, topic_2=0x0, topic_3=0x0) + + Op.STOP, + balance=0xDE0B6B3A7640000, + nonce=0, + ) # Source: lll # { [[ 0 ]] (CALL 1000 23 0 0 0 0) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -53,7 +62,7 @@ def test_log3_non_empty_mem_log_mem_size1( key=0x0, value=Op.CALL( gas=0x3E8, - address=0xE0885D29735CC94D2CF68DA45B9EC5079C7102CC, + address=addr, value=0x17, args_offset=0x0, args_size=0x0, @@ -64,22 +73,7 @@ def test_log3_non_empty_mem_log_mem_size1( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x1E5597B6168FE79952CB2DE7AF91C3449BC95BD4), # noqa: E501 - ) - # Source: lll - # { (MSTORE 0 0xaabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd) (LOG3 0 1 0 0 0) } # noqa: E501 - addr = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE( - offset=0x0, - value=0xAABBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCDD, # noqa: E501 - ) - + Op.LOG3(offset=0x0, size=0x1, topic_1=0x0, topic_2=0x0, topic_3=0x0) - + Op.STOP, - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0xE0885D29735CC94D2CF68DA45B9EC5079C7102CC), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stLogTests/test_log3_non_empty_mem_log_mem_size1_log_mem_start31.py b/tests/ported_static/stLogTests/test_log3_non_empty_mem_log_mem_size1_log_mem_start31.py index 80181418fc2..42ce8374089 100644 --- a/tests/ported_static/stLogTests/test_log3_non_empty_mem_log_mem_size1_log_mem_start31.py +++ b/tests/ported_static/stLogTests/test_log3_non_empty_mem_log_mem_size1_log_mem_start31.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_log3_non_empty_mem_log_mem_size1_log_mem_start31( ) -> None: """Test_log3_non_empty_mem_log_mem_size1_log_mem_start31.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -48,6 +45,18 @@ def test_log3_non_empty_mem_log_mem_size1_log_mem_start31( gas_limit=1000000, ) + # Source: lll + # { (MSTORE 0 0xaabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd) (LOG3 31 1 0 0 0) } # noqa: E501 + addr = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE( + offset=0x0, + value=0xAABBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCDD, # noqa: E501 + ) + + Op.LOG3(offset=0x1F, size=0x1, topic_1=0x0, topic_2=0x0, topic_3=0x0) + + Op.STOP, + balance=0xDE0B6B3A7640000, + nonce=0, + ) # Source: lll # { [[ 0 ]] (CALL 1000 23 0 0 0 0) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -55,7 +64,7 @@ def test_log3_non_empty_mem_log_mem_size1_log_mem_start31( key=0x0, value=Op.CALL( gas=0x3E8, - address=0x14FA8BBD322A53AD4DAB974AEF0DF9EAA219F627, + address=addr, value=0x17, args_offset=0x0, args_size=0x0, @@ -66,22 +75,7 @@ def test_log3_non_empty_mem_log_mem_size1_log_mem_start31( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x1E5597B6168FE79952CB2DE7AF91C3449BC95BD4), # noqa: E501 - ) - # Source: lll - # { (MSTORE 0 0xaabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd) (LOG3 31 1 0 0 0) } # noqa: E501 - addr = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE( - offset=0x0, - value=0xAABBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCDD, # noqa: E501 - ) - + Op.LOG3(offset=0x1F, size=0x1, topic_1=0x0, topic_2=0x0, topic_3=0x0) - + Op.STOP, - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0x14FA8BBD322A53AD4DAB974AEF0DF9EAA219F627), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stLogTests/test_log3_pc.py b/tests/ported_static/stLogTests/test_log3_pc.py index c3c0a87b4b0..7b62c047c5d 100644 --- a/tests/ported_static/stLogTests/test_log3_pc.py +++ b/tests/ported_static/stLogTests/test_log3_pc.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_log3_pc( ) -> None: """Test_log3_pc.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,6 +43,17 @@ def test_log3_pc( gas_limit=1000000, ) + # Source: lll + # { (MSTORE8 0 0xff) (LOG3 0 32 (PC) (PC) (PC) ) } + addr = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE8(offset=0x0, value=0xFF) + + Op.LOG3( + offset=0x0, size=0x20, topic_1=Op.PC, topic_2=Op.PC, topic_3=Op.PC + ) + + Op.STOP, + balance=0xDE0B6B3A7640000, + nonce=0, + ) # Source: lll # { [[ 0 ]] (CALL 1000 23 0 0 0 0) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -53,7 +61,7 @@ def test_log3_pc( key=0x0, value=Op.CALL( gas=0x3E8, - address=0x2D74CBAE3F7951CF201441F09537705A05E5290C, + address=addr, value=0x17, args_offset=0x0, args_size=0x0, @@ -64,21 +72,7 @@ def test_log3_pc( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x1E5597B6168FE79952CB2DE7AF91C3449BC95BD4), # noqa: E501 - ) - # Source: lll - # { (MSTORE8 0 0xff) (LOG3 0 32 (PC) (PC) (PC) ) } - addr = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE8(offset=0x0, value=0xFF) - + Op.LOG3( - offset=0x0, size=0x20, topic_1=Op.PC, topic_2=Op.PC, topic_3=Op.PC - ) - + Op.STOP, - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0x2D74CBAE3F7951CF201441F09537705A05E5290C), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stLogTests/test_log4_caller.py b/tests/ported_static/stLogTests/test_log4_caller.py index 9480c345aa9..60556c375ad 100644 --- a/tests/ported_static/stLogTests/test_log4_caller.py +++ b/tests/ported_static/stLogTests/test_log4_caller.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_log4_caller( ) -> None: """Test_log4_caller.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,6 +43,22 @@ def test_log4_caller( gas_limit=1000000, ) + # Source: lll + # { (MSTORE8 0 0xff) (LOG4 0 32 0 0 0 (CALLER) ) } + addr = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE8(offset=0x0, value=0xFF) + + Op.LOG4( + offset=0x0, + size=0x20, + topic_1=0x0, + topic_2=0x0, + topic_3=0x0, + topic_4=Op.CALLER, + ) + + Op.STOP, + balance=0xDE0B6B3A7640000, + nonce=0, + ) # Source: lll # { [[ 0 ]] (CALL 1000 23 0 0 0 0) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -53,7 +66,7 @@ def test_log4_caller( key=0x0, value=Op.CALL( gas=0x3E8, - address=0x3AAC40E63F4E85B4F222671FB5691C8A4FDFB3DE, + address=addr, value=0x17, args_offset=0x0, args_size=0x0, @@ -64,26 +77,7 @@ def test_log4_caller( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x1E5597B6168FE79952CB2DE7AF91C3449BC95BD4), # noqa: E501 - ) - # Source: lll - # { (MSTORE8 0 0xff) (LOG4 0 32 0 0 0 (CALLER) ) } - addr = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE8(offset=0x0, value=0xFF) - + Op.LOG4( - offset=0x0, - size=0x20, - topic_1=0x0, - topic_2=0x0, - topic_3=0x0, - topic_4=Op.CALLER, - ) - + Op.STOP, - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0x3AAC40E63F4E85B4F222671FB5691C8A4FDFB3DE), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stLogTests/test_log4_empty_mem.py b/tests/ported_static/stLogTests/test_log4_empty_mem.py index a110aeb8fd2..d1b6ecc5d10 100644 --- a/tests/ported_static/stLogTests/test_log4_empty_mem.py +++ b/tests/ported_static/stLogTests/test_log4_empty_mem.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_log4_empty_mem( ) -> None: """Test_log4_empty_mem.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,6 +43,21 @@ def test_log4_empty_mem( gas_limit=1000000, ) + # Source: lll + # { (LOG4 0 0 0 0 0 0) } + addr = pre.deploy_contract( # noqa: F841 + code=Op.LOG4( + offset=0x0, + size=0x0, + topic_1=0x0, + topic_2=0x0, + topic_3=0x0, + topic_4=0x0, + ) + + Op.STOP, + balance=0xDE0B6B3A7640000, + nonce=0, + ) # Source: lll # { [[ 0 ]] (CALL 1000 23 0 0 0 0) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -53,7 +65,7 @@ def test_log4_empty_mem( key=0x0, value=Op.CALL( gas=0x3E8, - address=0x4D1560AF4D4E7F6B2B987D349D4B631048EBB581, + address=addr, value=0x17, args_offset=0x0, args_size=0x0, @@ -64,25 +76,7 @@ def test_log4_empty_mem( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x1E5597B6168FE79952CB2DE7AF91C3449BC95BD4), # noqa: E501 - ) - # Source: lll - # { (LOG4 0 0 0 0 0 0) } - addr = pre.deploy_contract( # noqa: F841 - code=Op.LOG4( - offset=0x0, - size=0x0, - topic_1=0x0, - topic_2=0x0, - topic_3=0x0, - topic_4=0x0, - ) - + Op.STOP, - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0x4D1560AF4D4E7F6B2B987D349D4B631048EBB581), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stLogTests/test_log4_log_mem_start_too_high.py b/tests/ported_static/stLogTests/test_log4_log_mem_start_too_high.py index b98f38fcc27..ecb1fe7f51d 100644 --- a/tests/ported_static/stLogTests/test_log4_log_mem_start_too_high.py +++ b/tests/ported_static/stLogTests/test_log4_log_mem_start_too_high.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_log4_log_mem_start_too_high( ) -> None: """Test_log4_log_mem_start_too_high.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,26 +43,6 @@ def test_log4_log_mem_start_too_high( gas_limit=1000000, ) - # Source: lll - # { [[ 0 ]] (CALL 1000 23 0 0 0 0) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.CALL( - gas=0x3E8, - address=0x57D85807540DA11B345D5909E74550D27E116302, - value=0x17, - args_offset=0x0, - args_size=0x0, - ret_offset=0x0, - ret_size=0x0, - ), - ) - + Op.STOP, - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0x1E5597B6168FE79952CB2DE7AF91C3449BC95BD4), # noqa: E501 - ) # Source: lll # { (MSTORE 0 0xaabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd) (LOG4 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 1 0 0 0 0) } # noqa: E501 addr = pre.deploy_contract( # noqa: F841 @@ -84,9 +61,26 @@ def test_log4_log_mem_start_too_high( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x57D85807540DA11B345D5909E74550D27E116302), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: lll + # { [[ 0 ]] (CALL 1000 23 0 0 0 0) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.CALL( + gas=0x3E8, + address=addr, + value=0x17, + args_offset=0x0, + args_size=0x0, + ret_offset=0x0, + ret_size=0x0, + ), + ) + + Op.STOP, + balance=0xDE0B6B3A7640000, + nonce=0, + ) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stLogTests/test_log4_log_memsize_too_high.py b/tests/ported_static/stLogTests/test_log4_log_memsize_too_high.py index c2696841314..78ac2beb50b 100644 --- a/tests/ported_static/stLogTests/test_log4_log_memsize_too_high.py +++ b/tests/ported_static/stLogTests/test_log4_log_memsize_too_high.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_log4_log_memsize_too_high( ) -> None: """Test_log4_log_memsize_too_high.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,26 +43,6 @@ def test_log4_log_memsize_too_high( gas_limit=1000000, ) - # Source: lll - # { [[ 0 ]] (CALL 1000 23 0 0 0 0) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.CALL( - gas=0x3E8, - address=0x59E2F8FDF907D6E627FCAFD97606824CE1FE1E2A, - value=0x17, - args_offset=0x0, - args_size=0x0, - ret_offset=0x0, - ret_size=0x0, - ), - ) - + Op.STOP, - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0x1E5597B6168FE79952CB2DE7AF91C3449BC95BD4), # noqa: E501 - ) # Source: lll # { (MSTORE 0 0xaabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd) (LOG4 1 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0 0 0 0) } # noqa: E501 addr = pre.deploy_contract( # noqa: F841 @@ -84,9 +61,26 @@ def test_log4_log_memsize_too_high( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x59E2F8FDF907D6E627FCAFD97606824CE1FE1E2A), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: lll + # { [[ 0 ]] (CALL 1000 23 0 0 0 0) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.CALL( + gas=0x3E8, + address=addr, + value=0x17, + args_offset=0x0, + args_size=0x0, + ret_offset=0x0, + ret_size=0x0, + ), + ) + + Op.STOP, + balance=0xDE0B6B3A7640000, + nonce=0, + ) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stLogTests/test_log4_log_memsize_zero.py b/tests/ported_static/stLogTests/test_log4_log_memsize_zero.py index 2ab42b2d386..4049b43cc09 100644 --- a/tests/ported_static/stLogTests/test_log4_log_memsize_zero.py +++ b/tests/ported_static/stLogTests/test_log4_log_memsize_zero.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_log4_log_memsize_zero( ) -> None: """Test_log4_log_memsize_zero.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,26 +43,6 @@ def test_log4_log_memsize_zero( gas_limit=1000000, ) - # Source: lll - # { [[ 0 ]] (CALL 1000 23 0 0 0 0) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.CALL( - gas=0x3E8, - address=0xB03FD6E714A14074A17E2ECFD412E35B1DDB21E5, - value=0x17, - args_offset=0x0, - args_size=0x0, - ret_offset=0x0, - ret_size=0x0, - ), - ) - + Op.STOP, - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0x1E5597B6168FE79952CB2DE7AF91C3449BC95BD4), # noqa: E501 - ) # Source: lll # { (MSTORE 0 0xaabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd) (LOG4 1 0 0 0 0 0) } # noqa: E501 addr = pre.deploy_contract( # noqa: F841 @@ -84,9 +61,26 @@ def test_log4_log_memsize_zero( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xB03FD6E714A14074A17E2ECFD412E35B1DDB21E5), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: lll + # { [[ 0 ]] (CALL 1000 23 0 0 0 0) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.CALL( + gas=0x3E8, + address=addr, + value=0x17, + args_offset=0x0, + args_size=0x0, + ret_offset=0x0, + ret_size=0x0, + ), + ) + + Op.STOP, + balance=0xDE0B6B3A7640000, + nonce=0, + ) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stLogTests/test_log4_max_topic.py b/tests/ported_static/stLogTests/test_log4_max_topic.py index 45f2eadd24c..b8efc373d81 100644 --- a/tests/ported_static/stLogTests/test_log4_max_topic.py +++ b/tests/ported_static/stLogTests/test_log4_max_topic.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_log4_max_topic( ) -> None: """Test_log4_max_topic.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,26 +43,6 @@ def test_log4_max_topic( gas_limit=1000000, ) - # Source: lll - # { [[ 0 ]] (CALL 1000 23 0 0 0 0) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.CALL( - gas=0x3E8, - address=0xCCB217083DF3658F7F5BB3325D2368AC932ED83B, - value=0x17, - args_offset=0x0, - args_size=0x0, - ret_offset=0x0, - ret_size=0x0, - ), - ) - + Op.STOP, - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0x1E5597B6168FE79952CB2DE7AF91C3449BC95BD4), # noqa: E501 - ) # Source: lll # { (MSTORE 0 0xaabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd) (LOG4 0 32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) } # noqa: E501 addr = pre.deploy_contract( # noqa: F841 @@ -84,9 +61,26 @@ def test_log4_max_topic( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xCCB217083DF3658F7F5BB3325D2368AC932ED83B), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: lll + # { [[ 0 ]] (CALL 1000 23 0 0 0 0) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.CALL( + gas=0x3E8, + address=addr, + value=0x17, + args_offset=0x0, + args_size=0x0, + ret_offset=0x0, + ret_size=0x0, + ), + ) + + Op.STOP, + balance=0xDE0B6B3A7640000, + nonce=0, + ) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stLogTests/test_log4_non_empty_mem.py b/tests/ported_static/stLogTests/test_log4_non_empty_mem.py index 89e93ff070e..542de72a9fe 100644 --- a/tests/ported_static/stLogTests/test_log4_non_empty_mem.py +++ b/tests/ported_static/stLogTests/test_log4_non_empty_mem.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_log4_non_empty_mem( ) -> None: """Test_log4_non_empty_mem.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,26 +43,6 @@ def test_log4_non_empty_mem( gas_limit=1000000, ) - # Source: lll - # { [[ 0 ]] (CALL 1000 23 0 0 0 0) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.CALL( - gas=0x3E8, - address=0xD78CA74FB91DC10B6315B23141F23FCE8317AB9A, - value=0x17, - args_offset=0x0, - args_size=0x0, - ret_offset=0x0, - ret_size=0x0, - ), - ) - + Op.STOP, - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0x1E5597B6168FE79952CB2DE7AF91C3449BC95BD4), # noqa: E501 - ) # Source: lll # { (MSTORE 0 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) (LOG4 0 32 0 0 0 0) } # noqa: E501 addr = pre.deploy_contract( # noqa: F841 @@ -84,9 +61,26 @@ def test_log4_non_empty_mem( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xD78CA74FB91DC10B6315B23141F23FCE8317AB9A), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: lll + # { [[ 0 ]] (CALL 1000 23 0 0 0 0) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.CALL( + gas=0x3E8, + address=addr, + value=0x17, + args_offset=0x0, + args_size=0x0, + ret_offset=0x0, + ret_size=0x0, + ), + ) + + Op.STOP, + balance=0xDE0B6B3A7640000, + nonce=0, + ) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stLogTests/test_log4_non_empty_mem_log_mem_size1.py b/tests/ported_static/stLogTests/test_log4_non_empty_mem_log_mem_size1.py index bdb4fdf5dea..63933ed45ad 100644 --- a/tests/ported_static/stLogTests/test_log4_non_empty_mem_log_mem_size1.py +++ b/tests/ported_static/stLogTests/test_log4_non_empty_mem_log_mem_size1.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_log4_non_empty_mem_log_mem_size1( ) -> None: """Test_log4_non_empty_mem_log_mem_size1.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,26 +43,6 @@ def test_log4_non_empty_mem_log_mem_size1( gas_limit=1000000, ) - # Source: lll - # { [[ 0 ]] (CALL 1000 23 0 0 0 0) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.CALL( - gas=0x3E8, - address=0xA1BA9EDCB02902136B7A79A5C49409E244BC01C5, - value=0x17, - args_offset=0x0, - args_size=0x0, - ret_offset=0x0, - ret_size=0x0, - ), - ) - + Op.STOP, - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0x1E5597B6168FE79952CB2DE7AF91C3449BC95BD4), # noqa: E501 - ) # Source: lll # { (MSTORE 0 0xaabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd) (LOG4 0 1 0 0 0 0) } # noqa: E501 addr = pre.deploy_contract( # noqa: F841 @@ -84,9 +61,26 @@ def test_log4_non_empty_mem_log_mem_size1( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xA1BA9EDCB02902136B7A79A5C49409E244BC01C5), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: lll + # { [[ 0 ]] (CALL 1000 23 0 0 0 0) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.CALL( + gas=0x3E8, + address=addr, + value=0x17, + args_offset=0x0, + args_size=0x0, + ret_offset=0x0, + ret_size=0x0, + ), + ) + + Op.STOP, + balance=0xDE0B6B3A7640000, + nonce=0, + ) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stLogTests/test_log4_non_empty_mem_log_mem_size1_log_mem_start31.py b/tests/ported_static/stLogTests/test_log4_non_empty_mem_log_mem_size1_log_mem_start31.py index 4ca21e7a71c..5d25ff48d5a 100644 --- a/tests/ported_static/stLogTests/test_log4_non_empty_mem_log_mem_size1_log_mem_start31.py +++ b/tests/ported_static/stLogTests/test_log4_non_empty_mem_log_mem_size1_log_mem_start31.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_log4_non_empty_mem_log_mem_size1_log_mem_start31( ) -> None: """Test_log4_non_empty_mem_log_mem_size1_log_mem_start31.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -48,26 +45,6 @@ def test_log4_non_empty_mem_log_mem_size1_log_mem_start31( gas_limit=1000000, ) - # Source: lll - # { [[ 0 ]] (CALL 1000 23 0 0 0 0) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.CALL( - gas=0x3E8, - address=0x23886789BD30D62944A3475276B774A785CB3329, - value=0x17, - args_offset=0x0, - args_size=0x0, - ret_offset=0x0, - ret_size=0x0, - ), - ) - + Op.STOP, - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0x1E5597B6168FE79952CB2DE7AF91C3449BC95BD4), # noqa: E501 - ) # Source: lll # { (MSTORE 0 0xaabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd) (LOG4 31 1 0 0 0 0) } # noqa: E501 addr = pre.deploy_contract( # noqa: F841 @@ -86,9 +63,26 @@ def test_log4_non_empty_mem_log_mem_size1_log_mem_start31( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x23886789BD30D62944A3475276B774A785CB3329), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: lll + # { [[ 0 ]] (CALL 1000 23 0 0 0 0) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.CALL( + gas=0x3E8, + address=addr, + value=0x17, + args_offset=0x0, + args_size=0x0, + ret_offset=0x0, + ret_size=0x0, + ), + ) + + Op.STOP, + balance=0xDE0B6B3A7640000, + nonce=0, + ) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stLogTests/test_log4_pc.py b/tests/ported_static/stLogTests/test_log4_pc.py index 6448e008a77..958493ee98a 100644 --- a/tests/ported_static/stLogTests/test_log4_pc.py +++ b/tests/ported_static/stLogTests/test_log4_pc.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_log4_pc( ) -> None: """Test_log4_pc.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,6 +43,22 @@ def test_log4_pc( gas_limit=1000000, ) + # Source: lll + # { (MSTORE8 0 0xff) (LOG4 0 32 (PC) (PC) (PC) (PC) ) } + addr = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE8(offset=0x0, value=0xFF) + + Op.LOG4( + offset=0x0, + size=0x20, + topic_1=Op.PC, + topic_2=Op.PC, + topic_3=Op.PC, + topic_4=Op.PC, + ) + + Op.STOP, + balance=0xDE0B6B3A7640000, + nonce=0, + ) # Source: lll # { [[ 0 ]] (CALL 1000 23 0 0 0 0) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -53,7 +66,7 @@ def test_log4_pc( key=0x0, value=Op.CALL( gas=0x3E8, - address=0x84861F45AE3E1AA4792A50F336696EFA9902C95B, + address=addr, value=0x17, args_offset=0x0, args_size=0x0, @@ -64,26 +77,7 @@ def test_log4_pc( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x1E5597B6168FE79952CB2DE7AF91C3449BC95BD4), # noqa: E501 - ) - # Source: lll - # { (MSTORE8 0 0xff) (LOG4 0 32 (PC) (PC) (PC) (PC) ) } - addr = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE8(offset=0x0, value=0xFF) - + Op.LOG4( - offset=0x0, - size=0x20, - topic_1=Op.PC, - topic_2=Op.PC, - topic_3=Op.PC, - topic_4=Op.PC, - ) - + Op.STOP, - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0x84861F45AE3E1AA4792A50F336696EFA9902C95B), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stLogTests/test_log_in_oog_call.py b/tests/ported_static/stLogTests/test_log_in_oog_call.py index 28be25e5bb7..577c60f1347 100644 --- a/tests/ported_static/stLogTests/test_log_in_oog_call.py +++ b/tests/ported_static/stLogTests/test_log_in_oog_call.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_log_in_oog_call( ) -> None: """Test_log_in_oog_call.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,6 +43,15 @@ def test_log_in_oog_call( gas_limit=1000000, ) + # Source: lll + # { (LOG0 0 32) (MLOAD 0xffffffffffffffff) } + addr = pre.deploy_contract( # noqa: F841 + code=Op.LOG0(offset=0x0, size=0x20) + + Op.MLOAD(offset=0xFFFFFFFFFFFFFFFF) + + Op.STOP, + balance=0xDE0B6B3A7640000, + nonce=0, + ) # Source: lll # { [[ 0 ]] (CALL 100000 23 0 0 0 0) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -53,7 +59,7 @@ def test_log_in_oog_call( key=0x0, value=Op.CALL( gas=0x186A0, - address=0x69B6134B97E638B919A7089DF82AF74961E71FF8, + address=addr, value=0x17, args_offset=0x0, args_size=0x0, @@ -64,19 +70,7 @@ def test_log_in_oog_call( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x825DCC9FBF5CFF44E688BAE15B79E8E11951BE2A), # noqa: E501 - ) - # Source: lll - # { (LOG0 0 32) (MLOAD 0xffffffffffffffff) } - addr = pre.deploy_contract( # noqa: F841 - code=Op.LOG0(offset=0x0, size=0x20) - + Op.MLOAD(offset=0xFFFFFFFFFFFFFFFF) - + Op.STOP, - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0x69B6134B97E638B919A7089DF82AF74961E71FF8), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stMemExpandingEIP150Calls/test_call_and_callcode_consume_more_gas_then_transaction_has_with_mem_expanding_calls.py b/tests/ported_static/stMemExpandingEIP150Calls/test_call_and_callcode_consume_more_gas_then_transaction_has_with_mem_expanding_calls.py index e40f6d2ceb0..ff44e5b435b 100644 --- a/tests/ported_static/stMemExpandingEIP150Calls/test_call_and_callcode_consume_more_gas_then_transaction_has_with_mem_expanding_calls.py +++ b/tests/ported_static/stMemExpandingEIP150Calls/test_call_and_callcode_consume_more_gas_then_transaction_has_with_mem_expanding_calls.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_call_and_callcode_consume_more_gas_then_transaction_has_with_mem_expand ) -> None: """Test_call_and_callcode_consume_more_gas_then_transaction_has_with_m...""" # noqa: E501 coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x8D19F2B0D2F5689C1771FBCA70476CA6E877A81EE15C3733DE87FAE38E5ABCEF - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -48,13 +45,11 @@ def test_call_and_callcode_consume_more_gas_then_transaction_has_with_mem_expand gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) # Source: hex # 0x6012600055 addr = pre.deploy_contract( # noqa: F841 code=Op.SSTORE(key=0x0, value=0x12), nonce=0, - address=Address(0xA1F6E75A455896613053D45331763A07F4718969), # noqa: E501 ) # Source: hex # 0x5a60085560ff60ff60ff60ff600073620927c0f160095560ff60ff60ff60ff600073620927c0f2600a55 # noqa: E501 @@ -64,7 +59,7 @@ def test_call_and_callcode_consume_more_gas_then_transaction_has_with_mem_expand key=0x9, value=Op.CALL( gas=0x927C0, - address=0xA1F6E75A455896613053D45331763A07F4718969, + address=addr, value=0x0, args_offset=0xFF, args_size=0xFF, @@ -76,7 +71,7 @@ def test_call_and_callcode_consume_more_gas_then_transaction_has_with_mem_expand key=0xA, value=Op.CALLCODE( gas=0x927C0, - address=0xA1F6E75A455896613053D45331763A07F4718969, + address=addr, value=0x0, args_offset=0xFF, args_size=0xFF, @@ -85,7 +80,6 @@ def test_call_and_callcode_consume_more_gas_then_transaction_has_with_mem_expand ), ), nonce=0, - address=Address(0x346E4C3E54A808E0CAD66173DE0D81FF4D06BABF), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stMemExpandingEIP150Calls/test_call_ask_more_gas_on_depth2_then_transaction_has_with_mem_expanding_calls.py b/tests/ported_static/stMemExpandingEIP150Calls/test_call_ask_more_gas_on_depth2_then_transaction_has_with_mem_expanding_calls.py index 549f63f546d..e181c5c7f03 100644 --- a/tests/ported_static/stMemExpandingEIP150Calls/test_call_ask_more_gas_on_depth2_then_transaction_has_with_mem_expanding_calls.py +++ b/tests/ported_static/stMemExpandingEIP150Calls/test_call_ask_more_gas_on_depth2_then_transaction_has_with_mem_expanding_calls.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_call_ask_more_gas_on_depth2_then_transaction_has_with_mem_expanding_cal ) -> None: """Test_call_ask_more_gas_on_depth2_then_transaction_has_with_mem_expa...""" # noqa: E501 coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x8D19F2B0D2F5689C1771FBCA70476CA6E877A81EE15C3733DE87FAE38E5ABCEF - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -48,16 +45,21 @@ def test_call_ask_more_gas_on_depth2_then_transaction_has_with_mem_expanding_cal gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) # Source: hex - # 0x5a60085560ff60ff60ff60ff60007362030d40f1600955 # noqa: E501 - target = pre.deploy_contract( # noqa: F841 + # 0x5a600855 + addr = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x8, value=Op.GAS), + nonce=0, + ) + # Source: hex + # 0x5a60085560ff60ff60ff60ff600073620927c0f1600955 # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 code=Op.SSTORE(key=0x8, value=Op.GAS) + Op.SSTORE( key=0x9, value=Op.CALL( - gas=0x30D40, - address=0xA229D9EFD075227ED1E0EA0427045B5EE24DC40A, + gas=0x927C0, + address=addr, value=0x0, args_offset=0xFF, args_size=0xFF, @@ -66,24 +68,16 @@ def test_call_ask_more_gas_on_depth2_then_transaction_has_with_mem_expanding_cal ), ), nonce=0, - address=Address(0x97442DA68A5F2B1BE1728C655C0F395CFFB999CF), # noqa: E501 ) # Source: hex - # 0x5a600855 - addr = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x8, value=Op.GAS), - nonce=0, - address=Address(0x9EDEFDFB5A11A6B30DBA1BFF8726F94F9D9E1232), # noqa: E501 - ) - # Source: hex - # 0x5a60085560ff60ff60ff60ff600073620927c0f1600955 # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 + # 0x5a60085560ff60ff60ff60ff60007362030d40f1600955 # noqa: E501 + target = pre.deploy_contract( # noqa: F841 code=Op.SSTORE(key=0x8, value=Op.GAS) + Op.SSTORE( key=0x9, value=Op.CALL( - gas=0x927C0, - address=0x9EDEFDFB5A11A6B30DBA1BFF8726F94F9D9E1232, + gas=0x30D40, + address=addr_2, value=0x0, args_offset=0xFF, args_size=0xFF, @@ -92,7 +86,6 @@ def test_call_ask_more_gas_on_depth2_then_transaction_has_with_mem_expanding_cal ), ), nonce=0, - address=Address(0xA229D9EFD075227ED1E0EA0427045B5EE24DC40A), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stMemExpandingEIP150Calls/test_call_goes_oog_on_second_level2_with_mem_expanding_calls.py b/tests/ported_static/stMemExpandingEIP150Calls/test_call_goes_oog_on_second_level2_with_mem_expanding_calls.py index a80c621df0b..03fba477f8e 100644 --- a/tests/ported_static/stMemExpandingEIP150Calls/test_call_goes_oog_on_second_level2_with_mem_expanding_calls.py +++ b/tests/ported_static/stMemExpandingEIP150Calls/test_call_goes_oog_on_second_level2_with_mem_expanding_calls.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_call_goes_oog_on_second_level2_with_mem_expanding_calls( ) -> None: """Test_call_goes_oog_on_second_level2_with_mem_expanding_calls.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xB51075BB33D347A23B516E327E1B71C54F63FAA192D1D94B62C76E0C26CF98A - ) + sender = pre.fund_eoa(amount=0xE8D4A510000) env = Environment( fee_recipient=coinbase, @@ -48,7 +45,6 @@ def test_call_goes_oog_on_second_level2_with_mem_expanding_calls( gas_limit=100000000, ) - pre[sender] = Account(balance=0xE8D4A510000) # Source: hex # 0x5a6008555a6009555a600a55 addr = pre.deploy_contract( # noqa: F841 @@ -56,7 +52,6 @@ def test_call_goes_oog_on_second_level2_with_mem_expanding_calls( + Op.SSTORE(key=0x9, value=Op.GAS) + Op.SSTORE(key=0xA, value=Op.GAS), nonce=0, - address=Address(0x96983DE02BFBCB5D0F4E0EE98FDDE6D6F0C75FE0), # noqa: E501 ) # Source: hex # 0x5a60085560ff60ff60ff60ff600073620927c0f1600955 # noqa: E501 @@ -66,7 +61,7 @@ def test_call_goes_oog_on_second_level2_with_mem_expanding_calls( key=0x9, value=Op.CALL( gas=0x927C0, - address=0x96983DE02BFBCB5D0F4E0EE98FDDE6D6F0C75FE0, + address=addr, value=0x0, args_offset=0xFF, args_size=0xFF, @@ -75,7 +70,6 @@ def test_call_goes_oog_on_second_level2_with_mem_expanding_calls( ), ), nonce=0, - address=Address(0xC10A98222464B07008CEB5A0EC44ED49920ADDDA), # noqa: E501 ) # Source: hex # 0x5a60085560ff60ff60ff60ff600073620927c0f1600955 # noqa: E501 @@ -85,7 +79,7 @@ def test_call_goes_oog_on_second_level2_with_mem_expanding_calls( key=0x9, value=Op.CALL( gas=0x927C0, - address=0xC10A98222464B07008CEB5A0EC44ED49920ADDDA, + address=addr_2, value=0x0, args_offset=0xFF, args_size=0xFF, @@ -94,7 +88,6 @@ def test_call_goes_oog_on_second_level2_with_mem_expanding_calls( ), ), nonce=0, - address=Address(0x0700BB425D7D4C412AC658014015BD6C98652DC4), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stMemExpandingEIP150Calls/test_create_and_gas_inside_create_with_mem_expanding_calls.py b/tests/ported_static/stMemExpandingEIP150Calls/test_create_and_gas_inside_create_with_mem_expanding_calls.py index 2b549a7bac4..705e9e760f9 100644 --- a/tests/ported_static/stMemExpandingEIP150Calls/test_create_and_gas_inside_create_with_mem_expanding_calls.py +++ b/tests/ported_static/stMemExpandingEIP150Calls/test_create_and_gas_inside_create_with_mem_expanding_calls.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -37,9 +36,7 @@ def test_create_and_gas_inside_create_with_mem_expanding_calls( """Test_create_and_gas_inside_create_with_mem_expanding_calls.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) contract_0 = Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -50,7 +47,6 @@ def test_create_and_gas_inside_create_with_mem_expanding_calls( gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) # Source: hex # 0x5a600a55635a60fd556000526004601c6000f0600b555a600955 contract_0 = pre.deploy_contract( # noqa: F841 @@ -59,7 +55,6 @@ def test_create_and_gas_inside_create_with_mem_expanding_calls( + Op.SSTORE(key=0xB, value=Op.CREATE(value=0x0, offset=0x1C, size=0x4)) + Op.SSTORE(key=0x9, value=Op.GAS), nonce=0, - address=Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B), # noqa: E501 ) tx = Transaction( @@ -75,7 +70,7 @@ def test_create_and_gas_inside_create_with_mem_expanding_calls( storage={ 9: 0x75596, 10: 0x8D5B6, - 11: 0xF1ECF98489FA9ED60A664FC4998DB699CFA39D40, + 11: compute_create_address(address=contract_0, nonce=0), }, nonce=1, ), diff --git a/tests/ported_static/stMemExpandingEIP150Calls/test_delegate_call_on_eip_with_mem_expanding_calls.py b/tests/ported_static/stMemExpandingEIP150Calls/test_delegate_call_on_eip_with_mem_expanding_calls.py index b68c050df27..dec68916fab 100644 --- a/tests/ported_static/stMemExpandingEIP150Calls/test_delegate_call_on_eip_with_mem_expanding_calls.py +++ b/tests/ported_static/stMemExpandingEIP150Calls/test_delegate_call_on_eip_with_mem_expanding_calls.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_delegate_call_on_eip_with_mem_expanding_calls( ) -> None: """Test_delegate_call_on_eip_with_mem_expanding_calls.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x8D19F2B0D2F5689C1771FBCA70476CA6E877A81EE15C3733DE87FAE38E5ABCEF - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -48,7 +45,12 @@ def test_delegate_call_on_eip_with_mem_expanding_calls( gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) + # Source: hex + # 0x6012600055 + addr = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x0, value=0x12), + nonce=0, + ) # Source: hex # 0x5a60085560ff60ff60ff60ff73620927c0f4600955 # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -57,7 +59,7 @@ def test_delegate_call_on_eip_with_mem_expanding_calls( key=0x9, value=Op.DELEGATECALL( gas=0x927C0, - address=0xA1F6E75A455896613053D45331763A07F4718969, + address=addr, args_offset=0xFF, args_size=0xFF, ret_offset=0xFF, @@ -65,14 +67,6 @@ def test_delegate_call_on_eip_with_mem_expanding_calls( ), ), nonce=0, - address=Address(0x3FC906A124D4054023BE5DD8666CE29AA3712CCB), # noqa: E501 - ) - # Source: hex - # 0x6012600055 - addr = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x0, value=0x12), - nonce=0, - address=Address(0xA1F6E75A455896613053D45331763A07F4718969), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stMemExpandingEIP150Calls/test_new_gas_price_for_codes_with_mem_expanding_calls.py b/tests/ported_static/stMemExpandingEIP150Calls/test_new_gas_price_for_codes_with_mem_expanding_calls.py index 005c5297574..47aed815167 100644 --- a/tests/ported_static/stMemExpandingEIP150Calls/test_new_gas_price_for_codes_with_mem_expanding_calls.py +++ b/tests/ported_static/stMemExpandingEIP150Calls/test_new_gas_price_for_codes_with_mem_expanding_calls.py @@ -48,6 +48,7 @@ def test_new_gas_price_for_codes_with_mem_expanding_calls( gas_limit=10000000, ) + pre[sender] = Account(balance=0xE8D4A5100000) # Source: hex # 0x1122334455667788991011121314151617181920212223242526272829303132 addr = pre.deploy_contract( # noqa: F841 @@ -65,29 +66,18 @@ def test_new_gas_price_for_codes_with_mem_expanding_calls( nonce=0, address=Address(0x7B8C83E74CC8DFADB03138C2743C70588ACE4222), # noqa: E501 ) - pre[sender] = Account(balance=0xE8D4A5100000) # Source: hex # 0x733b600155601460006000733c60005160025560005460045560ff60ff60ff60ff600173617530f160055560ff60ff60ff60ff600173617530f260065560ff60ff60ff60ff73617530f460075560ff60ff60ff60ff6000731000000000000000000000000000000000000013617530f160085573316003555a600a55 # noqa: E501 target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x1, - value=Op.EXTCODESIZE( - address=0x6B6AF3C6E1714081C8C3085ACBAC8C2B21FADF0B - ), - ) - + Op.EXTCODECOPY( - address=0x6B6AF3C6E1714081C8C3085ACBAC8C2B21FADF0B, - dest_offset=0x0, - offset=0x0, - size=0x14, - ) + code=Op.SSTORE(key=0x1, value=Op.EXTCODESIZE(address=addr)) + + Op.EXTCODECOPY(address=addr, dest_offset=0x0, offset=0x0, size=0x14) + Op.SSTORE(key=0x2, value=Op.MLOAD(offset=0x0)) + Op.SSTORE(key=0x4, value=Op.SLOAD(key=0x0)) + Op.SSTORE( key=0x5, value=Op.CALL( gas=0x7530, - address=0x7B8C83E74CC8DFADB03138C2743C70588ACE4222, + address=addr_2, value=0x1, args_offset=0xFF, args_size=0xFF, @@ -99,7 +89,7 @@ def test_new_gas_price_for_codes_with_mem_expanding_calls( key=0x6, value=Op.CALLCODE( gas=0x7530, - address=0x7B8C83E74CC8DFADB03138C2743C70588ACE4222, + address=addr_2, value=0x1, args_offset=0xFF, args_size=0xFF, @@ -111,7 +101,7 @@ def test_new_gas_price_for_codes_with_mem_expanding_calls( key=0x7, value=Op.DELEGATECALL( gas=0x7530, - address=0x7B8C83E74CC8DFADB03138C2743C70588ACE4222, + address=addr_2, args_offset=0xFF, args_size=0xFF, ret_offset=0xFF, @@ -130,12 +120,7 @@ def test_new_gas_price_for_codes_with_mem_expanding_calls( ret_size=0xFF, ), ) - + Op.SSTORE( - key=0x3, - value=Op.BALANCE( - address=0xF1100237A29F570CBF8B107BA3CB5BF2DB42BD3F - ), - ) + + Op.SSTORE(key=0x3, value=Op.BALANCE(address=sender)) + Op.SSTORE(key=0xA, value=Op.GAS), storage={0: 18}, nonce=0, diff --git a/tests/ported_static/stMemExpandingEIP150Calls/test_oo_gin_return.py b/tests/ported_static/stMemExpandingEIP150Calls/test_oo_gin_return.py index fdc89fe7e7d..145e2b341e1 100644 --- a/tests/ported_static/stMemExpandingEIP150Calls/test_oo_gin_return.py +++ b/tests/ported_static/stMemExpandingEIP150Calls/test_oo_gin_return.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -83,9 +82,7 @@ def test_oo_gin_return( ) -> None: """Ori Pomerantz qbzzt1@gmail.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x40AC0FC28C27E961EE46EC43355A094DE205856EDBD4654CF2577C2608D4EC1E - ) + sender = pre.fund_eoa(amount=0xBA1A9CE0BA1A9CE) env = Environment( fee_recipient=coinbase, @@ -175,7 +172,6 @@ def test_oo_gin_return( nonce=0, address=Address(0xEBD3191DD8150F47E30F87927DB4592163EE9224), # noqa: E501 ) - pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stMemoryStressTest/test_call_bounds.py b/tests/ported_static/stMemoryStressTest/test_call_bounds.py index 4b1122057f9..49a2518ece9 100644 --- a/tests/ported_static/stMemoryStressTest/test_call_bounds.py +++ b/tests/ported_static/stMemoryStressTest/test_call_bounds.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -55,8 +54,8 @@ def test_call_bounds( ) -> None: """Test_call_bounds.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xEF111BBDAB3A1622936AFDFC9BBEC4B5BC05B4FA4B1EF0CE2A55CEF552F7650E + sender = pre.fund_eoa( + amount=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ) env = Environment( @@ -68,13 +67,20 @@ def test_call_bounds( gas_limit=9223372036854775807, ) + # Source: lll + # { (SSTORE 0 (ADD 1 (SLOAD 0))) } + addr = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x0, value=Op.ADD(0x1, Op.SLOAD(key=0x0))) + + Op.STOP, + nonce=0, + ) # Source: lll # { (CALL 0x7ffffffffffffff 0 0 0 0 0) (CALL 0x7ffffffffffffff 0 0 0xfffffff 0 0xfffffff) (CALL 0x7ffffffffffffff 0 0 0xffffffff 0 0xffffffff) (CALL 0x7ffffffffffffff 0 0xfffffff 0 0xfffffff 0) (CALL 0x7ffffffffffffff 0 0xffffffff 0 0xffffffff 0) (CALL 0x7ffffffffffffff 0 0xffffffffffffffff 0 0xffffffffffffffff 0) (CALL 0x7ffffffffffffff 0 0xffffffffffffffffffffffffffffffff 0 0xffffffffffffffffffffffffffffffff 0) (CALL 0x7ffffffffffffff 0 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 code=Op.POP( Op.CALL( gas=0x7FFFFFFFFFFFFFF, - address=0x849F53126ADE5F72469029537296F2B6644D4D41, + address=addr, value=0x0, args_offset=0x0, args_size=0x0, @@ -85,7 +91,7 @@ def test_call_bounds( + Op.POP( Op.CALL( gas=0x7FFFFFFFFFFFFFF, - address=0x849F53126ADE5F72469029537296F2B6644D4D41, + address=addr, value=0x0, args_offset=0x0, args_size=0xFFFFFFF, @@ -96,7 +102,7 @@ def test_call_bounds( + Op.POP( Op.CALL( gas=0x7FFFFFFFFFFFFFF, - address=0x849F53126ADE5F72469029537296F2B6644D4D41, + address=addr, value=0x0, args_offset=0x0, args_size=0xFFFFFFFF, @@ -107,7 +113,7 @@ def test_call_bounds( + Op.POP( Op.CALL( gas=0x7FFFFFFFFFFFFFF, - address=0x849F53126ADE5F72469029537296F2B6644D4D41, + address=addr, value=0x0, args_offset=0xFFFFFFF, args_size=0x0, @@ -118,7 +124,7 @@ def test_call_bounds( + Op.POP( Op.CALL( gas=0x7FFFFFFFFFFFFFF, - address=0x849F53126ADE5F72469029537296F2B6644D4D41, + address=addr, value=0x0, args_offset=0xFFFFFFFF, args_size=0x0, @@ -129,7 +135,7 @@ def test_call_bounds( + Op.POP( Op.CALL( gas=0x7FFFFFFFFFFFFFF, - address=0x849F53126ADE5F72469029537296F2B6644D4D41, + address=addr, value=0x0, args_offset=0xFFFFFFFFFFFFFFFF, args_size=0x0, @@ -140,7 +146,7 @@ def test_call_bounds( + Op.POP( Op.CALL( gas=0x7FFFFFFFFFFFFFF, - address=0x849F53126ADE5F72469029537296F2B6644D4D41, + address=addr, value=0x0, args_offset=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, args_size=0x0, @@ -150,7 +156,7 @@ def test_call_bounds( ) + Op.CALL( gas=0x7FFFFFFFFFFFFFF, - address=0x849F53126ADE5F72469029537296F2B6644D4D41, + address=addr, value=0x0, args_offset=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, # noqa: E501 args_size=0x0, @@ -159,18 +165,6 @@ def test_call_bounds( ) + Op.STOP, nonce=0, - address=Address(0x5F620F2EA7307FD66700749255ADE959893706FF), # noqa: E501 - ) - # Source: lll - # { (SSTORE 0 (ADD 1 (SLOAD 0))) } - addr = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x0, value=Op.ADD(0x1, Op.SLOAD(key=0x0))) - + Op.STOP, - nonce=0, - address=Address(0x849F53126ADE5F72469029537296F2B6644D4D41), # noqa: E501 - ) - pre[sender] = Account( - balance=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ) tx_data = [ diff --git a/tests/ported_static/stMemoryStressTest/test_call_bounds2.py b/tests/ported_static/stMemoryStressTest/test_call_bounds2.py index d3014037e9a..3638beda9b6 100644 --- a/tests/ported_static/stMemoryStressTest/test_call_bounds2.py +++ b/tests/ported_static/stMemoryStressTest/test_call_bounds2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -55,8 +54,8 @@ def test_call_bounds2( ) -> None: """Test_call_bounds2.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xEF111BBDAB3A1622936AFDFC9BBEC4B5BC05B4FA4B1EF0CE2A55CEF552F7650E + sender = pre.fund_eoa( + amount=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ) env = Environment( @@ -68,12 +67,19 @@ def test_call_bounds2( gas_limit=9223372036854775807, ) + # Source: lll + # { (SSTORE 0 (ADD 1 (SLOAD 0))) } + addr = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x0, value=Op.ADD(0x1, Op.SLOAD(key=0x0))) + + Op.STOP, + nonce=0, + ) # Source: lll # { (CALL 0x7ffffffffffffff 0 0xfffffff 0xfffffff 0xfffffff 0xfffffff) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 code=Op.CALL( gas=0x7FFFFFFFFFFFFFF, - address=0x849F53126ADE5F72469029537296F2B6644D4D41, + address=addr, value=0x0, args_offset=0xFFFFFFF, args_size=0xFFFFFFF, @@ -82,18 +88,6 @@ def test_call_bounds2( ) + Op.STOP, nonce=0, - address=Address(0xB6055EE15F692591C71B50A7BDA55180B78F6EF9), # noqa: E501 - ) - # Source: lll - # { (SSTORE 0 (ADD 1 (SLOAD 0))) } - addr = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x0, value=Op.ADD(0x1, Op.SLOAD(key=0x0))) - + Op.STOP, - nonce=0, - address=Address(0x849F53126ADE5F72469029537296F2B6644D4D41), # noqa: E501 - ) - pre[sender] = Account( - balance=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ) tx_data = [ diff --git a/tests/ported_static/stMemoryStressTest/test_call_bounds2a.py b/tests/ported_static/stMemoryStressTest/test_call_bounds2a.py index 4824d8563f1..1065f6cec49 100644 --- a/tests/ported_static/stMemoryStressTest/test_call_bounds2a.py +++ b/tests/ported_static/stMemoryStressTest/test_call_bounds2a.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -55,8 +54,8 @@ def test_call_bounds2a( ) -> None: """Test_call_bounds2a.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xEF111BBDAB3A1622936AFDFC9BBEC4B5BC05B4FA4B1EF0CE2A55CEF552F7650E + sender = pre.fund_eoa( + amount=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ) env = Environment( @@ -68,12 +67,19 @@ def test_call_bounds2a( gas_limit=9223372036854775807, ) + # Source: lll + # { (SSTORE 0 (ADD 1 (SLOAD 0))) } + addr = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x0, value=Op.ADD(0x1, Op.SLOAD(key=0x0))) + + Op.STOP, + nonce=0, + ) # Source: lll # { (CALL 0x7ffffffffffffff 0 0xffffffff 0xffffffff 0xffffffff 0xffffffff) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 code=Op.CALL( gas=0x7FFFFFFFFFFFFFF, - address=0x849F53126ADE5F72469029537296F2B6644D4D41, + address=addr, value=0x0, args_offset=0xFFFFFFFF, args_size=0xFFFFFFFF, @@ -82,18 +88,6 @@ def test_call_bounds2a( ) + Op.STOP, nonce=0, - address=Address(0x6C184E7E792470E474B189A511B48F06F0643D4B), # noqa: E501 - ) - # Source: lll - # { (SSTORE 0 (ADD 1 (SLOAD 0))) } - addr = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x0, value=Op.ADD(0x1, Op.SLOAD(key=0x0))) - + Op.STOP, - nonce=0, - address=Address(0x849F53126ADE5F72469029537296F2B6644D4D41), # noqa: E501 - ) - pre[sender] = Account( - balance=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ) tx_data = [ diff --git a/tests/ported_static/stMemoryStressTest/test_call_bounds3.py b/tests/ported_static/stMemoryStressTest/test_call_bounds3.py index 85af0b5ba31..81ccd53caf4 100644 --- a/tests/ported_static/stMemoryStressTest/test_call_bounds3.py +++ b/tests/ported_static/stMemoryStressTest/test_call_bounds3.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -61,8 +60,8 @@ def test_call_bounds3( ) -> None: """Test_call_bounds3.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xEF111BBDAB3A1622936AFDFC9BBEC4B5BC05B4FA4B1EF0CE2A55CEF552F7650E + sender = pre.fund_eoa( + amount=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ) env = Environment( @@ -74,13 +73,20 @@ def test_call_bounds3( gas_limit=9223372036854775807, ) + # Source: lll + # { (SSTORE 0 (ADD 1 (SLOAD 0))) } + addr = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x0, value=Op.ADD(0x1, Op.SLOAD(key=0x0))) + + Op.STOP, + nonce=0, + ) # Source: lll # { (CALL 0x7ffffffffffffff 0 0 0xffffffffffffffff 0 0xffffffffffffffff) (CALL 0x7ffffffffffffff 0 0 0xffffffffffffffffffffffffffffffff 0 0xffffffffffffffffffffffffffffffff) (CALL 0x7ffffffffffffff 0 0 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) (CALL 0x7ffffffffffffff 0 0xffffffff 0xffffffff 0xffffffff 0xffffffff) (CALL 0x7ffffffffffffff 0 0xffffffffffffffff 0xffffffffffffffff 0xffffffffffffffff 0xffffffffffffffff) (CALL 0x7ffffffffffffff 0 0xffffffffffffffffffffffffffffffff 0xffffffffffffffffffffffffffffffff 0xffffffffffffffffffffffffffffffff 0xffffffffffffffffffffffffffffffff) (CALL 0x7ffffffffffffff 0 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 code=Op.POP( Op.CALL( gas=0x7FFFFFFFFFFFFFF, - address=0x849F53126ADE5F72469029537296F2B6644D4D41, + address=addr, value=0x0, args_offset=0x0, args_size=0xFFFFFFFFFFFFFFFF, @@ -91,7 +97,7 @@ def test_call_bounds3( + Op.POP( Op.CALL( gas=0x7FFFFFFFFFFFFFF, - address=0x849F53126ADE5F72469029537296F2B6644D4D41, + address=addr, value=0x0, args_offset=0x0, args_size=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, @@ -102,7 +108,7 @@ def test_call_bounds3( + Op.POP( Op.CALL( gas=0x7FFFFFFFFFFFFFF, - address=0x849F53126ADE5F72469029537296F2B6644D4D41, + address=addr, value=0x0, args_offset=0x0, args_size=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, # noqa: E501 @@ -113,7 +119,7 @@ def test_call_bounds3( + Op.POP( Op.CALL( gas=0x7FFFFFFFFFFFFFF, - address=0x849F53126ADE5F72469029537296F2B6644D4D41, + address=addr, value=0x0, args_offset=0xFFFFFFFF, args_size=0xFFFFFFFF, @@ -124,7 +130,7 @@ def test_call_bounds3( + Op.POP( Op.CALL( gas=0x7FFFFFFFFFFFFFF, - address=0x849F53126ADE5F72469029537296F2B6644D4D41, + address=addr, value=0x0, args_offset=0xFFFFFFFFFFFFFFFF, args_size=0xFFFFFFFFFFFFFFFF, @@ -135,7 +141,7 @@ def test_call_bounds3( + Op.POP( Op.CALL( gas=0x7FFFFFFFFFFFFFF, - address=0x849F53126ADE5F72469029537296F2B6644D4D41, + address=addr, value=0x0, args_offset=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, args_size=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, @@ -145,7 +151,7 @@ def test_call_bounds3( ) + Op.CALL( gas=0x7FFFFFFFFFFFFFF, - address=0x849F53126ADE5F72469029537296F2B6644D4D41, + address=addr, value=0x0, args_offset=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, # noqa: E501 args_size=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, # noqa: E501 @@ -154,18 +160,6 @@ def test_call_bounds3( ) + Op.STOP, nonce=0, - address=Address(0x82475C10FEA2425B322D1F97FCEF265C5DC7C8C9), # noqa: E501 - ) - # Source: lll - # { (SSTORE 0 (ADD 1 (SLOAD 0))) } - addr = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x0, value=Op.ADD(0x1, Op.SLOAD(key=0x0))) - + Op.STOP, - nonce=0, - address=Address(0x849F53126ADE5F72469029537296F2B6644D4D41), # noqa: E501 - ) - pre[sender] = Account( - balance=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ) tx_data = [ diff --git a/tests/ported_static/stMemoryStressTest/test_callcode_bounds.py b/tests/ported_static/stMemoryStressTest/test_callcode_bounds.py index e39eb09e713..3a7a1cd03ea 100644 --- a/tests/ported_static/stMemoryStressTest/test_callcode_bounds.py +++ b/tests/ported_static/stMemoryStressTest/test_callcode_bounds.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -55,8 +54,8 @@ def test_callcode_bounds( ) -> None: """Test_callcode_bounds.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x50EADFB1030587AB3A993A6ECC073041FC3B45E119DAA31A13D78C7E209631A5 + sender = pre.fund_eoa( + amount=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF # noqa: E501 ) env = Environment( @@ -68,13 +67,20 @@ def test_callcode_bounds( gas_limit=9223372036854775807, ) + # Source: lll + # { (SSTORE 0 (ADD 1 (SLOAD 0))) } + addr = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x0, value=Op.ADD(0x1, Op.SLOAD(key=0x0))) + + Op.STOP, + nonce=0, + ) # Source: lll # { (CALLCODE 0x7ffffffffffffff 0 0 0 0 0) (CALLCODE 0x7ffffffffffffff 0 0 0xfffffff 0 0xfffffff) (CALLCODE 0x7ffffffffffffff 0 0 0xffffffff 0 0xffffffff) (CALLCODE 0x7ffffffffffffff 0 0xfffffff 0 0xfffffff 0) (CALLCODE 0x7ffffffffffffff 0 0xffffffff 0 0xffffffff 0) (CALLCODE 0x7ffffffffffffff 0 0xffffffffffffffff 0 0xffffffffffffffff 0) (CALLCODE 0x7ffffffffffffff 0 0xffffffffffffffffffffffffffffffff 0 0xffffffffffffffffffffffffffffffff 0) (CALLCODE 0x7ffffffffffffff 0 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 code=Op.POP( Op.CALLCODE( gas=0x7FFFFFFFFFFFFFF, - address=0x849F53126ADE5F72469029537296F2B6644D4D41, + address=addr, value=0x0, args_offset=0x0, args_size=0x0, @@ -85,7 +91,7 @@ def test_callcode_bounds( + Op.POP( Op.CALLCODE( gas=0x7FFFFFFFFFFFFFF, - address=0x849F53126ADE5F72469029537296F2B6644D4D41, + address=addr, value=0x0, args_offset=0x0, args_size=0xFFFFFFF, @@ -96,7 +102,7 @@ def test_callcode_bounds( + Op.POP( Op.CALLCODE( gas=0x7FFFFFFFFFFFFFF, - address=0x849F53126ADE5F72469029537296F2B6644D4D41, + address=addr, value=0x0, args_offset=0x0, args_size=0xFFFFFFFF, @@ -107,7 +113,7 @@ def test_callcode_bounds( + Op.POP( Op.CALLCODE( gas=0x7FFFFFFFFFFFFFF, - address=0x849F53126ADE5F72469029537296F2B6644D4D41, + address=addr, value=0x0, args_offset=0xFFFFFFF, args_size=0x0, @@ -118,7 +124,7 @@ def test_callcode_bounds( + Op.POP( Op.CALLCODE( gas=0x7FFFFFFFFFFFFFF, - address=0x849F53126ADE5F72469029537296F2B6644D4D41, + address=addr, value=0x0, args_offset=0xFFFFFFFF, args_size=0x0, @@ -129,7 +135,7 @@ def test_callcode_bounds( + Op.POP( Op.CALLCODE( gas=0x7FFFFFFFFFFFFFF, - address=0x849F53126ADE5F72469029537296F2B6644D4D41, + address=addr, value=0x0, args_offset=0xFFFFFFFFFFFFFFFF, args_size=0x0, @@ -140,7 +146,7 @@ def test_callcode_bounds( + Op.POP( Op.CALLCODE( gas=0x7FFFFFFFFFFFFFF, - address=0x849F53126ADE5F72469029537296F2B6644D4D41, + address=addr, value=0x0, args_offset=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, args_size=0x0, @@ -150,7 +156,7 @@ def test_callcode_bounds( ) + Op.CALLCODE( gas=0x7FFFFFFFFFFFFFF, - address=0x849F53126ADE5F72469029537296F2B6644D4D41, + address=addr, value=0x0, args_offset=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, # noqa: E501 args_size=0x0, @@ -159,18 +165,6 @@ def test_callcode_bounds( ) + Op.STOP, nonce=0, - address=Address(0x3F4ED7C54CD8A44E2D6B4D967E8E070A8C4A4F34), # noqa: E501 - ) - # Source: lll - # { (SSTORE 0 (ADD 1 (SLOAD 0))) } - addr = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x0, value=Op.ADD(0x1, Op.SLOAD(key=0x0))) - + Op.STOP, - nonce=0, - address=Address(0x849F53126ADE5F72469029537296F2B6644D4D41), # noqa: E501 - ) - pre[sender] = Account( - balance=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF # noqa: E501 ) tx_data = [ diff --git a/tests/ported_static/stMemoryStressTest/test_callcode_bounds2.py b/tests/ported_static/stMemoryStressTest/test_callcode_bounds2.py index df3ea69f7d7..5496732ba6d 100644 --- a/tests/ported_static/stMemoryStressTest/test_callcode_bounds2.py +++ b/tests/ported_static/stMemoryStressTest/test_callcode_bounds2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -55,8 +54,8 @@ def test_callcode_bounds2( ) -> None: """Test_callcode_bounds2.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x50EADFB1030587AB3A993A6ECC073041FC3B45E119DAA31A13D78C7E209631A5 + sender = pre.fund_eoa( + amount=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF # noqa: E501 ) env = Environment( @@ -68,12 +67,19 @@ def test_callcode_bounds2( gas_limit=9223372036854775807, ) + # Source: lll + # { (SSTORE 0 (ADD 1 (SLOAD 0))) } + addr = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x0, value=Op.ADD(0x1, Op.SLOAD(key=0x0))) + + Op.STOP, + nonce=0, + ) # Source: lll # { (CALLCODE 0x7ffffffffffffff 0 0xfffffff 0xfffffff 0xfffffff 0xfffffff) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 code=Op.CALLCODE( gas=0x7FFFFFFFFFFFFFF, - address=0x849F53126ADE5F72469029537296F2B6644D4D41, + address=addr, value=0x0, args_offset=0xFFFFFFF, args_size=0xFFFFFFF, @@ -82,18 +88,6 @@ def test_callcode_bounds2( ) + Op.STOP, nonce=0, - address=Address(0x814CC86EB9CAA0E43CFEA934FBB77C7917F5CC0E), # noqa: E501 - ) - # Source: lll - # { (SSTORE 0 (ADD 1 (SLOAD 0))) } - addr = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x0, value=Op.ADD(0x1, Op.SLOAD(key=0x0))) - + Op.STOP, - nonce=0, - address=Address(0x849F53126ADE5F72469029537296F2B6644D4D41), # noqa: E501 - ) - pre[sender] = Account( - balance=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF # noqa: E501 ) tx_data = [ diff --git a/tests/ported_static/stMemoryStressTest/test_callcode_bounds3.py b/tests/ported_static/stMemoryStressTest/test_callcode_bounds3.py index 6a2ea1945e0..9bddda9e3be 100644 --- a/tests/ported_static/stMemoryStressTest/test_callcode_bounds3.py +++ b/tests/ported_static/stMemoryStressTest/test_callcode_bounds3.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -55,8 +54,8 @@ def test_callcode_bounds3( ) -> None: """Test_callcode_bounds3.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x50EADFB1030587AB3A993A6ECC073041FC3B45E119DAA31A13D78C7E209631A5 + sender = pre.fund_eoa( + amount=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF # noqa: E501 ) env = Environment( @@ -68,12 +67,19 @@ def test_callcode_bounds3( gas_limit=9223372036854775807, ) + # Source: lll + # { (SSTORE 0 (ADD 1 (SLOAD 0))) } + addr = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x0, value=Op.ADD(0x1, Op.SLOAD(key=0x0))) + + Op.STOP, + nonce=0, + ) # Source: lll # { (CALLCODE 0x7ffffffffffffff 0 0xffffffff 0xffffffff 0xffffffff 0xffffffff) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 code=Op.CALLCODE( gas=0x7FFFFFFFFFFFFFF, - address=0x849F53126ADE5F72469029537296F2B6644D4D41, + address=addr, value=0x0, args_offset=0xFFFFFFFF, args_size=0xFFFFFFFF, @@ -82,18 +88,6 @@ def test_callcode_bounds3( ) + Op.STOP, nonce=0, - address=Address(0x206C40E47A57C530785338BCD7F38A6197BEE97B), # noqa: E501 - ) - # Source: lll - # { (SSTORE 0 (ADD 1 (SLOAD 0))) } - addr = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x0, value=Op.ADD(0x1, Op.SLOAD(key=0x0))) - + Op.STOP, - nonce=0, - address=Address(0x849F53126ADE5F72469029537296F2B6644D4D41), # noqa: E501 - ) - pre[sender] = Account( - balance=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF # noqa: E501 ) tx_data = [ diff --git a/tests/ported_static/stMemoryStressTest/test_callcode_bounds4.py b/tests/ported_static/stMemoryStressTest/test_callcode_bounds4.py index 9607bc07420..fc8373060be 100644 --- a/tests/ported_static/stMemoryStressTest/test_callcode_bounds4.py +++ b/tests/ported_static/stMemoryStressTest/test_callcode_bounds4.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -61,8 +60,8 @@ def test_callcode_bounds4( ) -> None: """Test_callcode_bounds4.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x50EADFB1030587AB3A993A6ECC073041FC3B45E119DAA31A13D78C7E209631A5 + sender = pre.fund_eoa( + amount=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF # noqa: E501 ) env = Environment( @@ -74,13 +73,20 @@ def test_callcode_bounds4( gas_limit=9223372036854775807, ) + # Source: lll + # { (SSTORE 0 (ADD 1 (SLOAD 0))) } + addr = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x0, value=Op.ADD(0x1, Op.SLOAD(key=0x0))) + + Op.STOP, + nonce=0, + ) # Source: lll # { (CALLCODE 0x7ffffffffffffff 0 0 0xffffffffffffffff 0 0xffffffffffffffff) (CALLCODE 0x7ffffffffffffff 0 0 0xffffffffffffffffffffffffffffffff 0 0xffffffffffffffffffffffffffffffff) (CALLCODE 0x7ffffffffffffff 0 0 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) (CALLCODE 0x7ffffffffffffff 0 0xffffffffffffffff 0xffffffffffffffff 0xffffffffffffffff 0xffffffffffffffff) (CALLCODE 0x7ffffffffffffff 0 0xffffffffffffffff 0xffffffffffffffff 0xffffffffffffffff 0xffffffffffffffff) (CALLCODE 0x7ffffffffffffff 0 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) (CALLCODE 0x7ffffffffffffff 0 0xffffffffffffffffffffffffffffffff 0xffffffffffffffffffffffffffffffff 0xffffffffffffffffffffffffffffffff 0xffffffffffffffffffffffffffffffff) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 code=Op.POP( Op.CALLCODE( gas=0x7FFFFFFFFFFFFFF, - address=0x849F53126ADE5F72469029537296F2B6644D4D41, + address=addr, value=0x0, args_offset=0x0, args_size=0xFFFFFFFFFFFFFFFF, @@ -91,7 +97,7 @@ def test_callcode_bounds4( + Op.POP( Op.CALLCODE( gas=0x7FFFFFFFFFFFFFF, - address=0x849F53126ADE5F72469029537296F2B6644D4D41, + address=addr, value=0x0, args_offset=0x0, args_size=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, @@ -102,7 +108,7 @@ def test_callcode_bounds4( + Op.POP( Op.CALLCODE( gas=0x7FFFFFFFFFFFFFF, - address=0x849F53126ADE5F72469029537296F2B6644D4D41, + address=addr, value=0x0, args_offset=0x0, args_size=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, # noqa: E501 @@ -113,7 +119,7 @@ def test_callcode_bounds4( + Op.POP( Op.CALLCODE( gas=0x7FFFFFFFFFFFFFF, - address=0x849F53126ADE5F72469029537296F2B6644D4D41, + address=addr, value=0x0, args_offset=0xFFFFFFFFFFFFFFFF, args_size=0xFFFFFFFFFFFFFFFF, @@ -125,7 +131,7 @@ def test_callcode_bounds4( + Op.POP( Op.CALLCODE( gas=0x7FFFFFFFFFFFFFF, - address=0x849F53126ADE5F72469029537296F2B6644D4D41, + address=addr, value=0x0, args_offset=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, # noqa: E501 args_size=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, # noqa: E501 @@ -135,7 +141,7 @@ def test_callcode_bounds4( ) + Op.CALLCODE( gas=0x7FFFFFFFFFFFFFF, - address=0x849F53126ADE5F72469029537296F2B6644D4D41, + address=addr, value=0x0, args_offset=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, args_size=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, @@ -144,18 +150,6 @@ def test_callcode_bounds4( ) + Op.STOP, nonce=0, - address=Address(0xC0479FBAC15CB575E66DED014FD60CEB98749B04), # noqa: E501 - ) - # Source: lll - # { (SSTORE 0 (ADD 1 (SLOAD 0))) } - addr = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x0, value=Op.ADD(0x1, Op.SLOAD(key=0x0))) - + Op.STOP, - nonce=0, - address=Address(0x849F53126ADE5F72469029537296F2B6644D4D41), # noqa: E501 - ) - pre[sender] = Account( - balance=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF # noqa: E501 ) tx_data = [ diff --git a/tests/ported_static/stMemoryStressTest/test_create_bounds.py b/tests/ported_static/stMemoryStressTest/test_create_bounds.py index 82eceb0f60e..992a097d01c 100644 --- a/tests/ported_static/stMemoryStressTest/test_create_bounds.py +++ b/tests/ported_static/stMemoryStressTest/test_create_bounds.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -57,8 +56,8 @@ def test_create_bounds( """Test_create_bounds.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) contract_0 = Address(0x1000000000000000000000000000000000000000) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 + sender = pre.fund_eoa( + amount=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ) env = Environment( @@ -84,10 +83,6 @@ def test_create_bounds( + Op.STOP, balance=100, nonce=0, - address=Address(0x1000000000000000000000000000000000000000), # noqa: E501 - ) - pre[sender] = Account( - balance=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ) tx_data = [ diff --git a/tests/ported_static/stMemoryStressTest/test_create_bounds2.py b/tests/ported_static/stMemoryStressTest/test_create_bounds2.py index 23c78763d23..d136a0b2ed3 100644 --- a/tests/ported_static/stMemoryStressTest/test_create_bounds2.py +++ b/tests/ported_static/stMemoryStressTest/test_create_bounds2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -57,8 +56,8 @@ def test_create_bounds2( """Test_create_bounds2.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) contract_0 = Address(0x1000000000000000000000000000000000000000) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 + sender = pre.fund_eoa( + amount=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ) env = Environment( @@ -83,10 +82,6 @@ def test_create_bounds2( + Op.STOP, balance=100, nonce=0, - address=Address(0x1000000000000000000000000000000000000000), # noqa: E501 - ) - pre[sender] = Account( - balance=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ) tx_data = [ diff --git a/tests/ported_static/stMemoryStressTest/test_create_bounds3.py b/tests/ported_static/stMemoryStressTest/test_create_bounds3.py index db1768045c0..d78ccc430d7 100644 --- a/tests/ported_static/stMemoryStressTest/test_create_bounds3.py +++ b/tests/ported_static/stMemoryStressTest/test_create_bounds3.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -63,8 +62,8 @@ def test_create_bounds3( """Test_create_bounds3.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) contract_0 = Address(0x1000000000000000000000000000000000000000) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 + sender = pre.fund_eoa( + amount=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ) env = Environment( @@ -135,10 +134,6 @@ def test_create_bounds3( + Op.STOP, balance=100, nonce=0, - address=Address(0x1000000000000000000000000000000000000000), # noqa: E501 - ) - pre[sender] = Account( - balance=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ) tx_data = [ diff --git a/tests/ported_static/stMemoryStressTest/test_delegatecall_bounds.py b/tests/ported_static/stMemoryStressTest/test_delegatecall_bounds.py index e4a4356ae1e..bdc3e3a6b0d 100644 --- a/tests/ported_static/stMemoryStressTest/test_delegatecall_bounds.py +++ b/tests/ported_static/stMemoryStressTest/test_delegatecall_bounds.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -55,8 +54,8 @@ def test_delegatecall_bounds( ) -> None: """Test_delegatecall_bounds.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x50EADFB1030587AB3A993A6ECC073041FC3B45E119DAA31A13D78C7E209631A5 + sender = pre.fund_eoa( + amount=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF # noqa: E501 ) env = Environment( @@ -68,13 +67,20 @@ def test_delegatecall_bounds( gas_limit=9223372036854775807, ) + # Source: lll + # { (SSTORE 0 (ADD 1 (SLOAD 0))) } + addr = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x0, value=Op.ADD(0x1, Op.SLOAD(key=0x0))) + + Op.STOP, + nonce=0, + ) # Source: lll # {(DELEGATECALL 0x7ffffffffffffff 0 0 0 0) (DELEGATECALL 0x7ffffffffffffff 0 0xfffffff 0 0xfffffff) (DELEGATECALL 0x7ffffffffffffff 0 0xffffffff 0 0xffffffff) (DELEGATECALL 0x7ffffffffffffff 0xfffffff 0 0xfffffff 0) (DELEGATECALL 0x7ffffffffffffff 0xffffffff 0 0xffffffff 0) (DELEGATECALL 0x7ffffffffffffff 0xffffffffffffffff 0 0xffffffffffffffff 0) (DELEGATECALL 0x7ffffffffffffff 0xffffffffffffffffffffffffffffffff 0 0xffffffffffffffffffffffffffffffff 0) (DELEGATECALL 0x7ffffffffffffff 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0) (DELEGATECALL 0x7ffffffffffffff 0xfffffff 0xfffffff 0xfffffff 0xfffffff) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 code=Op.POP( Op.DELEGATECALL( gas=0x7FFFFFFFFFFFFFF, - address=0x849F53126ADE5F72469029537296F2B6644D4D41, + address=addr, args_offset=0x0, args_size=0x0, ret_offset=0x0, @@ -84,7 +90,7 @@ def test_delegatecall_bounds( + Op.POP( Op.DELEGATECALL( gas=0x7FFFFFFFFFFFFFF, - address=0x849F53126ADE5F72469029537296F2B6644D4D41, + address=addr, args_offset=0x0, args_size=0xFFFFFFF, ret_offset=0x0, @@ -94,7 +100,7 @@ def test_delegatecall_bounds( + Op.POP( Op.DELEGATECALL( gas=0x7FFFFFFFFFFFFFF, - address=0x849F53126ADE5F72469029537296F2B6644D4D41, + address=addr, args_offset=0x0, args_size=0xFFFFFFFF, ret_offset=0x0, @@ -104,7 +110,7 @@ def test_delegatecall_bounds( + Op.POP( Op.DELEGATECALL( gas=0x7FFFFFFFFFFFFFF, - address=0x849F53126ADE5F72469029537296F2B6644D4D41, + address=addr, args_offset=0xFFFFFFF, args_size=0x0, ret_offset=0xFFFFFFF, @@ -114,7 +120,7 @@ def test_delegatecall_bounds( + Op.POP( Op.DELEGATECALL( gas=0x7FFFFFFFFFFFFFF, - address=0x849F53126ADE5F72469029537296F2B6644D4D41, + address=addr, args_offset=0xFFFFFFFF, args_size=0x0, ret_offset=0xFFFFFFFF, @@ -124,7 +130,7 @@ def test_delegatecall_bounds( + Op.POP( Op.DELEGATECALL( gas=0x7FFFFFFFFFFFFFF, - address=0x849F53126ADE5F72469029537296F2B6644D4D41, + address=addr, args_offset=0xFFFFFFFFFFFFFFFF, args_size=0x0, ret_offset=0xFFFFFFFFFFFFFFFF, @@ -134,7 +140,7 @@ def test_delegatecall_bounds( + Op.POP( Op.DELEGATECALL( gas=0x7FFFFFFFFFFFFFF, - address=0x849F53126ADE5F72469029537296F2B6644D4D41, + address=addr, args_offset=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, args_size=0x0, ret_offset=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, @@ -144,7 +150,7 @@ def test_delegatecall_bounds( + Op.POP( Op.DELEGATECALL( gas=0x7FFFFFFFFFFFFFF, - address=0x849F53126ADE5F72469029537296F2B6644D4D41, + address=addr, args_offset=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, # noqa: E501 args_size=0x0, ret_offset=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, # noqa: E501 @@ -153,7 +159,7 @@ def test_delegatecall_bounds( ) + Op.DELEGATECALL( gas=0x7FFFFFFFFFFFFFF, - address=0x849F53126ADE5F72469029537296F2B6644D4D41, + address=addr, args_offset=0xFFFFFFF, args_size=0xFFFFFFF, ret_offset=0xFFFFFFF, @@ -161,18 +167,6 @@ def test_delegatecall_bounds( ) + Op.STOP, nonce=0, - address=Address(0x75BC6DCEF9BDDA4E2EB511E92ED4815699F32B4F), # noqa: E501 - ) - # Source: lll - # { (SSTORE 0 (ADD 1 (SLOAD 0))) } - addr = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x0, value=Op.ADD(0x1, Op.SLOAD(key=0x0))) - + Op.STOP, - nonce=0, - address=Address(0x849F53126ADE5F72469029537296F2B6644D4D41), # noqa: E501 - ) - pre[sender] = Account( - balance=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF # noqa: E501 ) tx_data = [ diff --git a/tests/ported_static/stMemoryStressTest/test_delegatecall_bounds2.py b/tests/ported_static/stMemoryStressTest/test_delegatecall_bounds2.py index 7d35a713b94..4dde13d2569 100644 --- a/tests/ported_static/stMemoryStressTest/test_delegatecall_bounds2.py +++ b/tests/ported_static/stMemoryStressTest/test_delegatecall_bounds2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -55,8 +54,8 @@ def test_delegatecall_bounds2( ) -> None: """Test_delegatecall_bounds2.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x50EADFB1030587AB3A993A6ECC073041FC3B45E119DAA31A13D78C7E209631A5 + sender = pre.fund_eoa( + amount=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF # noqa: E501 ) env = Environment( @@ -68,12 +67,19 @@ def test_delegatecall_bounds2( gas_limit=9223372036854775807, ) + # Source: lll + # { (SSTORE 0 (ADD 1 (SLOAD 0))) } + addr = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x0, value=Op.ADD(0x1, Op.SLOAD(key=0x0))) + + Op.STOP, + nonce=0, + ) # Source: lll # { (DELEGATECALL 0x7ffffffffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 code=Op.DELEGATECALL( gas=0x7FFFFFFFFFFFFFF, - address=0x849F53126ADE5F72469029537296F2B6644D4D41, + address=addr, args_offset=0xFFFFFFFF, args_size=0xFFFFFFFF, ret_offset=0xFFFFFFFF, @@ -81,18 +87,6 @@ def test_delegatecall_bounds2( ) + Op.STOP, nonce=0, - address=Address(0x7B7E1FED40D6CB2420C7F2718725BADB76616D4D), # noqa: E501 - ) - # Source: lll - # { (SSTORE 0 (ADD 1 (SLOAD 0))) } - addr = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x0, value=Op.ADD(0x1, Op.SLOAD(key=0x0))) - + Op.STOP, - nonce=0, - address=Address(0x849F53126ADE5F72469029537296F2B6644D4D41), # noqa: E501 - ) - pre[sender] = Account( - balance=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF # noqa: E501 ) tx_data = [ diff --git a/tests/ported_static/stMemoryStressTest/test_delegatecall_bounds3.py b/tests/ported_static/stMemoryStressTest/test_delegatecall_bounds3.py index cf48a071112..804fc02744b 100644 --- a/tests/ported_static/stMemoryStressTest/test_delegatecall_bounds3.py +++ b/tests/ported_static/stMemoryStressTest/test_delegatecall_bounds3.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -61,8 +60,8 @@ def test_delegatecall_bounds3( ) -> None: """Test_delegatecall_bounds3.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x50EADFB1030587AB3A993A6ECC073041FC3B45E119DAA31A13D78C7E209631A5 + sender = pre.fund_eoa( + amount=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF # noqa: E501 ) env = Environment( @@ -74,13 +73,20 @@ def test_delegatecall_bounds3( gas_limit=9223372036854775807, ) + # Source: lll + # { (SSTORE 0 (ADD 1 (SLOAD 0))) } + addr = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x0, value=Op.ADD(0x1, Op.SLOAD(key=0x0))) + + Op.STOP, + nonce=0, + ) # Source: lll # { (DELEGATECALL 0x7ffffffffffffff 0 0xffffffffffffffff 0 0xffffffffffffffff) (DELEGATECALL 0x7ffffffffffffff 0 0xffffffffffffffffffffffffffffffff 0 0xffffffffffffffffffffffffffffffff) (DELEGATECALL 0x7ffffffffffffff 0 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) (DELEGATECALL 0x7ffffffffffffff 0xffffffffffffffff 0xffffffffffffffff 0xffffffffffffffff 0xffffffffffffffff) (DELEGATECALL 0x7ffffffffffffff 0xffffffffffffffffffffffffffffffff 0xffffffffffffffffffffffffffffffff 0xffffffffffffffffffffffffffffffff 0xffffffffffffffffffffffffffffffff) (DELEGATECALL 0x7ffffffffffffff 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 code=Op.POP( Op.DELEGATECALL( gas=0x7FFFFFFFFFFFFFF, - address=0x849F53126ADE5F72469029537296F2B6644D4D41, + address=addr, args_offset=0x0, args_size=0xFFFFFFFFFFFFFFFF, ret_offset=0x0, @@ -90,7 +96,7 @@ def test_delegatecall_bounds3( + Op.POP( Op.DELEGATECALL( gas=0x7FFFFFFFFFFFFFF, - address=0x849F53126ADE5F72469029537296F2B6644D4D41, + address=addr, args_offset=0x0, args_size=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, ret_offset=0x0, @@ -100,7 +106,7 @@ def test_delegatecall_bounds3( + Op.POP( Op.DELEGATECALL( gas=0x7FFFFFFFFFFFFFF, - address=0x849F53126ADE5F72469029537296F2B6644D4D41, + address=addr, args_offset=0x0, args_size=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, # noqa: E501 ret_offset=0x0, @@ -110,7 +116,7 @@ def test_delegatecall_bounds3( + Op.POP( Op.DELEGATECALL( gas=0x7FFFFFFFFFFFFFF, - address=0x849F53126ADE5F72469029537296F2B6644D4D41, + address=addr, args_offset=0xFFFFFFFFFFFFFFFF, args_size=0xFFFFFFFFFFFFFFFF, ret_offset=0xFFFFFFFFFFFFFFFF, @@ -120,7 +126,7 @@ def test_delegatecall_bounds3( + Op.POP( Op.DELEGATECALL( gas=0x7FFFFFFFFFFFFFF, - address=0x849F53126ADE5F72469029537296F2B6644D4D41, + address=addr, args_offset=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, args_size=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, ret_offset=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, @@ -129,7 +135,7 @@ def test_delegatecall_bounds3( ) + Op.DELEGATECALL( gas=0x7FFFFFFFFFFFFFF, - address=0x849F53126ADE5F72469029537296F2B6644D4D41, + address=addr, args_offset=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, # noqa: E501 args_size=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, # noqa: E501 ret_offset=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, # noqa: E501 @@ -137,18 +143,6 @@ def test_delegatecall_bounds3( ) + Op.STOP, nonce=0, - address=Address(0x5A6CC254B318BB5F7539FCC10CFB01C517154C5C), # noqa: E501 - ) - # Source: lll - # { (SSTORE 0 (ADD 1 (SLOAD 0))) } - addr = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x0, value=Op.ADD(0x1, Op.SLOAD(key=0x0))) - + Op.STOP, - nonce=0, - address=Address(0x849F53126ADE5F72469029537296F2B6644D4D41), # noqa: E501 - ) - pre[sender] = Account( - balance=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF # noqa: E501 ) tx_data = [ diff --git a/tests/ported_static/stMemoryStressTest/test_dup_bounds.py b/tests/ported_static/stMemoryStressTest/test_dup_bounds.py index 1996ca05c2e..8f413ec636b 100644 --- a/tests/ported_static/stMemoryStressTest/test_dup_bounds.py +++ b/tests/ported_static/stMemoryStressTest/test_dup_bounds.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -61,9 +60,7 @@ def test_dup_bounds( ) -> None: """Test_dup_bounds.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x31B5AF02B012484AE954B3A43943242EDE546A2E76FC0A6ACC17435107C385EB - ) + sender = pre.fund_eoa(amount=0x7FFFFFFFFFFFFFFF) env = Environment( fee_recipient=coinbase, @@ -220,9 +217,7 @@ def test_dup_bounds( * 8 + Op.DUP8, nonce=0, - address=Address(0xE860BD7BF0474923E526CBE86FA5B5F76AEE36ED), # noqa: E501 ) - pre[sender] = Account(balance=0x7FFFFFFFFFFFFFFF) tx_data = [ Bytes(""), diff --git a/tests/ported_static/stMemoryStressTest/test_fill_stack.py b/tests/ported_static/stMemoryStressTest/test_fill_stack.py index 1813133b035..ecb5ba40c04 100644 --- a/tests/ported_static/stMemoryStressTest/test_fill_stack.py +++ b/tests/ported_static/stMemoryStressTest/test_fill_stack.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -58,9 +57,7 @@ def test_fill_stack( ) -> None: """Test_fill_stack.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0x23000FE3D08CDEBA75EB2E2E2909F842DBF48AA0C566F49101E8285C8DEC62D6 - ) + sender = pre.fund_eoa(amount=0x152D02C7E14AF6800000) env = Environment( fee_recipient=coinbase, @@ -95,7 +92,6 @@ def test_fill_stack( + Op.MLOAD(offset=0x0) + Op.SSTORE, nonce=0, - address=Address(0x709EE68118AB00CE0BAB659C9AA89744B35703FA), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -113,7 +109,6 @@ def test_fill_stack( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0x152D02C7E14AF6800000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stMemoryStressTest/test_jump_bounds.py b/tests/ported_static/stMemoryStressTest/test_jump_bounds.py index 8a89ac36082..2a1a55e636a 100644 --- a/tests/ported_static/stMemoryStressTest/test_jump_bounds.py +++ b/tests/ported_static/stMemoryStressTest/test_jump_bounds.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -55,9 +54,7 @@ def test_jump_bounds( ) -> None: """Test_jump_bounds.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x31B5AF02B012484AE954B3A43943242EDE546A2E76FC0A6ACC17435107C385EB - ) + sender = pre.fund_eoa(amount=0x7FFFFFFFFFFFFFFF) env = Environment( fee_recipient=coinbase, @@ -73,9 +70,7 @@ def test_jump_bounds( target = pre.deploy_contract( # noqa: F841 code=Op.JUMP(pc=0x0) + Op.STOP, nonce=0, - address=Address(0xB2448DEB71E9FD31ED854E3B856F729ADBC0C288), # noqa: E501 ) - pre[sender] = Account(balance=0x7FFFFFFFFFFFFFFF) tx_data = [ Bytes(""), diff --git a/tests/ported_static/stMemoryStressTest/test_jump_bounds2.py b/tests/ported_static/stMemoryStressTest/test_jump_bounds2.py index 1e39ba7a289..eaaebf34d20 100644 --- a/tests/ported_static/stMemoryStressTest/test_jump_bounds2.py +++ b/tests/ported_static/stMemoryStressTest/test_jump_bounds2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -55,9 +54,7 @@ def test_jump_bounds2( ) -> None: """Test_jump_bounds2.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x31B5AF02B012484AE954B3A43943242EDE546A2E76FC0A6ACC17435107C385EB - ) + sender = pre.fund_eoa(amount=0x7FFFFFFFFFFFFFFF) env = Environment( fee_recipient=coinbase, @@ -78,9 +75,7 @@ def test_jump_bounds2( pc=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF # noqa: E501 ), nonce=0, - address=Address(0xDE573D26B8C4A55FD9DAA17E8F93347C269EE4F6), # noqa: E501 ) - pre[sender] = Account(balance=0x7FFFFFFFFFFFFFFF) tx_data = [ Bytes(""), diff --git a/tests/ported_static/stMemoryStressTest/test_jumpi_bounds.py b/tests/ported_static/stMemoryStressTest/test_jumpi_bounds.py index a29444e3f49..fcb17d5633e 100644 --- a/tests/ported_static/stMemoryStressTest/test_jumpi_bounds.py +++ b/tests/ported_static/stMemoryStressTest/test_jumpi_bounds.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -55,9 +54,7 @@ def test_jumpi_bounds( ) -> None: """Test_jumpi_bounds.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x31B5AF02B012484AE954B3A43943242EDE546A2E76FC0A6ACC17435107C385EB - ) + sender = pre.fund_eoa(amount=0x7FFFFFFFFFFFFFFF) env = Environment( fee_recipient=coinbase, @@ -80,9 +77,7 @@ def test_jumpi_bounds( ) + Op.STOP, nonce=0, - address=Address(0x147F3300E29F2F09880E97B81F7B3EBCF78863E9), # noqa: E501 ) - pre[sender] = Account(balance=0x7FFFFFFFFFFFFFFF) tx_data = [ Bytes(""), diff --git a/tests/ported_static/stMemoryStressTest/test_mload32bit_bound.py b/tests/ported_static/stMemoryStressTest/test_mload32bit_bound.py index 629438d5d7b..5763dad5154 100644 --- a/tests/ported_static/stMemoryStressTest/test_mload32bit_bound.py +++ b/tests/ported_static/stMemoryStressTest/test_mload32bit_bound.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -58,9 +57,7 @@ def test_mload32bit_bound( ) -> None: """Test_mload32bit_bound.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xA3A3360EDACC183E5D6D28657FC0A09CD4819B2C73A02881B04471F81BE35A5A - ) + sender = pre.fund_eoa(amount=0x3E801F4FA93760) env = Environment( fee_recipient=coinbase, @@ -77,9 +74,7 @@ def test_mload32bit_bound( code=Op.SSTORE(key=0x1, value=Op.MLOAD(offset=0x100000000)) + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x74639ACDFE345F749D595381961DAC48C3C5E56A), # noqa: E501 ) - pre[sender] = Account(balance=0x3E801F4FA93760) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stMemoryStressTest/test_mload32bit_bound2.py b/tests/ported_static/stMemoryStressTest/test_mload32bit_bound2.py index c166e7919da..322e11428e8 100644 --- a/tests/ported_static/stMemoryStressTest/test_mload32bit_bound2.py +++ b/tests/ported_static/stMemoryStressTest/test_mload32bit_bound2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -58,9 +57,7 @@ def test_mload32bit_bound2( ) -> None: """Test_mload32bit_bound2.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xD566533F0CCAB46749AC8725E15DA8CE513758257002A8B481F6F5F96484C5ED - ) + sender = pre.fund_eoa(amount=0x157B5373E07CA) env = Environment( fee_recipient=coinbase, @@ -77,9 +74,7 @@ def test_mload32bit_bound2( code=Op.SSTORE(key=0x1, value=Op.MLOAD(offset=0x177359400)) + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xC287E277D2163771E55D630BDD96C6405A6FE251), # noqa: E501 ) - pre[sender] = Account(balance=0x157B5373E07CA) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stMemoryStressTest/test_mload32bit_bound_msize.py b/tests/ported_static/stMemoryStressTest/test_mload32bit_bound_msize.py index 87978c1736d..ccff8e7bdf2 100644 --- a/tests/ported_static/stMemoryStressTest/test_mload32bit_bound_msize.py +++ b/tests/ported_static/stMemoryStressTest/test_mload32bit_bound_msize.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -58,9 +57,7 @@ def test_mload32bit_bound_msize( ) -> None: """Test_mload32bit_bound_msize.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x7DD14755C573E37C1F649B0C53B9815F76AEBD636DF7CCFA97F4579F33BA59A0 - ) + sender = pre.fund_eoa(amount=0x186A0C3B1E19A180) env = Environment( fee_recipient=coinbase, @@ -79,9 +76,7 @@ def test_mload32bit_bound_msize( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x15D5A32351458FF3DCA214BD202C21F066031AE1), # noqa: E501 ) - pre[sender] = Account(balance=0x186A0C3B1E19A180) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stMemoryStressTest/test_mload32bit_bound_return.py b/tests/ported_static/stMemoryStressTest/test_mload32bit_bound_return.py index ce5d14212ed..26035b812b3 100644 --- a/tests/ported_static/stMemoryStressTest/test_mload32bit_bound_return.py +++ b/tests/ported_static/stMemoryStressTest/test_mload32bit_bound_return.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -55,9 +54,7 @@ def test_mload32bit_bound_return( ) -> None: """Test_mload32bit_bound_return.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x7DD14755C573E37C1F649B0C53B9815F76AEBD636DF7CCFA97F4579F33BA59A0 - ) + sender = pre.fund_eoa(amount=0x186A0C3B1E19A180) env = Environment( fee_recipient=coinbase, @@ -74,9 +71,7 @@ def test_mload32bit_bound_return( code=Op.RETURN(offset=0x0, size=0xFFFFFFFF) + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xD9CBA08B7A9695800F57E226045176CF420CA0C1), # noqa: E501 ) - pre[sender] = Account(balance=0x186A0C3B1E19A180) tx_data = [ Bytes(""), diff --git a/tests/ported_static/stMemoryStressTest/test_mload32bit_bound_return2.py b/tests/ported_static/stMemoryStressTest/test_mload32bit_bound_return2.py index 7dfd0fd7b2c..a6ff16bdf72 100644 --- a/tests/ported_static/stMemoryStressTest/test_mload32bit_bound_return2.py +++ b/tests/ported_static/stMemoryStressTest/test_mload32bit_bound_return2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -55,9 +54,7 @@ def test_mload32bit_bound_return2( ) -> None: """Test_mload32bit_bound_return2.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x7DD14755C573E37C1F649B0C53B9815F76AEBD636DF7CCFA97F4579F33BA59A0 - ) + sender = pre.fund_eoa(amount=0x186A0C3B1E19A180) env = Environment( fee_recipient=coinbase, @@ -76,9 +73,7 @@ def test_mload32bit_bound_return2( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x48C46C265C6883F765EEA264F561FE7637968B4E), # noqa: E501 ) - pre[sender] = Account(balance=0x186A0C3B1E19A180) tx_data = [ Bytes(""), diff --git a/tests/ported_static/stMemoryStressTest/test_mload_bounds.py b/tests/ported_static/stMemoryStressTest/test_mload_bounds.py index 576951a18c8..4a0eff0c7e6 100644 --- a/tests/ported_static/stMemoryStressTest/test_mload_bounds.py +++ b/tests/ported_static/stMemoryStressTest/test_mload_bounds.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -55,9 +54,7 @@ def test_mload_bounds( ) -> None: """Test_mload_bounds.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xFE5BE118AD5955E30E0FFC4E1F1BBDCAA7F5A67CB1426C4AC19E32C80ECCDC06 - ) + sender = pre.fund_eoa(amount=0x7FFFFFFFFFFFFFFFFFF) env = Environment( fee_recipient=coinbase, @@ -75,9 +72,7 @@ def test_mload_bounds( + Op.MLOAD(offset=0xFFFFFFFF) + Op.STOP, nonce=0, - address=Address(0x8B0647E983082E6923F7B20E38972690FCE91E9B), # noqa: E501 ) - pre[sender] = Account(balance=0x7FFFFFFFFFFFFFFFFFF) tx_data = [ Bytes(""), diff --git a/tests/ported_static/stMemoryStressTest/test_mload_bounds2.py b/tests/ported_static/stMemoryStressTest/test_mload_bounds2.py index cca60078e35..e35d61df04c 100644 --- a/tests/ported_static/stMemoryStressTest/test_mload_bounds2.py +++ b/tests/ported_static/stMemoryStressTest/test_mload_bounds2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -55,9 +54,7 @@ def test_mload_bounds2( ) -> None: """Test_mload_bounds2.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xFE5BE118AD5955E30E0FFC4E1F1BBDCAA7F5A67CB1426C4AC19E32C80ECCDC06 - ) + sender = pre.fund_eoa(amount=0x7FFFFFFFFFFFFFFFFFF) env = Environment( fee_recipient=coinbase, @@ -78,9 +75,7 @@ def test_mload_bounds2( ) + Op.STOP, nonce=0, - address=Address(0xB581F1A0F5810AD50A1F96713DF63EB8CB0EBF8A), # noqa: E501 ) - pre[sender] = Account(balance=0x7FFFFFFFFFFFFFFFFFF) tx_data = [ Bytes(""), diff --git a/tests/ported_static/stMemoryStressTest/test_mload_bounds3.py b/tests/ported_static/stMemoryStressTest/test_mload_bounds3.py index b34def49c4f..adef7836ab7 100644 --- a/tests/ported_static/stMemoryStressTest/test_mload_bounds3.py +++ b/tests/ported_static/stMemoryStressTest/test_mload_bounds3.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -56,9 +55,7 @@ def test_mload_bounds3( ) -> None: """Test_mload_bounds3.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xFE5BE118AD5955E30E0FFC4E1F1BBDCAA7F5A67CB1426C4AC19E32C80ECCDC06 - ) + sender = pre.fund_eoa(amount=0x7FFFFFFFFFFFFFFFFFF) env = Environment( fee_recipient=coinbase, @@ -74,9 +71,7 @@ def test_mload_bounds3( target = pre.deploy_contract( # noqa: F841 code=Op.MLOAD(offset=0x400000) + Op.STOP, nonce=0, - address=Address(0xB4B66EEF4A593BFD61289EC192AF659C68266259), # noqa: E501 ) - pre[sender] = Account(balance=0x7FFFFFFFFFFFFFFFFFF) tx_data = [ Bytes(""), diff --git a/tests/ported_static/stMemoryStressTest/test_mstore_bounds.py b/tests/ported_static/stMemoryStressTest/test_mstore_bounds.py index c764c3a97d7..49713f67bc8 100644 --- a/tests/ported_static/stMemoryStressTest/test_mstore_bounds.py +++ b/tests/ported_static/stMemoryStressTest/test_mstore_bounds.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -55,8 +54,8 @@ def test_mstore_bounds( ) -> None: """Test_mstore_bounds.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x50EADFB1030587AB3A993A6ECC073041FC3B45E119DAA31A13D78C7E209631A5 + sender = pre.fund_eoa( + amount=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF # noqa: E501 ) env = Environment( @@ -73,10 +72,6 @@ def test_mstore_bounds( target = pre.deploy_contract( # noqa: F841 code=Op.MSTORE(offset=0xFFFFFFFFFFFFFFFF, value=0x1) + Op.STOP, nonce=0, - address=Address(0x3634C48093587D5DAB61C69EE815D8E8752E9312), # noqa: E501 - ) - pre[sender] = Account( - balance=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF # noqa: E501 ) tx_data = [ diff --git a/tests/ported_static/stMemoryStressTest/test_mstore_bounds2.py b/tests/ported_static/stMemoryStressTest/test_mstore_bounds2.py index 1f8ff32dd6f..93358c7451f 100644 --- a/tests/ported_static/stMemoryStressTest/test_mstore_bounds2.py +++ b/tests/ported_static/stMemoryStressTest/test_mstore_bounds2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -55,8 +54,8 @@ def test_mstore_bounds2( ) -> None: """Test_mstore_bounds2.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x50EADFB1030587AB3A993A6ECC073041FC3B45E119DAA31A13D78C7E209631A5 + sender = pre.fund_eoa( + amount=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF # noqa: E501 ) env = Environment( @@ -73,10 +72,6 @@ def test_mstore_bounds2( target = pre.deploy_contract( # noqa: F841 code=Op.MSTORE(offset=0xFFFFFFFFFF, value=0x1) + Op.STOP, nonce=0, - address=Address(0xDD1868B8341812C23C84DA08446BC70919A815DF), # noqa: E501 - ) - pre[sender] = Account( - balance=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF # noqa: E501 ) tx_data = [ diff --git a/tests/ported_static/stMemoryStressTest/test_mstore_bounds2a.py b/tests/ported_static/stMemoryStressTest/test_mstore_bounds2a.py index 001c9bb8b43..82cbcebb094 100644 --- a/tests/ported_static/stMemoryStressTest/test_mstore_bounds2a.py +++ b/tests/ported_static/stMemoryStressTest/test_mstore_bounds2a.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -59,8 +58,8 @@ def test_mstore_bounds2a( ) -> None: """Test_mstore_bounds2a.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x50EADFB1030587AB3A993A6ECC073041FC3B45E119DAA31A13D78C7E209631A5 + sender = pre.fund_eoa( + amount=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF # noqa: E501 ) env = Environment( @@ -77,10 +76,6 @@ def test_mstore_bounds2a( target = pre.deploy_contract( # noqa: F841 code=Op.MSTORE(offset=0x3FFFFF, value=0x1) + Op.STOP, nonce=0, - address=Address(0x10DA52CBD00939AEBE8218A1DD2EDA0BFFE93F30), # noqa: E501 - ) - pre[sender] = Account( - balance=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF # noqa: E501 ) expect_entries_: list[dict] = [ diff --git a/tests/ported_static/stMemoryStressTest/test_pop_bounds.py b/tests/ported_static/stMemoryStressTest/test_pop_bounds.py index 8ac24f68b76..70870df24b0 100644 --- a/tests/ported_static/stMemoryStressTest/test_pop_bounds.py +++ b/tests/ported_static/stMemoryStressTest/test_pop_bounds.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -55,9 +54,7 @@ def test_pop_bounds( ) -> None: """Test_pop_bounds.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xFE5BE118AD5955E30E0FFC4E1F1BBDCAA7F5A67CB1426C4AC19E32C80ECCDC06 - ) + sender = pre.fund_eoa(amount=0x7FFFFFFFFFFFFFFFFFF) env = Environment( fee_recipient=coinbase, @@ -80,9 +77,7 @@ def test_pop_bounds( ) + Op.STOP, nonce=0, - address=Address(0x5BD3610AFCEC3B0C20466CA011B505497B0009F0), # noqa: E501 ) - pre[sender] = Account(balance=0x7FFFFFFFFFFFFFFFFFF) tx_data = [ Bytes(""), diff --git a/tests/ported_static/stMemoryStressTest/test_sload_bounds.py b/tests/ported_static/stMemoryStressTest/test_sload_bounds.py index 9681a7f4ba1..1c04ca420b1 100644 --- a/tests/ported_static/stMemoryStressTest/test_sload_bounds.py +++ b/tests/ported_static/stMemoryStressTest/test_sload_bounds.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -55,9 +54,7 @@ def test_sload_bounds( ) -> None: """Test_sload_bounds.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xFE5BE118AD5955E30E0FFC4E1F1BBDCAA7F5A67CB1426C4AC19E32C80ECCDC06 - ) + sender = pre.fund_eoa(amount=0x7FFFFFFFFFFFFFFFFFF) env = Environment( fee_recipient=coinbase, @@ -80,9 +77,7 @@ def test_sload_bounds( ) + Op.STOP, nonce=0, - address=Address(0x1B71C198EA09541AFB8301905A0A80D026EBFA17), # noqa: E501 ) - pre[sender] = Account(balance=0x7FFFFFFFFFFFFFFFFFF) tx_data = [ Bytes(""), diff --git a/tests/ported_static/stMemoryStressTest/test_static_call_bounds.py b/tests/ported_static/stMemoryStressTest/test_static_call_bounds.py index 63e769b4b73..c6a2e86cb91 100644 --- a/tests/ported_static/stMemoryStressTest/test_static_call_bounds.py +++ b/tests/ported_static/stMemoryStressTest/test_static_call_bounds.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -55,8 +54,8 @@ def test_static_call_bounds( ) -> None: """Test_static_call_bounds.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xEF111BBDAB3A1622936AFDFC9BBEC4B5BC05B4FA4B1EF0CE2A55CEF552F7650E + sender = pre.fund_eoa( + amount=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ) env = Environment( @@ -68,13 +67,20 @@ def test_static_call_bounds( gas_limit=9223372036854775807, ) + # Source: lll + # { (MSTORE 0 (ADD 1 (SLOAD 0))) } + addr = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x0, value=Op.ADD(0x1, Op.SLOAD(key=0x0))) + + Op.STOP, + nonce=0, + ) # Source: lll # { (STATICCALL 0x7ffffffffffffff 0 0 0 0) (STATICCALL 0x7ffffffffffffff 0 0xfffffff 0 0xfffffff) (STATICCALL 0x7ffffffffffffff 0 0xffffffff 0 0xffffffff) (STATICCALL 0x7ffffffffffffff 0xfffffff 0 0xfffffff 0) (STATICCALL 0x7ffffffffffffff 0xffffffff 0 0xffffffff 0) (STATICCALL 0x7ffffffffffffff 0xffffffffffffffff 0 0xffffffffffffffff 0) (STATICCALL 0x7ffffffffffffff 0xffffffffffffffffffffffffffffffff 0 0xffffffffffffffffffffffffffffffff 0) (STATICCALL 0x7ffffffffffffff 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 code=Op.POP( Op.STATICCALL( gas=0x7FFFFFFFFFFFFFF, - address=0xCC704D60C46B9C08AAB4D15281184441AC7ED35C, + address=addr, args_offset=0x0, args_size=0x0, ret_offset=0x0, @@ -84,7 +90,7 @@ def test_static_call_bounds( + Op.POP( Op.STATICCALL( gas=0x7FFFFFFFFFFFFFF, - address=0xCC704D60C46B9C08AAB4D15281184441AC7ED35C, + address=addr, args_offset=0x0, args_size=0xFFFFFFF, ret_offset=0x0, @@ -94,7 +100,7 @@ def test_static_call_bounds( + Op.POP( Op.STATICCALL( gas=0x7FFFFFFFFFFFFFF, - address=0xCC704D60C46B9C08AAB4D15281184441AC7ED35C, + address=addr, args_offset=0x0, args_size=0xFFFFFFFF, ret_offset=0x0, @@ -104,7 +110,7 @@ def test_static_call_bounds( + Op.POP( Op.STATICCALL( gas=0x7FFFFFFFFFFFFFF, - address=0xCC704D60C46B9C08AAB4D15281184441AC7ED35C, + address=addr, args_offset=0xFFFFFFF, args_size=0x0, ret_offset=0xFFFFFFF, @@ -114,7 +120,7 @@ def test_static_call_bounds( + Op.POP( Op.STATICCALL( gas=0x7FFFFFFFFFFFFFF, - address=0xCC704D60C46B9C08AAB4D15281184441AC7ED35C, + address=addr, args_offset=0xFFFFFFFF, args_size=0x0, ret_offset=0xFFFFFFFF, @@ -124,7 +130,7 @@ def test_static_call_bounds( + Op.POP( Op.STATICCALL( gas=0x7FFFFFFFFFFFFFF, - address=0xCC704D60C46B9C08AAB4D15281184441AC7ED35C, + address=addr, args_offset=0xFFFFFFFFFFFFFFFF, args_size=0x0, ret_offset=0xFFFFFFFFFFFFFFFF, @@ -134,7 +140,7 @@ def test_static_call_bounds( + Op.POP( Op.STATICCALL( gas=0x7FFFFFFFFFFFFFF, - address=0xCC704D60C46B9C08AAB4D15281184441AC7ED35C, + address=addr, args_offset=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, args_size=0x0, ret_offset=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, @@ -143,7 +149,7 @@ def test_static_call_bounds( ) + Op.STATICCALL( gas=0x7FFFFFFFFFFFFFF, - address=0xCC704D60C46B9C08AAB4D15281184441AC7ED35C, + address=addr, args_offset=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, # noqa: E501 args_size=0x0, ret_offset=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, # noqa: E501 @@ -151,18 +157,6 @@ def test_static_call_bounds( ) + Op.STOP, nonce=0, - address=Address(0x7F91C742985AC295DA40F3771A1BE98F99F6A357), # noqa: E501 - ) - # Source: lll - # { (MSTORE 0 (ADD 1 (SLOAD 0))) } - addr = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x0, value=Op.ADD(0x1, Op.SLOAD(key=0x0))) - + Op.STOP, - nonce=0, - address=Address(0xCC704D60C46B9C08AAB4D15281184441AC7ED35C), # noqa: E501 - ) - pre[sender] = Account( - balance=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ) tx_data = [ diff --git a/tests/ported_static/stMemoryStressTest/test_static_call_bounds2.py b/tests/ported_static/stMemoryStressTest/test_static_call_bounds2.py index d9c6d90404b..b4d70c3de24 100644 --- a/tests/ported_static/stMemoryStressTest/test_static_call_bounds2.py +++ b/tests/ported_static/stMemoryStressTest/test_static_call_bounds2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -55,8 +54,8 @@ def test_static_call_bounds2( ) -> None: """Test_static_call_bounds2.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xEF111BBDAB3A1622936AFDFC9BBEC4B5BC05B4FA4B1EF0CE2A55CEF552F7650E + sender = pre.fund_eoa( + amount=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ) env = Environment( @@ -68,12 +67,19 @@ def test_static_call_bounds2( gas_limit=9223372036854775807, ) + # Source: lll + # { (SSTORE 0 (ADD 1 (SLOAD 0))) } + addr = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x0, value=Op.ADD(0x1, Op.SLOAD(key=0x0))) + + Op.STOP, + nonce=0, + ) # Source: lll # { (STATICCALL 0x7ffffffffffffff 0xfffffff 0xfffffff 0xfffffff 0xfffffff) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 code=Op.STATICCALL( gas=0x7FFFFFFFFFFFFFF, - address=0x849F53126ADE5F72469029537296F2B6644D4D41, + address=addr, args_offset=0xFFFFFFF, args_size=0xFFFFFFF, ret_offset=0xFFFFFFF, @@ -81,18 +87,6 @@ def test_static_call_bounds2( ) + Op.STOP, nonce=0, - address=Address(0x897C36DFFCE5CC08EB13170A6C308AB09FA72E65), # noqa: E501 - ) - # Source: lll - # { (SSTORE 0 (ADD 1 (SLOAD 0))) } - addr = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x0, value=Op.ADD(0x1, Op.SLOAD(key=0x0))) - + Op.STOP, - nonce=0, - address=Address(0x849F53126ADE5F72469029537296F2B6644D4D41), # noqa: E501 - ) - pre[sender] = Account( - balance=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ) tx_data = [ diff --git a/tests/ported_static/stMemoryStressTest/test_static_call_bounds2a.py b/tests/ported_static/stMemoryStressTest/test_static_call_bounds2a.py index 1247a29948e..c27269691ae 100644 --- a/tests/ported_static/stMemoryStressTest/test_static_call_bounds2a.py +++ b/tests/ported_static/stMemoryStressTest/test_static_call_bounds2a.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -55,8 +54,8 @@ def test_static_call_bounds2a( ) -> None: """Test_static_call_bounds2a.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xEF111BBDAB3A1622936AFDFC9BBEC4B5BC05B4FA4B1EF0CE2A55CEF552F7650E + sender = pre.fund_eoa( + amount=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ) env = Environment( @@ -68,12 +67,19 @@ def test_static_call_bounds2a( gas_limit=9223372036854775807, ) + # Source: lll + # { (SSTORE 0 (ADD 1 (SLOAD 0))) } + addr = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x0, value=Op.ADD(0x1, Op.SLOAD(key=0x0))) + + Op.STOP, + nonce=0, + ) # Source: lll # { (STATICCALL 0x7ffffffffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 code=Op.STATICCALL( gas=0x7FFFFFFFFFFFFFF, - address=0x849F53126ADE5F72469029537296F2B6644D4D41, + address=addr, args_offset=0xFFFFFFFF, args_size=0xFFFFFFFF, ret_offset=0xFFFFFFFF, @@ -81,18 +87,6 @@ def test_static_call_bounds2a( ) + Op.STOP, nonce=0, - address=Address(0x9EDF5834C8B457164C7D203E17DF72D92D384DBA), # noqa: E501 - ) - # Source: lll - # { (SSTORE 0 (ADD 1 (SLOAD 0))) } - addr = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x0, value=Op.ADD(0x1, Op.SLOAD(key=0x0))) - + Op.STOP, - nonce=0, - address=Address(0x849F53126ADE5F72469029537296F2B6644D4D41), # noqa: E501 - ) - pre[sender] = Account( - balance=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ) tx_data = [ diff --git a/tests/ported_static/stMemoryStressTest/test_static_call_bounds3.py b/tests/ported_static/stMemoryStressTest/test_static_call_bounds3.py index 8a2b2e5a3e5..fe5980fd434 100644 --- a/tests/ported_static/stMemoryStressTest/test_static_call_bounds3.py +++ b/tests/ported_static/stMemoryStressTest/test_static_call_bounds3.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -55,8 +54,8 @@ def test_static_call_bounds3( ) -> None: """Test_static_call_bounds3.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xEF111BBDAB3A1622936AFDFC9BBEC4B5BC05B4FA4B1EF0CE2A55CEF552F7650E + sender = pre.fund_eoa( + amount=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ) env = Environment( @@ -68,13 +67,20 @@ def test_static_call_bounds3( gas_limit=9223372036854775807, ) + # Source: lll + # { (MSTORE 0 (ADD 1 (SLOAD 0))) } + addr = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x0, value=Op.ADD(0x1, Op.SLOAD(key=0x0))) + + Op.STOP, + nonce=0, + ) # Source: lll # { (STATICCALL 0x7ffffffffffffff 0 0xffffffffffffffff 0 0xffffffffffffffff) (STATICCALL 0x7ffffffffffffff 0 0xffffffffffffffffffffffffffffffff 0 0xffffffffffffffffffffffffffffffff) (STATICCALL 0x7ffffffffffffff 0 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) (STATICCALL 0x7ffffffffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff) (STATICCALL 0x7ffffffffffffff 0xffffffffffffffff 0xffffffffffffffff 0xffffffffffffffff 0xffffffffffffffff) (STATICCALL 0x7ffffffffffffff 0xffffffffffffffffffffffffffffffff 0xffffffffffffffffffffffffffffffff 0xffffffffffffffffffffffffffffffff 0xffffffffffffffffffffffffffffffff) (STATICCALL 0x7ffffffffffffff 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 code=Op.POP( Op.STATICCALL( gas=0x7FFFFFFFFFFFFFF, - address=0xCC704D60C46B9C08AAB4D15281184441AC7ED35C, + address=addr, args_offset=0x0, args_size=0xFFFFFFFFFFFFFFFF, ret_offset=0x0, @@ -84,7 +90,7 @@ def test_static_call_bounds3( + Op.POP( Op.STATICCALL( gas=0x7FFFFFFFFFFFFFF, - address=0xCC704D60C46B9C08AAB4D15281184441AC7ED35C, + address=addr, args_offset=0x0, args_size=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, ret_offset=0x0, @@ -94,7 +100,7 @@ def test_static_call_bounds3( + Op.POP( Op.STATICCALL( gas=0x7FFFFFFFFFFFFFF, - address=0xCC704D60C46B9C08AAB4D15281184441AC7ED35C, + address=addr, args_offset=0x0, args_size=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, # noqa: E501 ret_offset=0x0, @@ -104,7 +110,7 @@ def test_static_call_bounds3( + Op.POP( Op.STATICCALL( gas=0x7FFFFFFFFFFFFFF, - address=0xCC704D60C46B9C08AAB4D15281184441AC7ED35C, + address=addr, args_offset=0xFFFFFFFF, args_size=0xFFFFFFFF, ret_offset=0xFFFFFFFF, @@ -114,7 +120,7 @@ def test_static_call_bounds3( + Op.POP( Op.STATICCALL( gas=0x7FFFFFFFFFFFFFF, - address=0xCC704D60C46B9C08AAB4D15281184441AC7ED35C, + address=addr, args_offset=0xFFFFFFFFFFFFFFFF, args_size=0xFFFFFFFFFFFFFFFF, ret_offset=0xFFFFFFFFFFFFFFFF, @@ -124,7 +130,7 @@ def test_static_call_bounds3( + Op.POP( Op.STATICCALL( gas=0x7FFFFFFFFFFFFFF, - address=0xCC704D60C46B9C08AAB4D15281184441AC7ED35C, + address=addr, args_offset=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, args_size=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, ret_offset=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, @@ -133,7 +139,7 @@ def test_static_call_bounds3( ) + Op.STATICCALL( gas=0x7FFFFFFFFFFFFFF, - address=0xCC704D60C46B9C08AAB4D15281184441AC7ED35C, + address=addr, args_offset=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, # noqa: E501 args_size=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, # noqa: E501 ret_offset=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, # noqa: E501 @@ -141,18 +147,6 @@ def test_static_call_bounds3( ) + Op.STOP, nonce=0, - address=Address(0x83143406093D1F3560DD269416596D3406F1C991), # noqa: E501 - ) - # Source: lll - # { (MSTORE 0 (ADD 1 (SLOAD 0))) } - addr = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x0, value=Op.ADD(0x1, Op.SLOAD(key=0x0))) - + Op.STOP, - nonce=0, - address=Address(0xCC704D60C46B9C08AAB4D15281184441AC7ED35C), # noqa: E501 - ) - pre[sender] = Account( - balance=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ) tx_data = [ diff --git a/tests/ported_static/stMemoryTest/test_buffer.py b/tests/ported_static/stMemoryTest/test_buffer.py index 52ded431cbb..e8eb1086eaf 100644 --- a/tests/ported_static/stMemoryTest/test_buffer.py +++ b/tests/ported_static/stMemoryTest/test_buffer.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -2139,9 +2138,7 @@ def test_buffer( contract_1 = Address(0x000000000000000000000000000000000F30C0DE) contract_2 = Address(0x000000000000000000000000000000000FF0C0DE) contract_3 = Address(0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0xBA1A9CE0BA1A9CE) env = Environment( fee_recipient=coinbase, @@ -2435,7 +2432,7 @@ def test_buffer( + Op.JUMP(pc=0x2C0) + Op.JUMPDEST + Op.EXTCODECOPY( - address=0xC0DE, + address=contract_0, dest_offset=Op.MLOAD(offset=0x2040), offset=0x0, size=Op.MLOAD(offset=0x2020), @@ -2536,7 +2533,7 @@ def test_buffer( + Op.JUMPDEST + Op.CALL( gas=0x1000, - address=0xC0DE, + address=contract_0, value=0x0, args_offset=Op.MLOAD(offset=0x2040), args_size=Op.MLOAD(offset=0x2020), @@ -2553,7 +2550,7 @@ def test_buffer( + Op.JUMPDEST + Op.CALL( gas=0x1000, - address=0xC0DE, + address=contract_0, value=0x0, args_offset=0x0, args_size=0x0, @@ -2570,7 +2567,7 @@ def test_buffer( + Op.JUMPDEST + Op.CALLCODE( gas=0x1000, - address=0xC0DE, + address=contract_0, value=0x0, args_offset=Op.MLOAD(offset=0x2040), args_size=Op.MLOAD(offset=0x2020), @@ -2587,7 +2584,7 @@ def test_buffer( + Op.JUMPDEST + Op.CALLCODE( gas=0x1000, - address=0xC0DE, + address=contract_0, value=0x0, args_offset=0x0, args_size=0x0, @@ -2604,7 +2601,7 @@ def test_buffer( + Op.JUMPDEST + Op.DELEGATECALL( gas=0x100000, - address=0xC0DE, + address=contract_0, args_offset=Op.MLOAD(offset=0x2040), args_size=Op.MLOAD(offset=0x2020), ret_offset=0x0, @@ -2620,7 +2617,7 @@ def test_buffer( + Op.JUMPDEST + Op.DELEGATECALL( gas=0x100000, - address=0xC0DE, + address=contract_0, args_offset=0x0, args_size=0x0, ret_offset=Op.MLOAD(offset=0x2040), @@ -2650,7 +2647,7 @@ def test_buffer( + Op.JUMPDEST + Op.STATICCALL( gas=0x100000, - address=0xC0DE, + address=contract_0, args_offset=Op.MLOAD(offset=0x2040), args_size=Op.MLOAD(offset=0x2020), ret_offset=0x0, @@ -2666,7 +2663,7 @@ def test_buffer( + Op.JUMPDEST + Op.STATICCALL( gas=0x100000, - address=0xC0DE, + address=contract_0, args_offset=0x0, args_size=0x0, ret_offset=Op.MLOAD(offset=0x2040), @@ -2683,7 +2680,7 @@ def test_buffer( + Op.POP( Op.CALL( gas=0x1000, - address=0xC0DE, + address=contract_0, value=0x0, args_offset=0x0, args_size=0x0, @@ -2705,7 +2702,7 @@ def test_buffer( + Op.JUMPDEST + Op.CALL( gas=0x100000, - address=0xF30C0DE, + address=contract_1, value=0x0, args_offset=0x2020, args_size=0x40, @@ -2723,7 +2720,7 @@ def test_buffer( + Op.POP( Op.CALL( gas=0x100000, - address=0xFF0C0DE, + address=contract_2, value=0x0, args_offset=0x2020, args_size=0x40, @@ -2738,9 +2735,7 @@ def test_buffer( storage={256: 24743}, balance=0xBA1A9CE0BA1A9CE, nonce=0, - address=Address(0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC), # noqa: E501 ) - pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stMemoryTest/test_buffer_src_offset.py b/tests/ported_static/stMemoryTest/test_buffer_src_offset.py index c95f7c6c8e8..1a644f966f1 100644 --- a/tests/ported_static/stMemoryTest/test_buffer_src_offset.py +++ b/tests/ported_static/stMemoryTest/test_buffer_src_offset.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -769,9 +768,7 @@ def test_buffer_src_offset( coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) contract_0 = Address(0x000000000000000000000000000000000000C0DE) contract_1 = Address(0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0xBA1A9CE0BA1A9CE) env = Environment( fee_recipient=coinbase, @@ -994,7 +991,7 @@ def test_buffer_src_offset( + Op.JUMP(pc=0x22A) + Op.JUMPDEST + Op.EXTCODECOPY( - address=0xC0DE, + address=contract_0, dest_offset=Op.MLOAD(offset=0x2040), offset=Op.MLOAD(offset=0x2020), size=Op.MLOAD(offset=0x2060), @@ -1021,7 +1018,7 @@ def test_buffer_src_offset( + Op.POP( Op.CALL( gas=0x1000, - address=0xC0DE, + address=contract_0, value=0x0, args_offset=0x0, args_size=0x0, @@ -1050,9 +1047,7 @@ def test_buffer_src_offset( storage={256: 24743}, balance=0xBA1A9CE0BA1A9CE, nonce=0, - address=Address(0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC), # noqa: E501 ) - pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stMemoryTest/test_call_data_copy_offset.py b/tests/ported_static/stMemoryTest/test_call_data_copy_offset.py index 808fb053b47..2cd7a467e4b 100644 --- a/tests/ported_static/stMemoryTest/test_call_data_copy_offset.py +++ b/tests/ported_static/stMemoryTest/test_call_data_copy_offset.py @@ -48,6 +48,7 @@ def test_call_data_copy_offset( gas_limit=1000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { (MSTORE 0x00 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) (CALLDATACOPY 0x00 0xffff 0x10) (SSTORE 0x00 (MLOAD 0x00)) } # noqa: E501 contract_0 = pre.deploy_contract( # noqa: F841 @@ -68,7 +69,7 @@ def test_call_data_copy_offset( code=Op.MSTORE(offset=0x0, value=0x123456789ABCDEF) + Op.CALL( gas=0xFFFF, - address=0xEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE, + address=contract_0, value=Op.DUP1, args_offset=Op.DUP2, args_size=0xF, @@ -80,7 +81,6 @@ def test_call_data_copy_offset( nonce=1, address=Address(0x095E7BAEA6A6C7C4C2DFEB977EFAC326AF552D87), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stMemoryTest/test_calldatacopy_dejavu.py b/tests/ported_static/stMemoryTest/test_calldatacopy_dejavu.py index bc80056ad0e..362489d30fb 100644 --- a/tests/ported_static/stMemoryTest/test_calldatacopy_dejavu.py +++ b/tests/ported_static/stMemoryTest/test_calldatacopy_dejavu.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_calldatacopy_dejavu( ) -> None: """Test_calldatacopy_dejavu.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x7DD1D0EC78FE936B0E88F8C21226F51F048579915C7BAFF1C5D7FD84B2139BF1 - ) + sender = pre.fund_eoa(amount=0x271000000000) env = Environment( fee_recipient=coinbase, @@ -53,9 +50,7 @@ def test_calldatacopy_dejavu( + Op.CALLDATACOPY(dest_offset=0xFFFFFFF, offset=0xFFFFFFF, size=0xFF), balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xCB76EF53A4EB6CCF604DAED675E91DF8A0B544F8), # noqa: E501 ) - pre[sender] = Account(balance=0x271000000000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stMemoryTest/test_code_copy_offset.py b/tests/ported_static/stMemoryTest/test_code_copy_offset.py index 4157cc3c343..36b096523aa 100644 --- a/tests/ported_static/stMemoryTest/test_code_copy_offset.py +++ b/tests/ported_static/stMemoryTest/test_code_copy_offset.py @@ -46,6 +46,7 @@ def test_code_copy_offset( gas_limit=1000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { (MSTORE 0x00 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) (CODECOPY 0x00 0xffff 0x10) (SSTORE 0x00 (MLOAD 0x00)) } # noqa: E501 addr = pre.deploy_contract( # noqa: F841 @@ -66,7 +67,7 @@ def test_code_copy_offset( code=Op.MSTORE(offset=0x0, value=0x123456789ABCDEF) + Op.CALL( gas=0xFFFF, - address=0x27D16E1D3CC862149F1E7162E612635FCAEF9FF4, + address=addr, value=Op.DUP1, args_offset=Op.DUP2, args_size=0xF, @@ -78,7 +79,6 @@ def test_code_copy_offset( nonce=1, address=Address(0xAF89A7504341A87E1CFDFFD483A00A4688469B3D), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stMemoryTest/test_codecopy_dejavu.py b/tests/ported_static/stMemoryTest/test_codecopy_dejavu.py index ed7f3b2985a..0d5a8167151 100644 --- a/tests/ported_static/stMemoryTest/test_codecopy_dejavu.py +++ b/tests/ported_static/stMemoryTest/test_codecopy_dejavu.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_codecopy_dejavu( ) -> None: """Test_codecopy_dejavu.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x7DD1D0EC78FE936B0E88F8C21226F51F048579915C7BAFF1C5D7FD84B2139BF1 - ) + sender = pre.fund_eoa(amount=0x271000000000) env = Environment( fee_recipient=coinbase, @@ -53,9 +50,7 @@ def test_codecopy_dejavu( + Op.CODECOPY(dest_offset=0xFFFFFFF, offset=0xFFFFFFF, size=0xFF), balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x8719757D888E6B73B95B8873672380186FF72D55), # noqa: E501 ) - pre[sender] = Account(balance=0x271000000000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stMemoryTest/test_codecopy_dejavu2.py b/tests/ported_static/stMemoryTest/test_codecopy_dejavu2.py index ce6082b30e3..0899770f06b 100644 --- a/tests/ported_static/stMemoryTest/test_codecopy_dejavu2.py +++ b/tests/ported_static/stMemoryTest/test_codecopy_dejavu2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_codecopy_dejavu2( ) -> None: """Test_codecopy_dejavu2.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x7DD1D0EC78FE936B0E88F8C21226F51F048579915C7BAFF1C5D7FD84B2139BF1 - ) + sender = pre.fund_eoa(amount=0x271000000000) env = Environment( fee_recipient=coinbase, @@ -55,9 +52,7 @@ def test_codecopy_dejavu2( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xC165257D26F9435CBD00D8E2825FF173393D3B31), # noqa: E501 ) - pre[sender] = Account(balance=0x271000000000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stMemoryTest/test_extcodecopy_dejavu.py b/tests/ported_static/stMemoryTest/test_extcodecopy_dejavu.py index 31a783644ec..2b3503f4af9 100644 --- a/tests/ported_static/stMemoryTest/test_extcodecopy_dejavu.py +++ b/tests/ported_static/stMemoryTest/test_extcodecopy_dejavu.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_extcodecopy_dejavu( ) -> None: """Test_extcodecopy_dejavu.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x7DD1D0EC78FE936B0E88F8C21226F51F048579915C7BAFF1C5D7FD84B2139BF1 - ) + sender = pre.fund_eoa(amount=0x271000000000) env = Environment( fee_recipient=coinbase, @@ -54,9 +51,7 @@ def test_extcodecopy_dejavu( ), balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xE15245403DDC4D3674436CF955358A73D67E226A), # noqa: E501 ) - pre[sender] = Account(balance=0x271000000000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stMemoryTest/test_log1_dejavu.py b/tests/ported_static/stMemoryTest/test_log1_dejavu.py index 835aeab49ca..179a5c1a3ca 100644 --- a/tests/ported_static/stMemoryTest/test_log1_dejavu.py +++ b/tests/ported_static/stMemoryTest/test_log1_dejavu.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_log1_dejavu( ) -> None: """Test_log1_dejavu.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x7DD1D0EC78FE936B0E88F8C21226F51F048579915C7BAFF1C5D7FD84B2139BF1 - ) + sender = pre.fund_eoa(amount=0x271000000000) env = Environment( fee_recipient=coinbase, @@ -52,9 +49,7 @@ def test_log1_dejavu( code=Op.LOG1(offset=0xFFFFFFF, size=0xFF, topic_1=0xFF), balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x2E5DD28ACE62CB4FC05FC800DED494A6275107AC), # noqa: E501 ) - pre[sender] = Account(balance=0x271000000000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stMemoryTest/test_log2_dejavu.py b/tests/ported_static/stMemoryTest/test_log2_dejavu.py index 76ed2629490..5d6f925646d 100644 --- a/tests/ported_static/stMemoryTest/test_log2_dejavu.py +++ b/tests/ported_static/stMemoryTest/test_log2_dejavu.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_log2_dejavu( ) -> None: """Test_log2_dejavu.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x7DD1D0EC78FE936B0E88F8C21226F51F048579915C7BAFF1C5D7FD84B2139BF1 - ) + sender = pre.fund_eoa(amount=0x271000000000) env = Environment( fee_recipient=coinbase, @@ -52,9 +49,7 @@ def test_log2_dejavu( code=Op.PUSH1[0xFF] * 2 + Op.PUSH4[0xFFFFFFF] + Op.LOG2, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x38AC6CCFFB48040475CF67E7040ADEBB1DD11DEC), # noqa: E501 ) - pre[sender] = Account(balance=0x271000000000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stMemoryTest/test_log3_dejavu.py b/tests/ported_static/stMemoryTest/test_log3_dejavu.py index fc1d2fae01e..c51230ca359 100644 --- a/tests/ported_static/stMemoryTest/test_log3_dejavu.py +++ b/tests/ported_static/stMemoryTest/test_log3_dejavu.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_log3_dejavu( ) -> None: """Test_log3_dejavu.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x7DD1D0EC78FE936B0E88F8C21226F51F048579915C7BAFF1C5D7FD84B2139BF1 - ) + sender = pre.fund_eoa(amount=0x271000000000) env = Environment( fee_recipient=coinbase, @@ -52,9 +49,7 @@ def test_log3_dejavu( code=Op.LOG2(offset=0xFFFFFFF, size=0xFF, topic_1=0xFF, topic_2=0xFF), balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xD1D57042B5AF54C18E8AD98B2756C1C30C08D5C1), # noqa: E501 ) - pre[sender] = Account(balance=0x271000000000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stMemoryTest/test_log4_dejavu.py b/tests/ported_static/stMemoryTest/test_log4_dejavu.py index 844f5bf40ff..8b6757fc42b 100644 --- a/tests/ported_static/stMemoryTest/test_log4_dejavu.py +++ b/tests/ported_static/stMemoryTest/test_log4_dejavu.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_log4_dejavu( ) -> None: """Test_log4_dejavu.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x7DD1D0EC78FE936B0E88F8C21226F51F048579915C7BAFF1C5D7FD84B2139BF1 - ) + sender = pre.fund_eoa(amount=0x271000000000) env = Environment( fee_recipient=coinbase, @@ -52,9 +49,7 @@ def test_log4_dejavu( code=Op.LOG2(offset=0xFFFFFFF, size=0xFF, topic_1=0xFF, topic_2=0xFF), balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xD1D57042B5AF54C18E8AD98B2756C1C30C08D5C1), # noqa: E501 ) - pre[sender] = Account(balance=0x271000000000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stMemoryTest/test_mem_copy_self.py b/tests/ported_static/stMemoryTest/test_mem_copy_self.py index 1f8656c59e0..6db803aed00 100644 --- a/tests/ported_static/stMemoryTest/test_mem_copy_self.py +++ b/tests/ported_static/stMemoryTest/test_mem_copy_self.py @@ -46,6 +46,7 @@ def test_mem_copy_self( gas_limit=100000000, ) + pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE, nonce=1) # Source: yul # berlin # { @@ -105,7 +106,6 @@ def test_mem_copy_self( nonce=1, address=Address(0xB595300AC049B84C5277C7CA68A96D74AE377B85), # noqa: E501 ) - pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE, nonce=1) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stMemoryTest/test_mem_return.py b/tests/ported_static/stMemoryTest/test_mem_return.py index 2230c7b0776..458c2148704 100644 --- a/tests/ported_static/stMemoryTest/test_mem_return.py +++ b/tests/ported_static/stMemoryTest/test_mem_return.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_mem_return( ) -> None: """Test_mem_return.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x834185262E53584684BF2B72C64E510013C235D0F45E462DB65900455DF45A35 - ) + sender = pre.fund_eoa(amount=0x6400000000) env = Environment( fee_recipient=coinbase, @@ -54,9 +51,7 @@ def test_mem_return( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x80349881D6A01127FFE2A32D172EE0599D94C87E), # noqa: E501 ) - pre[sender] = Account(balance=0x6400000000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stMemoryTest/test_mload16bit_bound.py b/tests/ported_static/stMemoryTest/test_mload16bit_bound.py index 65e59615f5a..fb8e930d5df 100644 --- a/tests/ported_static/stMemoryTest/test_mload16bit_bound.py +++ b/tests/ported_static/stMemoryTest/test_mload16bit_bound.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_mload16bit_bound( ) -> None: """Test_mload16bit_bound.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xA9DF11BD92FC8535FFCA3AE0A2133C80D5F4ECC5D31D100B94FF03E63F7E74FF - ) + sender = pre.fund_eoa(amount=0xA00050281798) env = Environment( fee_recipient=coinbase, @@ -52,9 +49,7 @@ def test_mload16bit_bound( code=Op.SSTORE(key=0x1, value=Op.MLOAD(offset=0x10000)) + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x85EAA01AC6288C06360D431D62CD865C92B74A28), # noqa: E501 ) - pre[sender] = Account(balance=0xA00050281798) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stMemoryTest/test_mload8bit_bound.py b/tests/ported_static/stMemoryTest/test_mload8bit_bound.py index 24054d9d614..8c3f579959f 100644 --- a/tests/ported_static/stMemoryTest/test_mload8bit_bound.py +++ b/tests/ported_static/stMemoryTest/test_mload8bit_bound.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_mload8bit_bound( ) -> None: """Test_mload8bit_bound.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x834185262E53584684BF2B72C64E510013C235D0F45E462DB65900455DF45A35 - ) + sender = pre.fund_eoa(amount=0x6400000000) env = Environment( fee_recipient=coinbase, @@ -52,9 +49,7 @@ def test_mload8bit_bound( code=Op.SSTORE(key=0x1, value=Op.MLOAD(offset=0x100)) + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xADEA3CDF2C1F0EFD3DB876810AA68CBCD58D7693), # noqa: E501 ) - pre[sender] = Account(balance=0x6400000000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stMemoryTest/test_mload_dejavu.py b/tests/ported_static/stMemoryTest/test_mload_dejavu.py index bfd2ef385bc..ae1d9c0d283 100644 --- a/tests/ported_static/stMemoryTest/test_mload_dejavu.py +++ b/tests/ported_static/stMemoryTest/test_mload_dejavu.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_mload_dejavu( ) -> None: """Test_mload_dejavu.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x7DD1D0EC78FE936B0E88F8C21226F51F048579915C7BAFF1C5D7FD84B2139BF1 - ) + sender = pre.fund_eoa(amount=0x271000000000) env = Environment( fee_recipient=coinbase, @@ -52,9 +49,7 @@ def test_mload_dejavu( code=Op.MLOAD(offset=0xFFFFFFF), balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xEA3899B6A7DB8734111AF8B25F6D873E1D14870D), # noqa: E501 ) - pre[sender] = Account(balance=0x271000000000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stMemoryTest/test_mstore_dejavu.py b/tests/ported_static/stMemoryTest/test_mstore_dejavu.py index 63430d68a1d..4c99760786c 100644 --- a/tests/ported_static/stMemoryTest/test_mstore_dejavu.py +++ b/tests/ported_static/stMemoryTest/test_mstore_dejavu.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_mstore_dejavu( ) -> None: """Test_mstore_dejavu.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x7DD1D0EC78FE936B0E88F8C21226F51F048579915C7BAFF1C5D7FD84B2139BF1 - ) + sender = pre.fund_eoa(amount=0x271000000000) env = Environment( fee_recipient=coinbase, @@ -52,9 +49,7 @@ def test_mstore_dejavu( code=Op.MSTORE(offset=0xFFFFFFF, value=0xF1), balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x31FE53A538F8D289FA848C04EDC3664468340362), # noqa: E501 ) - pre[sender] = Account(balance=0x271000000000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stMemoryTest/test_mstroe8_dejavu.py b/tests/ported_static/stMemoryTest/test_mstroe8_dejavu.py index 45645a89e6a..98f8977abc4 100644 --- a/tests/ported_static/stMemoryTest/test_mstroe8_dejavu.py +++ b/tests/ported_static/stMemoryTest/test_mstroe8_dejavu.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_mstroe8_dejavu( ) -> None: """Test_mstroe8_dejavu.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x7DD1D0EC78FE936B0E88F8C21226F51F048579915C7BAFF1C5D7FD84B2139BF1 - ) + sender = pre.fund_eoa(amount=0x271000000000) env = Environment( fee_recipient=coinbase, @@ -52,9 +49,7 @@ def test_mstroe8_dejavu( code=Op.MSTORE8(offset=0xFFFFFFF, value=0xF1), balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xABF77E5B1365493306A9A197D08677715B84CA69), # noqa: E501 ) - pre[sender] = Account(balance=0x271000000000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stMemoryTest/test_oog.py b/tests/ported_static/stMemoryTest/test_oog.py index 47be00cab5c..5c2f1cc4f01 100644 --- a/tests/ported_static/stMemoryTest/test_oog.py +++ b/tests/ported_static/stMemoryTest/test_oog.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -322,9 +321,7 @@ def test_oog( contract_20 = Address(0x00000000000000000000000000000000000100FA) contract_21 = Address(0x00000000000000000000000000000000000111F1) contract_22 = Address(0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0xBA1A9CE0BA1A9CE, nonce=1) env = Environment( fee_recipient=coinbase, @@ -389,32 +386,6 @@ def test_oog( # Source: yul # berlin # { - # // Make sure there is return data to be copied - # pop(call(gas(), 0x1113e, 0, 0, 0x20, 0, 0x20)) - # - # returndatacopy(0x1000,0,0x10) - # } - contract_4 = pre.deploy_contract( # noqa: F841 - code=Op.POP( - Op.CALL( - gas=Op.GAS, - address=0x1113E, - value=Op.DUP1, - args_offset=Op.DUP2, - args_size=Op.DUP2, - ret_offset=0x0, - ret_size=0x20, - ) - ) - + Op.RETURNDATACOPY(dest_offset=0x1000, offset=0x0, size=0x10) - + Op.STOP, - balance=0xBA1A9CE0BA1A9CE, - nonce=1, - address=Address(0x000000000000000000000000000000000001003E), # noqa: E501 - ) - # Source: yul - # berlin - # { # mstore(0, 0x0102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F20) # noqa: E501 # return(0,0x20) # } @@ -565,6 +536,70 @@ def test_oog( # Source: yul # berlin # { + # stop() + # } + contract_21 = pre.deploy_contract( # noqa: F841 + code=Op.STOP, + balance=0xBA1A9CE0BA1A9CE, + nonce=1, + address=Address(0x00000000000000000000000000000000000111F1), # noqa: E501 + ) + # Source: yul + # berlin + # { + # let op := calldataload(0x04) + # let gasAmt := calldataload(0x24) + # + # // Call the function that actually goes OOG (or not) + # sstore(0, call(gasAmt, add(0x10000,op), 0, 0, 0, 0, 0)) + # } + contract_22 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.CALL( + gas=Op.CALLDATALOAD(offset=0x24), + address=Op.ADD(Op.CALLDATALOAD(offset=0x4), 0x10000), + value=Op.DUP1, + args_offset=Op.DUP1, + args_size=Op.DUP1, + ret_offset=Op.DUP1, + ret_size=0x0, + ), + ) + + Op.STOP, + balance=0xBA1A9CE0BA1A9CE, + nonce=1, + address=Address(0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC), # noqa: E501 + ) + # Source: yul + # berlin + # { + # // Make sure there is return data to be copied + # pop(call(gas(), 0x1113e, 0, 0, 0x20, 0, 0x20)) + # + # returndatacopy(0x1000,0,0x10) + # } + contract_4 = pre.deploy_contract( # noqa: F841 + code=Op.POP( + Op.CALL( + gas=Op.GAS, + address=0x1113E, + value=Op.DUP1, + args_offset=Op.DUP2, + args_size=Op.DUP2, + ret_offset=0x0, + ret_size=0x20, + ) + ) + + Op.RETURNDATACOPY(dest_offset=0x1000, offset=0x0, size=0x10) + + Op.STOP, + balance=0xBA1A9CE0BA1A9CE, + nonce=1, + address=Address(0x000000000000000000000000000000000001003E), # noqa: E501 + ) + # Source: yul + # berlin + # { # pop(call(gas(), 0x111f1, 0, 0x10000, 0, 0, 0)) # } contract_17 = pre.deploy_contract( # noqa: F841 @@ -585,13 +620,12 @@ def test_oog( # Source: yul # berlin # { - # pop(callcode(gas(), 0x111f1, 0, 0x10000, 0, 0, 0)) + # pop(staticcall(gas(), 0x111f1, 0x10000, 0, 0, 0)) # } - contract_18 = pre.deploy_contract( # noqa: F841 - code=Op.CALLCODE( + contract_20 = pre.deploy_contract( # noqa: F841 + code=Op.STATICCALL( gas=Op.GAS, address=0x111F1, - value=Op.DUP2, args_offset=0x10000, args_size=Op.DUP1, ret_offset=Op.DUP1, @@ -600,7 +634,7 @@ def test_oog( + Op.STOP, balance=0xBA1A9CE0BA1A9CE, nonce=1, - address=Address(0x00000000000000000000000000000000000100F2), # noqa: E501 + address=Address(0x00000000000000000000000000000000000100FA), # noqa: E501 ) # Source: yul # berlin @@ -624,12 +658,13 @@ def test_oog( # Source: yul # berlin # { - # pop(staticcall(gas(), 0x111f1, 0x10000, 0, 0, 0)) + # pop(callcode(gas(), 0x111f1, 0, 0x10000, 0, 0, 0)) # } - contract_20 = pre.deploy_contract( # noqa: F841 - code=Op.STATICCALL( + contract_18 = pre.deploy_contract( # noqa: F841 + code=Op.CALLCODE( gas=Op.GAS, address=0x111F1, + value=Op.DUP2, args_offset=0x10000, args_size=Op.DUP1, ret_offset=Op.DUP1, @@ -638,47 +673,8 @@ def test_oog( + Op.STOP, balance=0xBA1A9CE0BA1A9CE, nonce=1, - address=Address(0x00000000000000000000000000000000000100FA), # noqa: E501 - ) - # Source: yul - # berlin - # { - # stop() - # } - contract_21 = pre.deploy_contract( # noqa: F841 - code=Op.STOP, - balance=0xBA1A9CE0BA1A9CE, - nonce=1, - address=Address(0x00000000000000000000000000000000000111F1), # noqa: E501 - ) - # Source: yul - # berlin - # { - # let op := calldataload(0x04) - # let gasAmt := calldataload(0x24) - # - # // Call the function that actually goes OOG (or not) - # sstore(0, call(gasAmt, add(0x10000,op), 0, 0, 0, 0, 0)) - # } - contract_22 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.CALL( - gas=Op.CALLDATALOAD(offset=0x24), - address=Op.ADD(Op.CALLDATALOAD(offset=0x4), 0x10000), - value=Op.DUP1, - args_offset=Op.DUP1, - args_size=Op.DUP1, - ret_offset=Op.DUP1, - ret_size=0x0, - ), - ) - + Op.STOP, - balance=0xBA1A9CE0BA1A9CE, - nonce=1, - address=Address(0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC), # noqa: E501 + address=Address(0x00000000000000000000000000000000000100F2), # noqa: E501 ) - pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE, nonce=1) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stMemoryTest/test_sha3_dejavu.py b/tests/ported_static/stMemoryTest/test_sha3_dejavu.py index 31969392158..71ea3d8f864 100644 --- a/tests/ported_static/stMemoryTest/test_sha3_dejavu.py +++ b/tests/ported_static/stMemoryTest/test_sha3_dejavu.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_sha3_dejavu( ) -> None: """Test_sha3_dejavu.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x7DD1D0EC78FE936B0E88F8C21226F51F048579915C7BAFF1C5D7FD84B2139BF1 - ) + sender = pre.fund_eoa(amount=0x271000000000) env = Environment( fee_recipient=coinbase, @@ -52,9 +49,7 @@ def test_sha3_dejavu( code=Op.SHA3(offset=0xFFFFFFF, size=0xFF), balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xA9B85B894D15D75175CE20CC2D6810154894110C), # noqa: E501 ) - pre[sender] = Account(balance=0x271000000000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stMemoryTest/test_stack_limit_gas_1023.py b/tests/ported_static/stMemoryTest/test_stack_limit_gas_1023.py index 2c8c21b2e1c..b00ed4ee67b 100644 --- a/tests/ported_static/stMemoryTest/test_stack_limit_gas_1023.py +++ b/tests/ported_static/stMemoryTest/test_stack_limit_gas_1023.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_stack_limit_gas_1023( ) -> None: """Test_stack_limit_gas_1023.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x834185262E53584684BF2B72C64E510013C235D0F45E462DB65900455DF45A35 - ) + sender = pre.fund_eoa(amount=0x6400000000) env = Environment( fee_recipient=coinbase, @@ -57,9 +54,7 @@ def test_stack_limit_gas_1023( + Op.STOP * 2, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xEE5DE953F398CD2615E0067F1071541730357EBF), # noqa: E501 ) - pre[sender] = Account(balance=0x6400000000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stMemoryTest/test_stack_limit_gas_1024.py b/tests/ported_static/stMemoryTest/test_stack_limit_gas_1024.py index 78ec7171a20..7ce6abe11e0 100644 --- a/tests/ported_static/stMemoryTest/test_stack_limit_gas_1024.py +++ b/tests/ported_static/stMemoryTest/test_stack_limit_gas_1024.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_stack_limit_gas_1024( ) -> None: """Test_stack_limit_gas_1024.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x834185262E53584684BF2B72C64E510013C235D0F45E462DB65900455DF45A35 - ) + sender = pre.fund_eoa(amount=0x6400000000) env = Environment( fee_recipient=coinbase, @@ -57,9 +54,7 @@ def test_stack_limit_gas_1024( + Op.STOP * 2, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xB2B4442B80EDD3930F9D8A8696794672FBEEBFD0), # noqa: E501 ) - pre[sender] = Account(balance=0x6400000000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stMemoryTest/test_stack_limit_gas_1025.py b/tests/ported_static/stMemoryTest/test_stack_limit_gas_1025.py index 76007c44876..29ee60d63d2 100644 --- a/tests/ported_static/stMemoryTest/test_stack_limit_gas_1025.py +++ b/tests/ported_static/stMemoryTest/test_stack_limit_gas_1025.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_stack_limit_gas_1025( ) -> None: """Test_stack_limit_gas_1025.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x834185262E53584684BF2B72C64E510013C235D0F45E462DB65900455DF45A35 - ) + sender = pre.fund_eoa(amount=0x6400000000) env = Environment( fee_recipient=coinbase, @@ -57,9 +54,7 @@ def test_stack_limit_gas_1025( + Op.STOP * 2, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x6498D2DA4FC198B991F2214160A3CE0E5438F3E4), # noqa: E501 ) - pre[sender] = Account(balance=0x6400000000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stMemoryTest/test_stack_limit_push31_1023.py b/tests/ported_static/stMemoryTest/test_stack_limit_push31_1023.py index 54666231af9..c021f1a041e 100644 --- a/tests/ported_static/stMemoryTest/test_stack_limit_push31_1023.py +++ b/tests/ported_static/stMemoryTest/test_stack_limit_push31_1023.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_stack_limit_push31_1023( ) -> None: """Test_stack_limit_push31_1023.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x834185262E53584684BF2B72C64E510013C235D0F45E462DB65900455DF45A35 - ) + sender = pre.fund_eoa(amount=0x6400000000) env = Environment( fee_recipient=coinbase, @@ -59,9 +56,7 @@ def test_stack_limit_push31_1023( + Op.STOP * 2, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x887FE5A55A7BE422CAF5816B6721C8BB9F8ABBCB), # noqa: E501 ) - pre[sender] = Account(balance=0x6400000000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stMemoryTest/test_stack_limit_push31_1024.py b/tests/ported_static/stMemoryTest/test_stack_limit_push31_1024.py index 9e8c2657854..e3b1790cc4e 100644 --- a/tests/ported_static/stMemoryTest/test_stack_limit_push31_1024.py +++ b/tests/ported_static/stMemoryTest/test_stack_limit_push31_1024.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_stack_limit_push31_1024( ) -> None: """Test_stack_limit_push31_1024.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x834185262E53584684BF2B72C64E510013C235D0F45E462DB65900455DF45A35 - ) + sender = pre.fund_eoa(amount=0x6400000000) env = Environment( fee_recipient=coinbase, @@ -59,9 +56,7 @@ def test_stack_limit_push31_1024( + Op.STOP * 2, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xBCC7FF917E8EDB8DCB3F445B38E466370C684661), # noqa: E501 ) - pre[sender] = Account(balance=0x6400000000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stMemoryTest/test_stack_limit_push31_1025.py b/tests/ported_static/stMemoryTest/test_stack_limit_push31_1025.py index ce5a47f2480..e1927888e80 100644 --- a/tests/ported_static/stMemoryTest/test_stack_limit_push31_1025.py +++ b/tests/ported_static/stMemoryTest/test_stack_limit_push31_1025.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_stack_limit_push31_1025( ) -> None: """Test_stack_limit_push31_1025.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x834185262E53584684BF2B72C64E510013C235D0F45E462DB65900455DF45A35 - ) + sender = pre.fund_eoa(amount=0x6400000000) env = Environment( fee_recipient=coinbase, @@ -59,9 +56,7 @@ def test_stack_limit_push31_1025( + Op.STOP * 2, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x176570409B578ECDAC49079AAE3F1C743FE50853), # noqa: E501 ) - pre[sender] = Account(balance=0x6400000000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stMemoryTest/test_stack_limit_push32_1023.py b/tests/ported_static/stMemoryTest/test_stack_limit_push32_1023.py index cd7ef1c2d56..64916cb0e05 100644 --- a/tests/ported_static/stMemoryTest/test_stack_limit_push32_1023.py +++ b/tests/ported_static/stMemoryTest/test_stack_limit_push32_1023.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_stack_limit_push32_1023( ) -> None: """Test_stack_limit_push32_1023.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x834185262E53584684BF2B72C64E510013C235D0F45E462DB65900455DF45A35 - ) + sender = pre.fund_eoa(amount=0x6400000000) env = Environment( fee_recipient=coinbase, @@ -59,9 +56,7 @@ def test_stack_limit_push32_1023( + Op.STOP * 2, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x34B65BADF9EFCA4FEBC588C255DCFBF8D256E1F0), # noqa: E501 ) - pre[sender] = Account(balance=0x6400000000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stMemoryTest/test_stack_limit_push32_1024.py b/tests/ported_static/stMemoryTest/test_stack_limit_push32_1024.py index f5162482b22..c75f16d85e3 100644 --- a/tests/ported_static/stMemoryTest/test_stack_limit_push32_1024.py +++ b/tests/ported_static/stMemoryTest/test_stack_limit_push32_1024.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_stack_limit_push32_1024( ) -> None: """Test_stack_limit_push32_1024.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x834185262E53584684BF2B72C64E510013C235D0F45E462DB65900455DF45A35 - ) + sender = pre.fund_eoa(amount=0x6400000000) env = Environment( fee_recipient=coinbase, @@ -59,9 +56,7 @@ def test_stack_limit_push32_1024( + Op.STOP * 2, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x6ACB6452D5C01D94259FCC0138D1CB14977B5E7E), # noqa: E501 ) - pre[sender] = Account(balance=0x6400000000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stMemoryTest/test_stack_limit_push32_1025.py b/tests/ported_static/stMemoryTest/test_stack_limit_push32_1025.py index ad03979b9a1..5d72f2a638c 100644 --- a/tests/ported_static/stMemoryTest/test_stack_limit_push32_1025.py +++ b/tests/ported_static/stMemoryTest/test_stack_limit_push32_1025.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_stack_limit_push32_1025( ) -> None: """Test_stack_limit_push32_1025.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x834185262E53584684BF2B72C64E510013C235D0F45E462DB65900455DF45A35 - ) + sender = pre.fund_eoa(amount=0x6400000000) env = Environment( fee_recipient=coinbase, @@ -59,9 +56,7 @@ def test_stack_limit_push32_1025( + Op.STOP * 2, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x3A584DFB85485C7DA4F7F6203D4AA78E8C40295A), # noqa: E501 ) - pre[sender] = Account(balance=0x6400000000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stNonZeroCallsTest/test_non_zero_value_call_to_empty_paris.py b/tests/ported_static/stNonZeroCallsTest/test_non_zero_value_call_to_empty_paris.py index c0a9490e04a..fcfb431e5b8 100644 --- a/tests/ported_static/stNonZeroCallsTest/test_non_zero_value_call_to_empty_paris.py +++ b/tests/ported_static/stNonZeroCallsTest/test_non_zero_value_call_to_empty_paris.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,10 +34,7 @@ def test_non_zero_value_call_to_empty_paris( ) -> None: """Test_non_zero_value_call_to_empty_paris.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - addr = Address(0x76FAE819612A29489A1A43208613D8F8557B8898) - sender = EOA( - key=0x4F31B3206FBF0E0E598B9B1A7D8AC86302A0FF1D8930738F1BEBAE9B67173E52 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -49,7 +45,7 @@ def test_non_zero_value_call_to_empty_paris( gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) + addr = pre.fund_eoa(amount=10) # noqa: F841 # Source: lll # { [0](GAS) [[1]] (CALL 60000 1 0 0 0 0) [[100]] (SUB @0 (GAS)) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -58,7 +54,7 @@ def test_non_zero_value_call_to_empty_paris( key=0x1, value=Op.CALL( gas=0xEA60, - address=0x76FAE819612A29489A1A43208613D8F8557B8898, + address=addr, value=0x1, args_offset=0x0, args_size=0x0, @@ -70,9 +66,7 @@ def test_non_zero_value_call_to_empty_paris( + Op.STOP, balance=1000, nonce=0, - address=Address(0xF6029618CF51CA5236AFC14EAD1FBE0739573C23), # noqa: E501 ) - pre[addr] = Account(balance=10) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stNonZeroCallsTest/test_non_zero_value_call_to_non_non_zero_balance.py b/tests/ported_static/stNonZeroCallsTest/test_non_zero_value_call_to_non_non_zero_balance.py index 2e76021f28b..462c93ae2ae 100644 --- a/tests/ported_static/stNonZeroCallsTest/test_non_zero_value_call_to_non_non_zero_balance.py +++ b/tests/ported_static/stNonZeroCallsTest/test_non_zero_value_call_to_non_non_zero_balance.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,10 +34,7 @@ def test_non_zero_value_call_to_non_non_zero_balance( ) -> None: """Test_non_zero_value_call_to_non_non_zero_balance.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - addr = Address(0x9089DA66E8BBC08846842A301905501BC8525DC4) - sender = EOA( - key=0x4F31B3206FBF0E0E598B9B1A7D8AC86302A0FF1D8930738F1BEBAE9B67173E52 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -49,7 +45,7 @@ def test_non_zero_value_call_to_non_non_zero_balance( gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) + addr = pre.fund_eoa(amount=100) # noqa: F841 # Source: lll # { [0](GAS) [[1]] (CALL 60000 1 0 0 0 0) [[100]] (SUB @0 (GAS)) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -58,7 +54,7 @@ def test_non_zero_value_call_to_non_non_zero_balance( key=0x1, value=Op.CALL( gas=0xEA60, - address=0x9089DA66E8BBC08846842A301905501BC8525DC4, + address=addr, value=0x1, args_offset=0x0, args_size=0x0, @@ -69,9 +65,7 @@ def test_non_zero_value_call_to_non_non_zero_balance( + Op.SSTORE(key=0x64, value=Op.SUB(Op.MLOAD(offset=0x0), Op.GAS)) + Op.STOP, nonce=0, - address=Address(0x4ABD26A4E64C75F89EF76DE6649D66B4929919EC), # noqa: E501 ) - pre[addr] = Account(balance=100) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stNonZeroCallsTest/test_non_zero_value_call_to_one_storage_key_paris.py b/tests/ported_static/stNonZeroCallsTest/test_non_zero_value_call_to_one_storage_key_paris.py index 5bf5653c0c8..76dd7cdb2ba 100644 --- a/tests/ported_static/stNonZeroCallsTest/test_non_zero_value_call_to_one_storage_key_paris.py +++ b/tests/ported_static/stNonZeroCallsTest/test_non_zero_value_call_to_one_storage_key_paris.py @@ -50,6 +50,7 @@ def test_non_zero_value_call_to_one_storage_key_paris( ) pre[sender] = Account(balance=0xE8D4A51000) + pre[addr] = Account(balance=10, storage={0: 1}) # Source: lll # { [0](GAS) [[1]] (CALL 60000 1 0 0 0 0) [[100]] (SUB @0 (GAS)) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -72,7 +73,6 @@ def test_non_zero_value_call_to_one_storage_key_paris( nonce=0, address=Address(0xF6029618CF51CA5236AFC14EAD1FBE0739573C23), # noqa: E501 ) - pre[addr] = Account(balance=10, storage={0: 1}) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stNonZeroCallsTest/test_non_zero_value_callcode_to_empty_paris.py b/tests/ported_static/stNonZeroCallsTest/test_non_zero_value_callcode_to_empty_paris.py index 71778a04ec9..36f7f5f9c28 100644 --- a/tests/ported_static/stNonZeroCallsTest/test_non_zero_value_callcode_to_empty_paris.py +++ b/tests/ported_static/stNonZeroCallsTest/test_non_zero_value_callcode_to_empty_paris.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,10 +34,7 @@ def test_non_zero_value_callcode_to_empty_paris( ) -> None: """Test_non_zero_value_callcode_to_empty_paris.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - addr = Address(0x85B89DB0E2AEF2A23F50801209A3DE4C65C58D9D) - sender = EOA( - key=0x4F31B3206FBF0E0E598B9B1A7D8AC86302A0FF1D8930738F1BEBAE9B67173E52 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -49,7 +45,7 @@ def test_non_zero_value_callcode_to_empty_paris( gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) + addr = pre.fund_eoa(amount=10) # noqa: F841 # Source: lll # { [0](GAS) [[1]] (CALLCODE 60000 1 0 0 0 0) [[100]] (SUB @0 (GAS)) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -58,7 +54,7 @@ def test_non_zero_value_callcode_to_empty_paris( key=0x1, value=Op.CALLCODE( gas=0xEA60, - address=0x85B89DB0E2AEF2A23F50801209A3DE4C65C58D9D, + address=addr, value=0x1, args_offset=0x0, args_size=0x0, @@ -70,9 +66,7 @@ def test_non_zero_value_callcode_to_empty_paris( + Op.STOP, balance=100, nonce=0, - address=Address(0x6DCDA83CA878DEC588C8CC2ADF0DEFBFF1C589B9), # noqa: E501 ) - pre[addr] = Account(balance=10) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stNonZeroCallsTest/test_non_zero_value_callcode_to_non_non_zero_balance.py b/tests/ported_static/stNonZeroCallsTest/test_non_zero_value_callcode_to_non_non_zero_balance.py index 32f170670e3..20ecf378e6b 100644 --- a/tests/ported_static/stNonZeroCallsTest/test_non_zero_value_callcode_to_non_non_zero_balance.py +++ b/tests/ported_static/stNonZeroCallsTest/test_non_zero_value_callcode_to_non_non_zero_balance.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,10 +34,7 @@ def test_non_zero_value_callcode_to_non_non_zero_balance( ) -> None: """Test_non_zero_value_callcode_to_non_non_zero_balance.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - addr = Address(0x9089DA66E8BBC08846842A301905501BC8525DC4) - sender = EOA( - key=0x4F31B3206FBF0E0E598B9B1A7D8AC86302A0FF1D8930738F1BEBAE9B67173E52 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -49,7 +45,7 @@ def test_non_zero_value_callcode_to_non_non_zero_balance( gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) + addr = pre.fund_eoa(amount=100) # noqa: F841 # Source: lll # { [0](GAS) [[1]] (CALLCODE 60000 1 0 0 0 0) [[100]] (SUB @0 (GAS)) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -58,7 +54,7 @@ def test_non_zero_value_callcode_to_non_non_zero_balance( key=0x1, value=Op.CALLCODE( gas=0xEA60, - address=0x9089DA66E8BBC08846842A301905501BC8525DC4, + address=addr, value=0x1, args_offset=0x0, args_size=0x0, @@ -69,9 +65,7 @@ def test_non_zero_value_callcode_to_non_non_zero_balance( + Op.SSTORE(key=0x64, value=Op.SUB(Op.MLOAD(offset=0x0), Op.GAS)) + Op.STOP, nonce=0, - address=Address(0x082A0810DA3F7A5B41A2D8291511FE800D7A021C), # noqa: E501 ) - pre[addr] = Account(balance=100) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stNonZeroCallsTest/test_non_zero_value_callcode_to_one_storage_key_paris.py b/tests/ported_static/stNonZeroCallsTest/test_non_zero_value_callcode_to_one_storage_key_paris.py index c4a9e058a2c..24406f1746d 100644 --- a/tests/ported_static/stNonZeroCallsTest/test_non_zero_value_callcode_to_one_storage_key_paris.py +++ b/tests/ported_static/stNonZeroCallsTest/test_non_zero_value_callcode_to_one_storage_key_paris.py @@ -50,6 +50,7 @@ def test_non_zero_value_callcode_to_one_storage_key_paris( ) pre[sender] = Account(balance=0xE8D4A51000) + pre[addr] = Account(balance=10, storage={0: 1}) # Source: lll # { [0](GAS) [[1]] (CALLCODE 60000 1 0 0 0 0) [[100]] (SUB @0 (GAS)) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -72,7 +73,6 @@ def test_non_zero_value_callcode_to_one_storage_key_paris( nonce=0, address=Address(0xB7BB61C75BE691459CEF9A8FD7EC074933FA1D1F), # noqa: E501 ) - pre[addr] = Account(balance=10, storage={0: 1}) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stNonZeroCallsTest/test_non_zero_value_delegatecall_to_empty_paris.py b/tests/ported_static/stNonZeroCallsTest/test_non_zero_value_delegatecall_to_empty_paris.py index be9986768fb..1c2a832d499 100644 --- a/tests/ported_static/stNonZeroCallsTest/test_non_zero_value_delegatecall_to_empty_paris.py +++ b/tests/ported_static/stNonZeroCallsTest/test_non_zero_value_delegatecall_to_empty_paris.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,10 +34,7 @@ def test_non_zero_value_delegatecall_to_empty_paris( ) -> None: """Test_non_zero_value_delegatecall_to_empty_paris.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - addr = Address(0x76FAE819612A29489A1A43208613D8F8557B8898) - sender = EOA( - key=0x4F31B3206FBF0E0E598B9B1A7D8AC86302A0FF1D8930738F1BEBAE9B67173E52 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -49,7 +45,7 @@ def test_non_zero_value_delegatecall_to_empty_paris( gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) + addr = pre.fund_eoa(amount=10) # noqa: F841 # Source: lll # { [0](GAS) [[1]] (DELEGATECALL 60000 0 0 0 0) [[100]] (SUB @0 (GAS)) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -58,7 +54,7 @@ def test_non_zero_value_delegatecall_to_empty_paris( key=0x1, value=Op.DELEGATECALL( gas=0xEA60, - address=0x76FAE819612A29489A1A43208613D8F8557B8898, + address=addr, args_offset=0x0, args_size=0x0, ret_offset=0x0, @@ -68,9 +64,7 @@ def test_non_zero_value_delegatecall_to_empty_paris( + Op.SSTORE(key=0x64, value=Op.SUB(Op.MLOAD(offset=0x0), Op.GAS)) + Op.STOP, nonce=0, - address=Address(0x9C1470E9F035F5D8F34D7C0FF2650F9F89DE43FE), # noqa: E501 ) - pre[addr] = Account(balance=10) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stNonZeroCallsTest/test_non_zero_value_delegatecall_to_non_non_zero_balance.py b/tests/ported_static/stNonZeroCallsTest/test_non_zero_value_delegatecall_to_non_non_zero_balance.py index 197f0ddb7e9..f4716bb2707 100644 --- a/tests/ported_static/stNonZeroCallsTest/test_non_zero_value_delegatecall_to_non_non_zero_balance.py +++ b/tests/ported_static/stNonZeroCallsTest/test_non_zero_value_delegatecall_to_non_non_zero_balance.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,10 +34,7 @@ def test_non_zero_value_delegatecall_to_non_non_zero_balance( ) -> None: """Test_non_zero_value_delegatecall_to_non_non_zero_balance.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - addr = Address(0x9089DA66E8BBC08846842A301905501BC8525DC4) - sender = EOA( - key=0x4F31B3206FBF0E0E598B9B1A7D8AC86302A0FF1D8930738F1BEBAE9B67173E52 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -49,7 +45,7 @@ def test_non_zero_value_delegatecall_to_non_non_zero_balance( gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) + addr = pre.fund_eoa(amount=100) # noqa: F841 # Source: lll # { [0](GAS) [[1]] (DELEGATECALL 60000 0 0 0 0) [[100]] (SUB @0 (GAS)) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -58,7 +54,7 @@ def test_non_zero_value_delegatecall_to_non_non_zero_balance( key=0x1, value=Op.DELEGATECALL( gas=0xEA60, - address=0x9089DA66E8BBC08846842A301905501BC8525DC4, + address=addr, args_offset=0x0, args_size=0x0, ret_offset=0x0, @@ -68,9 +64,7 @@ def test_non_zero_value_delegatecall_to_non_non_zero_balance( + Op.SSTORE(key=0x64, value=Op.SUB(Op.MLOAD(offset=0x0), Op.GAS)) + Op.STOP, nonce=0, - address=Address(0x9C1470E9F035F5D8F34D7C0FF2650F9F89DE43FE), # noqa: E501 ) - pre[addr] = Account(balance=100) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stNonZeroCallsTest/test_non_zero_value_delegatecall_to_one_storage_key_paris.py b/tests/ported_static/stNonZeroCallsTest/test_non_zero_value_delegatecall_to_one_storage_key_paris.py index 022c431b1e6..59f545e4ace 100644 --- a/tests/ported_static/stNonZeroCallsTest/test_non_zero_value_delegatecall_to_one_storage_key_paris.py +++ b/tests/ported_static/stNonZeroCallsTest/test_non_zero_value_delegatecall_to_one_storage_key_paris.py @@ -50,6 +50,7 @@ def test_non_zero_value_delegatecall_to_one_storage_key_paris( ) pre[sender] = Account(balance=0xE8D4A51000) + pre[addr] = Account(balance=10, storage={0: 1}) # Source: lll # { [0](GAS) [[1]] (DELEGATECALL 60000 0 0 0 0) [[100]] (SUB @0 (GAS)) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -70,7 +71,6 @@ def test_non_zero_value_delegatecall_to_one_storage_key_paris( nonce=0, address=Address(0x9C1470E9F035F5D8F34D7C0FF2650F9F89DE43FE), # noqa: E501 ) - pre[addr] = Account(balance=10, storage={0: 1}) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stNonZeroCallsTest/test_non_zero_value_suicide_to_empty_paris.py b/tests/ported_static/stNonZeroCallsTest/test_non_zero_value_suicide_to_empty_paris.py index 75df7269787..10199a820db 100644 --- a/tests/ported_static/stNonZeroCallsTest/test_non_zero_value_suicide_to_empty_paris.py +++ b/tests/ported_static/stNonZeroCallsTest/test_non_zero_value_suicide_to_empty_paris.py @@ -50,6 +50,7 @@ def test_non_zero_value_suicide_to_empty_paris( ) pre[sender] = Account(balance=0xE8D4A51000) + pre[addr] = Account(balance=10) # Source: lll # { (SELFDESTRUCT ) } target = pre.deploy_contract( # noqa: F841 @@ -61,7 +62,6 @@ def test_non_zero_value_suicide_to_empty_paris( nonce=0, address=Address(0xEB9A4C7A191790631D13FC4927446F5EF9D201FC), # noqa: E501 ) - pre[addr] = Account(balance=10) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stNonZeroCallsTest/test_non_zero_value_suicide_to_non_non_zero_balance.py b/tests/ported_static/stNonZeroCallsTest/test_non_zero_value_suicide_to_non_non_zero_balance.py index ba77faa7fbc..3ba10da6dfc 100644 --- a/tests/ported_static/stNonZeroCallsTest/test_non_zero_value_suicide_to_non_non_zero_balance.py +++ b/tests/ported_static/stNonZeroCallsTest/test_non_zero_value_suicide_to_non_non_zero_balance.py @@ -50,6 +50,7 @@ def test_non_zero_value_suicide_to_non_non_zero_balance( ) pre[sender] = Account(balance=0xE8D4A51000) + pre[addr] = Account(balance=100) # Source: lll # { (SELFDESTRUCT ) } target = pre.deploy_contract( # noqa: F841 @@ -61,7 +62,6 @@ def test_non_zero_value_suicide_to_non_non_zero_balance( nonce=0, address=Address(0xEB9A4C7A191790631D13FC4927446F5EF9D201FC), # noqa: E501 ) - pre[addr] = Account(balance=100) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stNonZeroCallsTest/test_non_zero_value_suicide_to_one_storage_key_paris.py b/tests/ported_static/stNonZeroCallsTest/test_non_zero_value_suicide_to_one_storage_key_paris.py index 4ca8cbba6e0..ee3e06ea5e1 100644 --- a/tests/ported_static/stNonZeroCallsTest/test_non_zero_value_suicide_to_one_storage_key_paris.py +++ b/tests/ported_static/stNonZeroCallsTest/test_non_zero_value_suicide_to_one_storage_key_paris.py @@ -50,6 +50,7 @@ def test_non_zero_value_suicide_to_one_storage_key_paris( ) pre[sender] = Account(balance=0xE8D4A51000) + pre[addr] = Account(balance=10, storage={0: 1}) # Source: lll # { (SELFDESTRUCT ) } target = pre.deploy_contract( # noqa: F841 @@ -62,7 +63,6 @@ def test_non_zero_value_suicide_to_one_storage_key_paris( nonce=0, address=Address(0xCF0486CE2ACF393729249BA0F9B3CFBE450DF9C3), # noqa: E501 ) - pre[addr] = Account(balance=10, storage={0: 1}) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stNonZeroCallsTest/test_non_zero_value_transaction_cal_lwith_data_to_empty_paris.py b/tests/ported_static/stNonZeroCallsTest/test_non_zero_value_transaction_cal_lwith_data_to_empty_paris.py index e3db6728ce0..14ca33fffcf 100644 --- a/tests/ported_static/stNonZeroCallsTest/test_non_zero_value_transaction_cal_lwith_data_to_empty_paris.py +++ b/tests/ported_static/stNonZeroCallsTest/test_non_zero_value_transaction_cal_lwith_data_to_empty_paris.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -26,17 +25,13 @@ ], ) @pytest.mark.valid_from("Cancun") -@pytest.mark.pre_alloc_mutable def test_non_zero_value_transaction_cal_lwith_data_to_empty_paris( state_test: StateTestFiller, pre: Alloc, ) -> None: """Test_non_zero_value_transaction_cal_lwith_data_to_empty_paris.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - addr = Address(0x76FAE819612A29489A1A43208613D8F8557B8898) - sender = EOA( - key=0x4F31B3206FBF0E0E598B9B1A7D8AC86302A0FF1D8930738F1BEBAE9B67173E52 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -47,8 +42,7 @@ def test_non_zero_value_transaction_cal_lwith_data_to_empty_paris( gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) - pre[addr] = Account(balance=10) + addr = pre.fund_eoa(amount=10) # noqa: F841 tx = Transaction( sender=sender, diff --git a/tests/ported_static/stNonZeroCallsTest/test_non_zero_value_transaction_cal_lwith_data_to_non_non_zero_balance.py b/tests/ported_static/stNonZeroCallsTest/test_non_zero_value_transaction_cal_lwith_data_to_non_non_zero_balance.py index f82893cc030..cb790534638 100644 --- a/tests/ported_static/stNonZeroCallsTest/test_non_zero_value_transaction_cal_lwith_data_to_non_non_zero_balance.py +++ b/tests/ported_static/stNonZeroCallsTest/test_non_zero_value_transaction_cal_lwith_data_to_non_non_zero_balance.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -26,17 +25,13 @@ ], ) @pytest.mark.valid_from("Cancun") -@pytest.mark.pre_alloc_mutable def test_non_zero_value_transaction_cal_lwith_data_to_non_non_zero_balance( state_test: StateTestFiller, pre: Alloc, ) -> None: """Test_non_zero_value_transaction_cal_lwith_data_to_non_non_zero_balance.""" # noqa: E501 coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - addr = Address(0x9089DA66E8BBC08846842A301905501BC8525DC4) - sender = EOA( - key=0x4F31B3206FBF0E0E598B9B1A7D8AC86302A0FF1D8930738F1BEBAE9B67173E52 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -47,8 +42,7 @@ def test_non_zero_value_transaction_cal_lwith_data_to_non_non_zero_balance( gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) - pre[addr] = Account(balance=100) + addr = pre.fund_eoa(amount=100) # noqa: F841 tx = Transaction( sender=sender, diff --git a/tests/ported_static/stNonZeroCallsTest/test_non_zero_value_transaction_call_to_empty_paris.py b/tests/ported_static/stNonZeroCallsTest/test_non_zero_value_transaction_call_to_empty_paris.py index 095040893c2..66d1d845ec1 100644 --- a/tests/ported_static/stNonZeroCallsTest/test_non_zero_value_transaction_call_to_empty_paris.py +++ b/tests/ported_static/stNonZeroCallsTest/test_non_zero_value_transaction_call_to_empty_paris.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -27,17 +26,13 @@ ], ) @pytest.mark.valid_from("Cancun") -@pytest.mark.pre_alloc_mutable def test_non_zero_value_transaction_call_to_empty_paris( state_test: StateTestFiller, pre: Alloc, ) -> None: """Test_non_zero_value_transaction_call_to_empty_paris.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - addr = Address(0x76FAE819612A29489A1A43208613D8F8557B8898) - sender = EOA( - key=0x4F31B3206FBF0E0E598B9B1A7D8AC86302A0FF1D8930738F1BEBAE9B67173E52 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -48,8 +43,7 @@ def test_non_zero_value_transaction_call_to_empty_paris( gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) - pre[addr] = Account(balance=10) + addr = pre.fund_eoa(amount=10) # noqa: F841 tx = Transaction( sender=sender, diff --git a/tests/ported_static/stNonZeroCallsTest/test_non_zero_value_transaction_call_to_non_non_zero_balance.py b/tests/ported_static/stNonZeroCallsTest/test_non_zero_value_transaction_call_to_non_non_zero_balance.py index 219911b6d67..91d139dce97 100644 --- a/tests/ported_static/stNonZeroCallsTest/test_non_zero_value_transaction_call_to_non_non_zero_balance.py +++ b/tests/ported_static/stNonZeroCallsTest/test_non_zero_value_transaction_call_to_non_non_zero_balance.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -27,17 +26,13 @@ ], ) @pytest.mark.valid_from("Cancun") -@pytest.mark.pre_alloc_mutable def test_non_zero_value_transaction_call_to_non_non_zero_balance( state_test: StateTestFiller, pre: Alloc, ) -> None: """Test_non_zero_value_transaction_call_to_non_non_zero_balance.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - addr = Address(0x9089DA66E8BBC08846842A301905501BC8525DC4) - sender = EOA( - key=0x4F31B3206FBF0E0E598B9B1A7D8AC86302A0FF1D8930738F1BEBAE9B67173E52 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -48,8 +43,7 @@ def test_non_zero_value_transaction_call_to_non_non_zero_balance( gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) - pre[addr] = Account(balance=100) + addr = pre.fund_eoa(amount=100) # noqa: F841 tx = Transaction( sender=sender, diff --git a/tests/ported_static/stPreCompiledContracts/test_modexp.py b/tests/ported_static/stPreCompiledContracts/test_modexp.py index a4c9a100a7b..982a98231e2 100644 --- a/tests/ported_static/stPreCompiledContracts/test_modexp.py +++ b/tests/ported_static/stPreCompiledContracts/test_modexp.py @@ -973,6 +973,7 @@ def test_modexp( gas_limit=10000000000, ) + pre[sender] = Account(balance=0x3635C9ADC5DEA00000) # Source: lll # { (CALLDATACOPY 0 0 (CALLDATASIZE)) [[1]] (CALLCODE (GAS) 5 0 0 (CALLDATASIZE) 1000 32) [[2]](MLOAD 1000) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -994,7 +995,6 @@ def test_modexp( nonce=0, address=Address(0x2D06AD61919840E4E00F80782DEDCE12ADA1E859), # noqa: E501 ) - pre[sender] = Account(balance=0x3635C9ADC5DEA00000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stPreCompiledContracts/test_modexp_tests.py b/tests/ported_static/stPreCompiledContracts/test_modexp_tests.py index b8675dabb75..487eb639575 100644 --- a/tests/ported_static/stPreCompiledContracts/test_modexp_tests.py +++ b/tests/ported_static/stPreCompiledContracts/test_modexp_tests.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -810,9 +809,7 @@ def test_modexp_tests( ) -> None: """Ori Pomerantz qbzzt1@gmail.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x48DC5A9F099CAAAA557742CA3A990A94BE45B9969126A1BC74E5E8BE5A2B5B47 - ) + sender = pre.fund_eoa(amount=0xBA1A9CE0BA1A9CE, nonce=1) env = Environment( fee_recipient=coinbase, @@ -882,9 +879,7 @@ def test_modexp_tests( + Op.STOP, balance=0xBA1A9CE0BA1A9CE, nonce=1, - address=Address(0x6082A22DBF403B1AF4FE03A0CCBD9BB78DEFB44A), # noqa: E501 ) - pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE, nonce=1) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stPreCompiledContracts/test_sec80.py b/tests/ported_static/stPreCompiledContracts/test_sec80.py index b0a5de2af25..7f08f0420c8 100644 --- a/tests/ported_static/stPreCompiledContracts/test_sec80.py +++ b/tests/ported_static/stPreCompiledContracts/test_sec80.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_sec80( ) -> None: """Test_sec80.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -95,9 +92,7 @@ def test_sec80( + Op.JUMP(pc=0x9), balance=0x1312D00, nonce=0, - address=Address(0x39C2FBD2D4E46FA75775649472DDB79E836160B0), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stPreCompiledContracts2/test_call_ecrecover0.py b/tests/ported_static/stPreCompiledContracts2/test_call_ecrecover0.py index de149aa5a2c..96a35affc1a 100644 --- a/tests/ported_static/stPreCompiledContracts2/test_call_ecrecover0.py +++ b/tests/ported_static/stPreCompiledContracts2/test_call_ecrecover0.py @@ -47,6 +47,7 @@ def test_call_ecrecover0( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { (MSTORE 0 0x18c547e4f7b0f325ad1e56f57e26c745b09a3e503d86e00e5255ff7f715d3d1c) (MSTORE 32 28) (MSTORE 64 0x73b1693892219d736caba55bdb67216e485557ea6b6af75f37096c9aa6a5a75f) (MSTORE 96 0xeeb940b1d03b21e36b0e47e79769f095fe2ab855bd91e3a38756b7d75a9c4549) [[ 2 ]] (CALL 300000 1 0 0 128 128 32) [[ 0 ]] (MOD (MLOAD 128) (EXP 2 160)) [[ 1 ]] (EQ (ORIGIN) (SLOAD 0)) } # noqa: E501 contract_0 = pre.deploy_contract( # noqa: F841 @@ -84,7 +85,6 @@ def test_call_ecrecover0( nonce=0, address=Address(0x095E7BAEA6A6C7C4C2DFEB977EFAC326AF552D87), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, @@ -94,14 +94,6 @@ def test_call_ecrecover0( value=0x186A0, ) - post = { - contract_0: Account( - storage={ - 0: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, - 1: 1, - 2: 1, - }, - ), - } + post = {contract_0: Account(storage={0: sender, 1: 1, 2: 1})} state_test(env=env, pre=pre, post=post, tx=tx) diff --git a/tests/ported_static/stPreCompiledContracts2/test_call_ecrecover0_0input.py b/tests/ported_static/stPreCompiledContracts2/test_call_ecrecover0_0input.py index 0f2b601cce9..5116b30b570 100644 --- a/tests/ported_static/stPreCompiledContracts2/test_call_ecrecover0_0input.py +++ b/tests/ported_static/stPreCompiledContracts2/test_call_ecrecover0_0input.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_call_ecrecover0_0input( ) -> None: """Test_call_ecrecover0_0input.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -67,9 +64,7 @@ def test_call_ecrecover0_0input( + Op.STOP, balance=0x1312D00, nonce=0, - address=Address(0x6988D3CD2C65677341D1E302439627344DFB1C82), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stPreCompiledContracts2/test_call_ecrecover0_complete_return_value.py b/tests/ported_static/stPreCompiledContracts2/test_call_ecrecover0_complete_return_value.py index 90a04e42c17..6f44a02596c 100644 --- a/tests/ported_static/stPreCompiledContracts2/test_call_ecrecover0_complete_return_value.py +++ b/tests/ported_static/stPreCompiledContracts2/test_call_ecrecover0_complete_return_value.py @@ -49,6 +49,7 @@ def test_call_ecrecover0_complete_return_value( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { (MSTORE 0 0x18c547e4f7b0f325ad1e56f57e26c745b09a3e503d86e00e5255ff7f715d3d1c) (MSTORE 32 28) (MSTORE 64 0x73b1693892219d736caba55bdb67216e485557ea6b6af75f37096c9aa6a5a75f) (MSTORE 96 0xeeb940b1d03b21e36b0e47e79769f095fe2ab855bd91e3a38756b7d75a9c4549) [[ 2 ]] (CALL 3000 1 0 0 128 128 32) [[ 0 ]] (MLOAD 128) } # noqa: E501 contract_0 = pre.deploy_contract( # noqa: F841 @@ -83,7 +84,6 @@ def test_call_ecrecover0_complete_return_value( nonce=0, address=Address(0x095E7BAEA6A6C7C4C2DFEB977EFAC326AF552D87), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, @@ -93,13 +93,6 @@ def test_call_ecrecover0_complete_return_value( value=0x186A0, ) - post = { - contract_0: Account( - storage={ - 0: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, - 2: 1, - }, - ), - } + post = {contract_0: Account(storage={0: sender, 2: 1})} state_test(env=env, pre=pre, post=post, tx=tx) diff --git a/tests/ported_static/stPreCompiledContracts2/test_call_ecrecover0_gas2999.py b/tests/ported_static/stPreCompiledContracts2/test_call_ecrecover0_gas2999.py index b58b7e89146..7252f2e85fb 100644 --- a/tests/ported_static/stPreCompiledContracts2/test_call_ecrecover0_gas2999.py +++ b/tests/ported_static/stPreCompiledContracts2/test_call_ecrecover0_gas2999.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_call_ecrecover0_gas2999( ) -> None: """Test_call_ecrecover0_gas2999.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -81,9 +78,7 @@ def test_call_ecrecover0_gas2999( + Op.STOP, balance=0x1312D00, nonce=0, - address=Address(0x34BC8D999C6FFD2DF1999D36424D37AA91286FA3), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stPreCompiledContracts2/test_call_ecrecover0_gas3000.py b/tests/ported_static/stPreCompiledContracts2/test_call_ecrecover0_gas3000.py index d95b758fde6..d030a8f189e 100644 --- a/tests/ported_static/stPreCompiledContracts2/test_call_ecrecover0_gas3000.py +++ b/tests/ported_static/stPreCompiledContracts2/test_call_ecrecover0_gas3000.py @@ -47,6 +47,7 @@ def test_call_ecrecover0_gas3000( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { (MSTORE 0 0x18c547e4f7b0f325ad1e56f57e26c745b09a3e503d86e00e5255ff7f715d3d1c) (MSTORE 32 28) (MSTORE 64 0x73b1693892219d736caba55bdb67216e485557ea6b6af75f37096c9aa6a5a75f) (MSTORE 96 0xeeb940b1d03b21e36b0e47e79769f095fe2ab855bd91e3a38756b7d75a9c4549) [[ 2 ]] (CALL 3000 1 0 0 128 128 32) [[ 0 ]] (MOD (MLOAD 128) (EXP 2 160)) [[ 1 ]] (EQ (ORIGIN) (SLOAD 0)) } # noqa: E501 contract_0 = pre.deploy_contract( # noqa: F841 @@ -84,7 +85,6 @@ def test_call_ecrecover0_gas3000( nonce=0, address=Address(0x095E7BAEA6A6C7C4C2DFEB977EFAC326AF552D87), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, @@ -94,14 +94,6 @@ def test_call_ecrecover0_gas3000( value=0x186A0, ) - post = { - contract_0: Account( - storage={ - 0: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, - 1: 1, - 2: 1, - }, - ), - } + post = {contract_0: Account(storage={0: sender, 1: 1, 2: 1})} state_test(env=env, pre=pre, post=post, tx=tx) diff --git a/tests/ported_static/stPreCompiledContracts2/test_call_ecrecover0_no_gas.py b/tests/ported_static/stPreCompiledContracts2/test_call_ecrecover0_no_gas.py index c2bb521a6c5..148ce74a70a 100644 --- a/tests/ported_static/stPreCompiledContracts2/test_call_ecrecover0_no_gas.py +++ b/tests/ported_static/stPreCompiledContracts2/test_call_ecrecover0_no_gas.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_call_ecrecover0_no_gas( ) -> None: """Test_call_ecrecover0_no_gas.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -82,9 +79,7 @@ def test_call_ecrecover0_no_gas( storage={0: 12, 1: 12, 2: 12}, balance=0x1312D00, nonce=0, - address=Address(0x9F2E40FCA484BDCF92B52E622EED58D6A3DF731F), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stPreCompiledContracts2/test_call_ecrecover0_overlapping_input_output.py b/tests/ported_static/stPreCompiledContracts2/test_call_ecrecover0_overlapping_input_output.py index 2c23599a76f..38dc572832a 100644 --- a/tests/ported_static/stPreCompiledContracts2/test_call_ecrecover0_overlapping_input_output.py +++ b/tests/ported_static/stPreCompiledContracts2/test_call_ecrecover0_overlapping_input_output.py @@ -49,6 +49,7 @@ def test_call_ecrecover0_overlapping_input_output( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { (MSTORE 0 0x18c547e4f7b0f325ad1e56f57e26c745b09a3e503d86e00e5255ff7f715d3d1c) (MSTORE 32 28) (MSTORE 64 0x73b1693892219d736caba55bdb67216e485557ea6b6af75f37096c9aa6a5a75f) (MSTORE 96 0xeeb940b1d03b21e36b0e47e79769f095fe2ab855bd91e3a38756b7d75a9c4549) [[ 2 ]] (CALL 300000 1 0 0 128 64 32) [[ 0 ]] (MOD (MLOAD 64) (EXP 2 160)) [[ 1 ]] (EQ (ORIGIN) (SLOAD 0)) } # noqa: E501 contract_0 = pre.deploy_contract( # noqa: F841 @@ -86,7 +87,6 @@ def test_call_ecrecover0_overlapping_input_output( nonce=0, address=Address(0x095E7BAEA6A6C7C4C2DFEB977EFAC326AF552D87), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, @@ -96,14 +96,6 @@ def test_call_ecrecover0_overlapping_input_output( value=0x186A0, ) - post = { - contract_0: Account( - storage={ - 0: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, - 1: 1, - 2: 1, - }, - ), - } + post = {contract_0: Account(storage={0: sender, 1: 1, 2: 1})} state_test(env=env, pre=pre, post=post, tx=tx) diff --git a/tests/ported_static/stPreCompiledContracts2/test_call_ecrecover1.py b/tests/ported_static/stPreCompiledContracts2/test_call_ecrecover1.py index 8f4c341d7ab..e2c3b6511c7 100644 --- a/tests/ported_static/stPreCompiledContracts2/test_call_ecrecover1.py +++ b/tests/ported_static/stPreCompiledContracts2/test_call_ecrecover1.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_call_ecrecover1( ) -> None: """Test_call_ecrecover1.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -81,9 +78,7 @@ def test_call_ecrecover1( + Op.STOP, balance=0x1312D00, nonce=0, - address=Address(0x62549A73A158B67FDC175B0D94FC2826963FC3C2), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stPreCompiledContracts2/test_call_ecrecover2.py b/tests/ported_static/stPreCompiledContracts2/test_call_ecrecover2.py index 03b12b13eee..e39aeb54a4f 100644 --- a/tests/ported_static/stPreCompiledContracts2/test_call_ecrecover2.py +++ b/tests/ported_static/stPreCompiledContracts2/test_call_ecrecover2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_call_ecrecover2( ) -> None: """Test_call_ecrecover2.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -81,9 +78,7 @@ def test_call_ecrecover2( + Op.STOP, balance=0x1312D00, nonce=0, - address=Address(0x42AA64FDFC0AF7140DA38474659AE0AB48ABA824), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stPreCompiledContracts2/test_call_ecrecover3.py b/tests/ported_static/stPreCompiledContracts2/test_call_ecrecover3.py index 832ba719e2e..fcae7ed32af 100644 --- a/tests/ported_static/stPreCompiledContracts2/test_call_ecrecover3.py +++ b/tests/ported_static/stPreCompiledContracts2/test_call_ecrecover3.py @@ -46,6 +46,7 @@ def test_call_ecrecover3( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { (MSTORE 0 0x2f380a2dea7e778d81affc2443403b8fe4644db442ae4862ff5bb3732829cdb9) (MSTORE 32 27) (MSTORE 64 0x6b65ccb0558806e9b097f27a396d08f964e37b8b7af6ceeb516ff86739fbea0a) (MSTORE 96 0x37cbc8d883e129a4b1ef9d5f1df53c4f21a3ef147cf2a50a4ede0eb06ce092d4) [[ 2 ]] (CALL 100000 1 0 0 128 128 32) [[ 0 ]] (MOD (MLOAD 128) (EXP 2 160)) [[ 1 ]] (EQ (ORIGIN) (SLOAD 0)) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -83,7 +84,6 @@ def test_call_ecrecover3( nonce=0, address=Address(0x28D98D7CC227972A80FA4A16964272BF8738D792), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stPreCompiledContracts2/test_call_ecrecover80.py b/tests/ported_static/stPreCompiledContracts2/test_call_ecrecover80.py index 11ab45c55af..a24e67e9c17 100644 --- a/tests/ported_static/stPreCompiledContracts2/test_call_ecrecover80.py +++ b/tests/ported_static/stPreCompiledContracts2/test_call_ecrecover80.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_call_ecrecover80( ) -> None: """Test_call_ecrecover80.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -81,9 +78,7 @@ def test_call_ecrecover80( + Op.STOP, balance=0x1312D00, nonce=0, - address=Address(0xF5E90F13AA1637BA33175EA73221DD55443A6D5B), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stPreCompiledContracts2/test_call_ecrecover_check_length.py b/tests/ported_static/stPreCompiledContracts2/test_call_ecrecover_check_length.py index 0bd9f4717d7..adb6a64af72 100644 --- a/tests/ported_static/stPreCompiledContracts2/test_call_ecrecover_check_length.py +++ b/tests/ported_static/stPreCompiledContracts2/test_call_ecrecover_check_length.py @@ -49,6 +49,7 @@ def test_call_ecrecover_check_length( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { (MSTORE 128 0x1122334455667788990011223344556677889900112233445566778899001122) (MSTORE 0 0x18c547e4f7b0f325ad1e56f57e26c745b09a3e503d86e00e5255ff7f715d3d1c) (MSTORE 32 28) (MSTORE 64 0x73b1693892219d736caba55bdb67216e485557ea6b6af75f37096c9aa6a5a75f) (MSTORE 96 0xeeb940b1d03b21e36b0e47e79769f095fe2ab855bd91e3a38756b7d75a9c4549) [[ 2 ]] (CALL 300000 1 0 0 128 128 32) [[ 0 ]] (MLOAD 128) [[ 1 ]] (MSIZE) } # noqa: E501 contract_0 = pre.deploy_contract( # noqa: F841 @@ -88,7 +89,6 @@ def test_call_ecrecover_check_length( nonce=0, address=Address(0x095E7BAEA6A6C7C4C2DFEB977EFAC326AF552D87), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, @@ -98,14 +98,6 @@ def test_call_ecrecover_check_length( value=0x186A0, ) - post = { - contract_0: Account( - storage={ - 0: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, - 1: 160, - 2: 1, - }, - ), - } + post = {contract_0: Account(storage={0: sender, 1: 160, 2: 1})} state_test(env=env, pre=pre, post=post, tx=tx) diff --git a/tests/ported_static/stPreCompiledContracts2/test_call_ecrecover_check_length_wrong_v.py b/tests/ported_static/stPreCompiledContracts2/test_call_ecrecover_check_length_wrong_v.py index 53269df2492..6c31f8f8d4f 100644 --- a/tests/ported_static/stPreCompiledContracts2/test_call_ecrecover_check_length_wrong_v.py +++ b/tests/ported_static/stPreCompiledContracts2/test_call_ecrecover_check_length_wrong_v.py @@ -48,6 +48,7 @@ def test_call_ecrecover_check_length_wrong_v( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { (MSTORE 128 0x1122334455667788990011223344556677889900112233445566778899001122) (MSTORE 0 0x18c547e4f7b0f325ad1e56f57e26c745b09a3e503d86e00e5255ff7f715d3d1c) (MSTORE 32 29) (MSTORE 64 0x73b1693892219d736caba55bdb67216e485557ea6b6af75f37096c9aa6a5a75f) (MSTORE 96 0xeeb940b1d03b21e36b0e47e79769f095fe2ab855bd91e3a38756b7d75a9c4549) [[ 2 ]] (CALL 300000 1 0 0 128 128 32) [[ 0 ]] (MLOAD 128) [[ 1 ]] (MSIZE) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -87,7 +88,6 @@ def test_call_ecrecover_check_length_wrong_v( nonce=0, address=Address(0x5CC93303C292C9573FA7DE40FF6281B18DBF491E), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stPreCompiledContracts2/test_call_ecrecover_h_prefixed0.py b/tests/ported_static/stPreCompiledContracts2/test_call_ecrecover_h_prefixed0.py index cb33c065ef0..40d765e1dcc 100644 --- a/tests/ported_static/stPreCompiledContracts2/test_call_ecrecover_h_prefixed0.py +++ b/tests/ported_static/stPreCompiledContracts2/test_call_ecrecover_h_prefixed0.py @@ -48,6 +48,7 @@ def test_call_ecrecover_h_prefixed0( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { (MSTORE 0 0x00c547e4f7b0f325ad1e56f57e26c745b09a3e503d86e00e5255ff7f715d3d1c) (MSTORE 32 28) (MSTORE 64 0x73b1693892219d736caba55bdb67216e485557ea6b6af75f37096c9aa6a5a75f) (MSTORE 96 0xeeb940b1d03b21e36b0e47e79769f095fe2ab855bd91e3a38756b7d75a9c4549) [[ 2 ]] (CALL 300000 1 0 0 128 128 32) [[ 0 ]] (MOD (MLOAD 128) (EXP 2 160)) [[ 1 ]] (EQ (ORIGIN) (SLOAD 0)) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -85,7 +86,6 @@ def test_call_ecrecover_h_prefixed0( nonce=0, address=Address(0x7B80A19CD6F97E5150A04B81956A57115C477C33), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stPreCompiledContracts2/test_call_ecrecover_invalid_signature.py b/tests/ported_static/stPreCompiledContracts2/test_call_ecrecover_invalid_signature.py index 298b6040045..8aeba668b39 100644 --- a/tests/ported_static/stPreCompiledContracts2/test_call_ecrecover_invalid_signature.py +++ b/tests/ported_static/stPreCompiledContracts2/test_call_ecrecover_invalid_signature.py @@ -48,6 +48,7 @@ def test_call_ecrecover_invalid_signature( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { (MSTORE 128 0x1122334455667788991011121314151617181920212223242526272829303132) (CALL 300000 1 0 0 128 128 32) [[ 0 ]] (MLOAD 128) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -72,7 +73,6 @@ def test_call_ecrecover_invalid_signature( nonce=0, address=Address(0x2B8FD4ADB0602FE9EE5823B0576F619DAEFBD369), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stPreCompiledContracts2/test_call_ecrecover_r_prefixed0.py b/tests/ported_static/stPreCompiledContracts2/test_call_ecrecover_r_prefixed0.py index 234dcdf9f4e..4410f66b67d 100644 --- a/tests/ported_static/stPreCompiledContracts2/test_call_ecrecover_r_prefixed0.py +++ b/tests/ported_static/stPreCompiledContracts2/test_call_ecrecover_r_prefixed0.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_call_ecrecover_r_prefixed0( ) -> None: """Test_call_ecrecover_r_prefixed0.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -83,9 +80,7 @@ def test_call_ecrecover_r_prefixed0( + Op.STOP, balance=0x1312D00, nonce=0, - address=Address(0x0453735A25DF75808CCEB79D037904A5007C2058), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stPreCompiledContracts2/test_call_ecrecover_s_prefixed0.py b/tests/ported_static/stPreCompiledContracts2/test_call_ecrecover_s_prefixed0.py index 4a1eada93ba..66b679f89f9 100644 --- a/tests/ported_static/stPreCompiledContracts2/test_call_ecrecover_s_prefixed0.py +++ b/tests/ported_static/stPreCompiledContracts2/test_call_ecrecover_s_prefixed0.py @@ -48,6 +48,7 @@ def test_call_ecrecover_s_prefixed0( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { (MSTORE 0 0x18c547e4f7b0f325ad1e56f57e26c745b09a3e503d86e00e5255ff7f715d3d1c) (MSTORE 32 28) (MSTORE 64 0x73b1693892219d736caba55bdb67216e485557ea6b6af75f37096c9aa6a5a75f) (MSTORE 96 0x00b940b1d03b21e36b0e47e79769f095fe2ab855bd91e3a38756b7d75a9c4549) [[ 2 ]] (CALL 300000 1 0 0 128 128 32) [[ 0 ]] (MOD (MLOAD 128) (EXP 2 160)) [[ 1 ]] (EQ (ORIGIN) (SLOAD 0)) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -85,7 +86,6 @@ def test_call_ecrecover_s_prefixed0( nonce=0, address=Address(0xF292EC7B1106FBD3DF874A754F8C99155B961F92), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stPreCompiledContracts2/test_call_ecrecover_unrecoverable_key.py b/tests/ported_static/stPreCompiledContracts2/test_call_ecrecover_unrecoverable_key.py index 245f682cf5e..961c7e7c940 100644 --- a/tests/ported_static/stPreCompiledContracts2/test_call_ecrecover_unrecoverable_key.py +++ b/tests/ported_static/stPreCompiledContracts2/test_call_ecrecover_unrecoverable_key.py @@ -48,6 +48,7 @@ def test_call_ecrecover_unrecoverable_key( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { (MSTORE 0 0xa8b53bdf3306a35a7103ab5504a0c9b492295564b6202b1942a84ef300107281) (MSTORE 32 0x000000000000000000000000000000000000000000000000000000000000001b) (MSTORE 64 0x3078356531653033663533636531386237373263636230303933666637316633) (MSTORE 96 0x6635336635633735623734646362333161383561613862383839326234653862) (MSTORE 128 0x1122334455667788991011121314151617181920212223242526272829303132) (CALL 300000 1 0 0 128 128 32) (SSTORE 0 (MLOAD 128)) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -85,7 +86,6 @@ def test_call_ecrecover_unrecoverable_key( nonce=0, address=Address(0x85C44D846ED50AC9E384C1B575FD96F3EDF5751F), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stPreCompiledContracts2/test_call_ecrecover_v_prefixed0.py b/tests/ported_static/stPreCompiledContracts2/test_call_ecrecover_v_prefixed0.py index a72ec373fe4..3ed45721580 100644 --- a/tests/ported_static/stPreCompiledContracts2/test_call_ecrecover_v_prefixed0.py +++ b/tests/ported_static/stPreCompiledContracts2/test_call_ecrecover_v_prefixed0.py @@ -49,6 +49,7 @@ def test_call_ecrecover_v_prefixed0( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { (MSTORE 0 0x18c547e4f7b0f325ad1e56f57e26c745b09a3e503d86e00e5255ff7f715d3d1c) (MSTORE 32 0x001c) (MSTORE 64 0x73b1693892219d736caba55bdb67216e485557ea6b6af75f37096c9aa6a5a75f) (MSTORE 96 0xeeb940b1d03b21e36b0e47e79769f095fe2ab855bd91e3a38756b7d75a9c4549) [[ 2 ]] (CALL 300000 1 0 0 128 128 32) [[ 0 ]] (MOD (MLOAD 128) (EXP 2 160)) [[ 1 ]] (EQ (ORIGIN) (SLOAD 0)) } # noqa: E501 contract_0 = pre.deploy_contract( # noqa: F841 @@ -86,7 +87,6 @@ def test_call_ecrecover_v_prefixed0( nonce=0, address=Address(0x095E7BAEA6A6C7C4C2DFEB977EFAC326AF552D87), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, @@ -96,14 +96,6 @@ def test_call_ecrecover_v_prefixed0( value=0x186A0, ) - post = { - contract_0: Account( - storage={ - 0: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, - 1: 1, - 2: 1, - }, - ), - } + post = {contract_0: Account(storage={0: sender, 1: 1, 2: 1})} state_test(env=env, pre=pre, post=post, tx=tx) diff --git a/tests/ported_static/stPreCompiledContracts2/test_call_ripemd160_1.py b/tests/ported_static/stPreCompiledContracts2/test_call_ripemd160_1.py index 241f5d5da26..9db95d1b505 100644 --- a/tests/ported_static/stPreCompiledContracts2/test_call_ripemd160_1.py +++ b/tests/ported_static/stPreCompiledContracts2/test_call_ripemd160_1.py @@ -46,6 +46,7 @@ def test_call_ripemd160_1( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { [[ 2 ]] (CALL 600 3 0 0 0 0 32) [[ 0 ]] (MLOAD 0)} target = pre.deploy_contract( # noqa: F841 @@ -67,7 +68,6 @@ def test_call_ripemd160_1( nonce=0, address=Address(0xBB0A46F4D8842E6949FA40F7D4F5567213240BDE), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stPreCompiledContracts2/test_call_ripemd160_2.py b/tests/ported_static/stPreCompiledContracts2/test_call_ripemd160_2.py index 26ab89c9d7c..a92de2d9538 100644 --- a/tests/ported_static/stPreCompiledContracts2/test_call_ripemd160_2.py +++ b/tests/ported_static/stPreCompiledContracts2/test_call_ripemd160_2.py @@ -46,6 +46,7 @@ def test_call_ripemd160_2( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { (MSTORE 5 0xf34578907f) [[ 2 ]] (CALL 6000 3 0 0 37 0 32) [[ 0 ]] (MLOAD 0)} # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -68,7 +69,6 @@ def test_call_ripemd160_2( nonce=0, address=Address(0x5DA48FFD1587258FB609ACEC343481BB238E2064), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stPreCompiledContracts2/test_call_ripemd160_3.py b/tests/ported_static/stPreCompiledContracts2/test_call_ripemd160_3.py index 058c4289d20..08cc37fed3f 100644 --- a/tests/ported_static/stPreCompiledContracts2/test_call_ripemd160_3.py +++ b/tests/ported_static/stPreCompiledContracts2/test_call_ripemd160_3.py @@ -46,6 +46,7 @@ def test_call_ripemd160_3( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { (MSTORE 0 0xf34578907f) [[ 2 ]] (CALL 6000 3 0 0 37 0 32) [[ 0 ]] (MLOAD 0)} # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -68,7 +69,6 @@ def test_call_ripemd160_3( nonce=0, address=Address(0x37120C525AAED676A19D7786C9296B708C0981E5), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stPreCompiledContracts2/test_call_ripemd160_3_postfixed0.py b/tests/ported_static/stPreCompiledContracts2/test_call_ripemd160_3_postfixed0.py index 5ec760e7f1d..d62b7ae7132 100644 --- a/tests/ported_static/stPreCompiledContracts2/test_call_ripemd160_3_postfixed0.py +++ b/tests/ported_static/stPreCompiledContracts2/test_call_ripemd160_3_postfixed0.py @@ -48,6 +48,7 @@ def test_call_ripemd160_3_postfixed0( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { (MSTORE 0 0xf34578907f00) [[ 2 ]] (CALL 6000 3 0 0 37 0 32) [[ 0 ]] (MLOAD 0)} # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -70,7 +71,6 @@ def test_call_ripemd160_3_postfixed0( nonce=0, address=Address(0x0A7939B337794BF9784CA2EDBACCF4C289D2BD69), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stPreCompiledContracts2/test_call_ripemd160_3_prefixed0.py b/tests/ported_static/stPreCompiledContracts2/test_call_ripemd160_3_prefixed0.py index ebae76691ad..b457fd43897 100644 --- a/tests/ported_static/stPreCompiledContracts2/test_call_ripemd160_3_prefixed0.py +++ b/tests/ported_static/stPreCompiledContracts2/test_call_ripemd160_3_prefixed0.py @@ -48,6 +48,7 @@ def test_call_ripemd160_3_prefixed0( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { (MSTORE 0 0x00f34578907f) [[ 2 ]] (CALL 6000 3 0 0 37 0 32) [[ 0 ]] (MLOAD 0)} # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -70,7 +71,6 @@ def test_call_ripemd160_3_prefixed0( nonce=0, address=Address(0x58FBC34303E81CFADD7D347E87E46B2D6CE7548F), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stPreCompiledContracts2/test_call_ripemd160_4.py b/tests/ported_static/stPreCompiledContracts2/test_call_ripemd160_4.py index e79a9da0ad0..ef89dddca53 100644 --- a/tests/ported_static/stPreCompiledContracts2/test_call_ripemd160_4.py +++ b/tests/ported_static/stPreCompiledContracts2/test_call_ripemd160_4.py @@ -46,6 +46,7 @@ def test_call_ripemd160_4( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { (MSTORE 0 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) [[ 2 ]] (CALL 720 3 0 0 32 0 32) [[ 0 ]] (MLOAD 0)} # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -71,7 +72,6 @@ def test_call_ripemd160_4( nonce=0, address=Address(0x93E74099C6B1CF5E73A1CDD021C6942F9A814D9B), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stPreCompiledContracts2/test_call_ripemd160_4_gas719.py b/tests/ported_static/stPreCompiledContracts2/test_call_ripemd160_4_gas719.py index 16ecb86e620..2a5f10f0b84 100644 --- a/tests/ported_static/stPreCompiledContracts2/test_call_ripemd160_4_gas719.py +++ b/tests/ported_static/stPreCompiledContracts2/test_call_ripemd160_4_gas719.py @@ -46,6 +46,7 @@ def test_call_ripemd160_4_gas719( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { (MSTORE 0 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) [[ 2 ]] (CALL 719 3 0 0 32 0 32) [[ 0 ]] (MLOAD 0)} # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -71,7 +72,6 @@ def test_call_ripemd160_4_gas719( nonce=0, address=Address(0x061C5D0417A8B11331FAD2817630996289B925BF), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stPreCompiledContracts2/test_call_ripemd160_5.py b/tests/ported_static/stPreCompiledContracts2/test_call_ripemd160_5.py index 8ffcc9a86f7..42b92783dca 100644 --- a/tests/ported_static/stPreCompiledContracts2/test_call_ripemd160_5.py +++ b/tests/ported_static/stPreCompiledContracts2/test_call_ripemd160_5.py @@ -46,6 +46,7 @@ def test_call_ripemd160_5( gas_limit=100000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { (MSTORE 0 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) [[ 2 ]] (CALL 6000 3 0 0 1000000 0 32) [[ 0 ]] (MLOAD 0)} # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -71,7 +72,6 @@ def test_call_ripemd160_5( nonce=0, address=Address(0x51998B731842F87DAD142BFCC66310C3DC92C4FD), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stPreCompiledContracts2/test_call_sha256_0.py b/tests/ported_static/stPreCompiledContracts2/test_call_sha256_0.py index e48a7f5ab82..9e87cccdb89 100644 --- a/tests/ported_static/stPreCompiledContracts2/test_call_sha256_0.py +++ b/tests/ported_static/stPreCompiledContracts2/test_call_sha256_0.py @@ -46,6 +46,7 @@ def test_call_sha256_0( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: hex # 0x600160005260206000602060006000600260fff1600051600055 target = pre.deploy_contract( # noqa: F841 @@ -64,7 +65,6 @@ def test_call_sha256_0( nonce=0, address=Address(0xDCDDAC785B7920159CF9AA510ECD630640710567), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stPreCompiledContracts2/test_call_sha256_1.py b/tests/ported_static/stPreCompiledContracts2/test_call_sha256_1.py index d0c8134fba3..c36e97e91eb 100644 --- a/tests/ported_static/stPreCompiledContracts2/test_call_sha256_1.py +++ b/tests/ported_static/stPreCompiledContracts2/test_call_sha256_1.py @@ -46,6 +46,7 @@ def test_call_sha256_1( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { [[ 2 ]] (CALL 500 2 0 0 0 0 32) [[ 0 ]] (MLOAD 0)} target = pre.deploy_contract( # noqa: F841 @@ -67,7 +68,6 @@ def test_call_sha256_1( nonce=0, address=Address(0x1E79F0FD2BB702C9FD72905DA2A5B109025FA4A6), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stPreCompiledContracts2/test_call_sha256_1_nonzero_value.py b/tests/ported_static/stPreCompiledContracts2/test_call_sha256_1_nonzero_value.py index 54af9a04fc6..9acde20fa83 100644 --- a/tests/ported_static/stPreCompiledContracts2/test_call_sha256_1_nonzero_value.py +++ b/tests/ported_static/stPreCompiledContracts2/test_call_sha256_1_nonzero_value.py @@ -48,6 +48,7 @@ def test_call_sha256_1_nonzero_value( gas_limit=100000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { [[ 2 ]] (CALL 200000 2 0x13 0 0 0 32) [[ 0 ]] (MLOAD 0)} target = pre.deploy_contract( # noqa: F841 @@ -69,7 +70,6 @@ def test_call_sha256_1_nonzero_value( nonce=0, address=Address(0x39BAF944BD1B21E643D8D207A7073EE34A5D2116), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stPreCompiledContracts2/test_call_sha256_2.py b/tests/ported_static/stPreCompiledContracts2/test_call_sha256_2.py index d3e7fdf33eb..e4fb44b8a0a 100644 --- a/tests/ported_static/stPreCompiledContracts2/test_call_sha256_2.py +++ b/tests/ported_static/stPreCompiledContracts2/test_call_sha256_2.py @@ -46,6 +46,7 @@ def test_call_sha256_2( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { (MSTORE 5 0xf34578907f) [[ 2 ]] (CALL 500 2 0 0 37 0 32) [[ 0 ]] (MLOAD 0)} # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -68,7 +69,6 @@ def test_call_sha256_2( nonce=0, address=Address(0x2558C91E1CA37007E96544E37E5348C5C209AE3D), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stPreCompiledContracts2/test_call_sha256_3.py b/tests/ported_static/stPreCompiledContracts2/test_call_sha256_3.py index e0d303b5831..0a8e95a99c9 100644 --- a/tests/ported_static/stPreCompiledContracts2/test_call_sha256_3.py +++ b/tests/ported_static/stPreCompiledContracts2/test_call_sha256_3.py @@ -46,6 +46,7 @@ def test_call_sha256_3( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { (MSTORE 0 0xf34578907f) [[ 2 ]] (CALL 500 2 0 0 37 0 32) [[ 0 ]] (MLOAD 0)} # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -68,7 +69,6 @@ def test_call_sha256_3( nonce=0, address=Address(0x5EF7A23F9BAEA93BD729FD89FDCE63578C13A01E), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stPreCompiledContracts2/test_call_sha256_3_postfix0.py b/tests/ported_static/stPreCompiledContracts2/test_call_sha256_3_postfix0.py index b6856ba0ee1..8874981dc47 100644 --- a/tests/ported_static/stPreCompiledContracts2/test_call_sha256_3_postfix0.py +++ b/tests/ported_static/stPreCompiledContracts2/test_call_sha256_3_postfix0.py @@ -46,6 +46,7 @@ def test_call_sha256_3_postfix0( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { (MSTORE 0 0xf34578907f00) [[ 2 ]] (CALL 500 2 0 0 37 0 32) [[ 0 ]] (MLOAD 0)} # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -68,7 +69,6 @@ def test_call_sha256_3_postfix0( nonce=0, address=Address(0xDB90D5CD1BD42CE94A38B9D293AC7A1BE96ADEF9), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stPreCompiledContracts2/test_call_sha256_3_prefix0.py b/tests/ported_static/stPreCompiledContracts2/test_call_sha256_3_prefix0.py index 35a0d74e6eb..23809f4456a 100644 --- a/tests/ported_static/stPreCompiledContracts2/test_call_sha256_3_prefix0.py +++ b/tests/ported_static/stPreCompiledContracts2/test_call_sha256_3_prefix0.py @@ -46,6 +46,7 @@ def test_call_sha256_3_prefix0( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { (MSTORE 0 0x00f34578907f) [[ 2 ]] (CALL 500 2 0 0 37 0 32) [[ 0 ]] (MLOAD 0)} # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -68,7 +69,6 @@ def test_call_sha256_3_prefix0( nonce=0, address=Address(0x5D4B89A232555BC139AA244672611EDF28D276C7), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stPreCompiledContracts2/test_call_sha256_4.py b/tests/ported_static/stPreCompiledContracts2/test_call_sha256_4.py index a37438985fb..ec364d74c5c 100644 --- a/tests/ported_static/stPreCompiledContracts2/test_call_sha256_4.py +++ b/tests/ported_static/stPreCompiledContracts2/test_call_sha256_4.py @@ -46,6 +46,7 @@ def test_call_sha256_4( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { (MSTORE 0 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) [[ 2 ]] (CALL 100 2 0 0 32 0 32) [[ 0 ]] (MLOAD 0)} # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -71,7 +72,6 @@ def test_call_sha256_4( nonce=0, address=Address(0x6EAF78B8968E1AD784F281CC9FFC2ED8BDB61FBE), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stPreCompiledContracts2/test_call_sha256_4_gas99.py b/tests/ported_static/stPreCompiledContracts2/test_call_sha256_4_gas99.py index c1108346f3f..fa8d6d5dbde 100644 --- a/tests/ported_static/stPreCompiledContracts2/test_call_sha256_4_gas99.py +++ b/tests/ported_static/stPreCompiledContracts2/test_call_sha256_4_gas99.py @@ -46,6 +46,7 @@ def test_call_sha256_4_gas99( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { (MSTORE 0 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) [[ 2 ]] (CALL 99 2 0 0 32 0 32) [[ 0 ]] (MLOAD 0)} # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -71,7 +72,6 @@ def test_call_sha256_4_gas99( nonce=0, address=Address(0x1B0415178117104203E61BE499A69BA4A5B2A3B9), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stPreCompiledContracts2/test_call_sha256_5.py b/tests/ported_static/stPreCompiledContracts2/test_call_sha256_5.py index 28c7a236582..20914f28990 100644 --- a/tests/ported_static/stPreCompiledContracts2/test_call_sha256_5.py +++ b/tests/ported_static/stPreCompiledContracts2/test_call_sha256_5.py @@ -46,6 +46,7 @@ def test_call_sha256_5( gas_limit=100000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { (MSTORE 0 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) [[ 2 ]] (CALL 600 2 0 0 1000000 0 32) [[ 0 ]] (MLOAD 0)} # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -71,7 +72,6 @@ def test_call_sha256_5( nonce=0, address=Address(0x66088F99C73AE9E87363561B19C69011205344D0), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stPreCompiledContracts2/test_callcode_ecrecover0.py b/tests/ported_static/stPreCompiledContracts2/test_callcode_ecrecover0.py index 3cff4226691..b80fc3a6fa8 100644 --- a/tests/ported_static/stPreCompiledContracts2/test_callcode_ecrecover0.py +++ b/tests/ported_static/stPreCompiledContracts2/test_callcode_ecrecover0.py @@ -47,6 +47,7 @@ def test_callcode_ecrecover0( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { (MSTORE 0 0x18c547e4f7b0f325ad1e56f57e26c745b09a3e503d86e00e5255ff7f715d3d1c) (MSTORE 32 28) (MSTORE 64 0x73b1693892219d736caba55bdb67216e485557ea6b6af75f37096c9aa6a5a75f) (MSTORE 96 0xeeb940b1d03b21e36b0e47e79769f095fe2ab855bd91e3a38756b7d75a9c4549) [[ 2 ]] (CALLCODE 300000 1 0 0 128 128 32) [[ 0 ]] (MOD (MLOAD 128) (EXP 2 160)) [[ 1 ]] (EQ (ORIGIN) (SLOAD 0)) } # noqa: E501 contract_0 = pre.deploy_contract( # noqa: F841 @@ -84,7 +85,6 @@ def test_callcode_ecrecover0( nonce=0, address=Address(0x095E7BAEA6A6C7C4C2DFEB977EFAC326AF552D87), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, @@ -94,14 +94,6 @@ def test_callcode_ecrecover0( value=0x186A0, ) - post = { - contract_0: Account( - storage={ - 0: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, - 1: 1, - 2: 1, - }, - ), - } + post = {contract_0: Account(storage={0: sender, 1: 1, 2: 1})} state_test(env=env, pre=pre, post=post, tx=tx) diff --git a/tests/ported_static/stPreCompiledContracts2/test_callcode_ecrecover0_0input.py b/tests/ported_static/stPreCompiledContracts2/test_callcode_ecrecover0_0input.py index d288553b762..0d540cb1ae4 100644 --- a/tests/ported_static/stPreCompiledContracts2/test_callcode_ecrecover0_0input.py +++ b/tests/ported_static/stPreCompiledContracts2/test_callcode_ecrecover0_0input.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcode_ecrecover0_0input( ) -> None: """Test_callcode_ecrecover0_0input.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -69,9 +66,7 @@ def test_callcode_ecrecover0_0input( + Op.STOP, balance=0x1312D00, nonce=0, - address=Address(0xD87AADFE05DF880BC4C678F75154215CC6692D81), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stPreCompiledContracts2/test_callcode_ecrecover0_complete_return_value.py b/tests/ported_static/stPreCompiledContracts2/test_callcode_ecrecover0_complete_return_value.py index d062000bb96..41cbfc0a954 100644 --- a/tests/ported_static/stPreCompiledContracts2/test_callcode_ecrecover0_complete_return_value.py +++ b/tests/ported_static/stPreCompiledContracts2/test_callcode_ecrecover0_complete_return_value.py @@ -49,6 +49,7 @@ def test_callcode_ecrecover0_complete_return_value( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { (MSTORE 0 0x18c547e4f7b0f325ad1e56f57e26c745b09a3e503d86e00e5255ff7f715d3d1c) (MSTORE 32 28) (MSTORE 64 0x73b1693892219d736caba55bdb67216e485557ea6b6af75f37096c9aa6a5a75f) (MSTORE 96 0xeeb940b1d03b21e36b0e47e79769f095fe2ab855bd91e3a38756b7d75a9c4549) [[ 2 ]] (CALLCODE 3000 1 0 0 128 128 32) [[ 0 ]] (MLOAD 128) } # noqa: E501 contract_0 = pre.deploy_contract( # noqa: F841 @@ -83,7 +84,6 @@ def test_callcode_ecrecover0_complete_return_value( nonce=0, address=Address(0x095E7BAEA6A6C7C4C2DFEB977EFAC326AF552D87), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, @@ -93,13 +93,6 @@ def test_callcode_ecrecover0_complete_return_value( value=0x186A0, ) - post = { - contract_0: Account( - storage={ - 0: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, - 2: 1, - }, - ), - } + post = {contract_0: Account(storage={0: sender, 2: 1})} state_test(env=env, pre=pre, post=post, tx=tx) diff --git a/tests/ported_static/stPreCompiledContracts2/test_callcode_ecrecover0_gas2999.py b/tests/ported_static/stPreCompiledContracts2/test_callcode_ecrecover0_gas2999.py index 03787464191..8dc74be0591 100644 --- a/tests/ported_static/stPreCompiledContracts2/test_callcode_ecrecover0_gas2999.py +++ b/tests/ported_static/stPreCompiledContracts2/test_callcode_ecrecover0_gas2999.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcode_ecrecover0_gas2999( ) -> None: """Test_callcode_ecrecover0_gas2999.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -83,9 +80,7 @@ def test_callcode_ecrecover0_gas2999( + Op.STOP, balance=0x1312D00, nonce=0, - address=Address(0xE70DCF2A2964DB146B6CB171326705F77B924943), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stPreCompiledContracts2/test_callcode_ecrecover0_gas3000.py b/tests/ported_static/stPreCompiledContracts2/test_callcode_ecrecover0_gas3000.py index 026596ffb8a..d5d73e659d1 100644 --- a/tests/ported_static/stPreCompiledContracts2/test_callcode_ecrecover0_gas3000.py +++ b/tests/ported_static/stPreCompiledContracts2/test_callcode_ecrecover0_gas3000.py @@ -49,6 +49,7 @@ def test_callcode_ecrecover0_gas3000( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { (MSTORE 0 0x18c547e4f7b0f325ad1e56f57e26c745b09a3e503d86e00e5255ff7f715d3d1c) (MSTORE 32 28) (MSTORE 64 0x73b1693892219d736caba55bdb67216e485557ea6b6af75f37096c9aa6a5a75f) (MSTORE 96 0xeeb940b1d03b21e36b0e47e79769f095fe2ab855bd91e3a38756b7d75a9c4549) [[ 2 ]] (CALLCODE 3000 1 0 0 128 128 32) [[ 0 ]] (MOD (MLOAD 128) (EXP 2 160)) [[ 1 ]] (EQ (ORIGIN) (SLOAD 0)) } # noqa: E501 contract_0 = pre.deploy_contract( # noqa: F841 @@ -86,7 +87,6 @@ def test_callcode_ecrecover0_gas3000( nonce=0, address=Address(0x095E7BAEA6A6C7C4C2DFEB977EFAC326AF552D87), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, @@ -96,14 +96,6 @@ def test_callcode_ecrecover0_gas3000( value=0x186A0, ) - post = { - contract_0: Account( - storage={ - 0: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, - 1: 1, - 2: 1, - }, - ), - } + post = {contract_0: Account(storage={0: sender, 1: 1, 2: 1})} state_test(env=env, pre=pre, post=post, tx=tx) diff --git a/tests/ported_static/stPreCompiledContracts2/test_callcode_ecrecover0_no_gas.py b/tests/ported_static/stPreCompiledContracts2/test_callcode_ecrecover0_no_gas.py index 2dcd296562b..3c520af25f1 100644 --- a/tests/ported_static/stPreCompiledContracts2/test_callcode_ecrecover0_no_gas.py +++ b/tests/ported_static/stPreCompiledContracts2/test_callcode_ecrecover0_no_gas.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcode_ecrecover0_no_gas( ) -> None: """Test_callcode_ecrecover0_no_gas.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -84,9 +81,7 @@ def test_callcode_ecrecover0_no_gas( storage={0: 12, 1: 12, 2: 12}, balance=0x1312D00, nonce=0, - address=Address(0x642B4BC6FE2E1633CAAF1AD06E473299ADB5CFD2), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stPreCompiledContracts2/test_callcode_ecrecover0_overlapping_input_output.py b/tests/ported_static/stPreCompiledContracts2/test_callcode_ecrecover0_overlapping_input_output.py index 84bdc0e22b9..86850680e68 100644 --- a/tests/ported_static/stPreCompiledContracts2/test_callcode_ecrecover0_overlapping_input_output.py +++ b/tests/ported_static/stPreCompiledContracts2/test_callcode_ecrecover0_overlapping_input_output.py @@ -49,6 +49,7 @@ def test_callcode_ecrecover0_overlapping_input_output( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { (MSTORE 0 0x18c547e4f7b0f325ad1e56f57e26c745b09a3e503d86e00e5255ff7f715d3d1c) (MSTORE 32 28) (MSTORE 64 0x73b1693892219d736caba55bdb67216e485557ea6b6af75f37096c9aa6a5a75f) (MSTORE 96 0xeeb940b1d03b21e36b0e47e79769f095fe2ab855bd91e3a38756b7d75a9c4549) [[ 2 ]] (CALLCODE 300000 1 0 0 128 64 32) [[ 0 ]] (MOD (MLOAD 64) (EXP 2 160)) [[ 1 ]] (EQ (ORIGIN) (SLOAD 0)) } # noqa: E501 contract_0 = pre.deploy_contract( # noqa: F841 @@ -86,7 +87,6 @@ def test_callcode_ecrecover0_overlapping_input_output( nonce=0, address=Address(0x095E7BAEA6A6C7C4C2DFEB977EFAC326AF552D87), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, @@ -96,14 +96,6 @@ def test_callcode_ecrecover0_overlapping_input_output( value=0x186A0, ) - post = { - contract_0: Account( - storage={ - 0: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, - 1: 1, - 2: 1, - }, - ), - } + post = {contract_0: Account(storage={0: sender, 1: 1, 2: 1})} state_test(env=env, pre=pre, post=post, tx=tx) diff --git a/tests/ported_static/stPreCompiledContracts2/test_callcode_ecrecover1.py b/tests/ported_static/stPreCompiledContracts2/test_callcode_ecrecover1.py index fdd07356ca9..e69d97a4675 100644 --- a/tests/ported_static/stPreCompiledContracts2/test_callcode_ecrecover1.py +++ b/tests/ported_static/stPreCompiledContracts2/test_callcode_ecrecover1.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_callcode_ecrecover1( ) -> None: """Test_callcode_ecrecover1.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -81,9 +78,7 @@ def test_callcode_ecrecover1( + Op.STOP, balance=0x1312D00, nonce=0, - address=Address(0xC305C830833CCB72817F7B8B8D9C6D5645FC9E5F), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stPreCompiledContracts2/test_callcode_ecrecover2.py b/tests/ported_static/stPreCompiledContracts2/test_callcode_ecrecover2.py index e576df9ffed..750675ab593 100644 --- a/tests/ported_static/stPreCompiledContracts2/test_callcode_ecrecover2.py +++ b/tests/ported_static/stPreCompiledContracts2/test_callcode_ecrecover2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_callcode_ecrecover2( ) -> None: """Test_callcode_ecrecover2.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -81,9 +78,7 @@ def test_callcode_ecrecover2( + Op.STOP, balance=0x1312D00, nonce=0, - address=Address(0x82FED9E1D9833BFED4D0DFAB03D1E35DBFFA4243), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stPreCompiledContracts2/test_callcode_ecrecover3.py b/tests/ported_static/stPreCompiledContracts2/test_callcode_ecrecover3.py index 6eb21a9f9d8..7281641e7aa 100644 --- a/tests/ported_static/stPreCompiledContracts2/test_callcode_ecrecover3.py +++ b/tests/ported_static/stPreCompiledContracts2/test_callcode_ecrecover3.py @@ -46,6 +46,7 @@ def test_callcode_ecrecover3( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { (MSTORE 0 0x2f380a2dea7e778d81affc2443403b8fe4644db442ae4862ff5bb3732829cdb9) (MSTORE 32 27) (MSTORE 64 0x6b65ccb0558806e9b097f27a396d08f964e37b8b7af6ceeb516ff86739fbea0a) (MSTORE 96 0x37cbc8d883e129a4b1ef9d5f1df53c4f21a3ef147cf2a50a4ede0eb06ce092d4) [[ 2 ]] (CALLCODE 100000 1 0 0 128 128 32) [[ 0 ]] (MOD (MLOAD 128) (EXP 2 160)) [[ 1 ]] (EQ (ORIGIN) (SLOAD 0)) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -83,7 +84,6 @@ def test_callcode_ecrecover3( nonce=0, address=Address(0xFBEDF77EDB387C8E6D9B016F522D38201F4DE408), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stPreCompiledContracts2/test_callcode_ecrecover80.py b/tests/ported_static/stPreCompiledContracts2/test_callcode_ecrecover80.py index 26f83f07b5b..b65664bed6a 100644 --- a/tests/ported_static/stPreCompiledContracts2/test_callcode_ecrecover80.py +++ b/tests/ported_static/stPreCompiledContracts2/test_callcode_ecrecover80.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_callcode_ecrecover80( ) -> None: """Test_callcode_ecrecover80.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -81,9 +78,7 @@ def test_callcode_ecrecover80( + Op.STOP, balance=0x1312D00, nonce=0, - address=Address(0xD5C4EA8FAA1028D8D10AA6BF9133E678D695B349), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stPreCompiledContracts2/test_callcode_ecrecover_h_prefixed0.py b/tests/ported_static/stPreCompiledContracts2/test_callcode_ecrecover_h_prefixed0.py index 34ff8b29e37..5af67bca2ee 100644 --- a/tests/ported_static/stPreCompiledContracts2/test_callcode_ecrecover_h_prefixed0.py +++ b/tests/ported_static/stPreCompiledContracts2/test_callcode_ecrecover_h_prefixed0.py @@ -48,6 +48,7 @@ def test_callcode_ecrecover_h_prefixed0( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { (MSTORE 0 0x00c547e4f7b0f325ad1e56f57e26c745b09a3e503d86e00e5255ff7f715d3d1c) (MSTORE 32 28) (MSTORE 64 0x73b1693892219d736caba55bdb67216e485557ea6b6af75f37096c9aa6a5a75f) (MSTORE 96 0xeeb940b1d03b21e36b0e47e79769f095fe2ab855bd91e3a38756b7d75a9c4549) [[ 2 ]] (CALLCODE 300000 1 0 0 128 128 32) [[ 0 ]] (MOD (MLOAD 128) (EXP 2 160)) [[ 1 ]] (EQ (ORIGIN) (SLOAD 0)) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -85,7 +86,6 @@ def test_callcode_ecrecover_h_prefixed0( nonce=0, address=Address(0x0E408D340F5CC7CB2602AD82D377DC8D849480BC), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stPreCompiledContracts2/test_callcode_ecrecover_r_prefixed0.py b/tests/ported_static/stPreCompiledContracts2/test_callcode_ecrecover_r_prefixed0.py index 201ba47f434..4cf23a30a26 100644 --- a/tests/ported_static/stPreCompiledContracts2/test_callcode_ecrecover_r_prefixed0.py +++ b/tests/ported_static/stPreCompiledContracts2/test_callcode_ecrecover_r_prefixed0.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcode_ecrecover_r_prefixed0( ) -> None: """Test_callcode_ecrecover_r_prefixed0.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -83,9 +80,7 @@ def test_callcode_ecrecover_r_prefixed0( + Op.STOP, balance=0x1312D00, nonce=0, - address=Address(0xB5EF5E7A96B20D5519B730BCA2E026BD49A95F3E), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stPreCompiledContracts2/test_callcode_ecrecover_s_prefixed0.py b/tests/ported_static/stPreCompiledContracts2/test_callcode_ecrecover_s_prefixed0.py index 6d0887023b3..db3f82c5169 100644 --- a/tests/ported_static/stPreCompiledContracts2/test_callcode_ecrecover_s_prefixed0.py +++ b/tests/ported_static/stPreCompiledContracts2/test_callcode_ecrecover_s_prefixed0.py @@ -48,6 +48,7 @@ def test_callcode_ecrecover_s_prefixed0( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { (MSTORE 0 0x18c547e4f7b0f325ad1e56f57e26c745b09a3e503d86e00e5255ff7f715d3d1c) (MSTORE 32 28) (MSTORE 64 0x73b1693892219d736caba55bdb67216e485557ea6b6af75f37096c9aa6a5a75f) (MSTORE 96 0x00b940b1d03b21e36b0e47e79769f095fe2ab855bd91e3a38756b7d75a9c4549) [[ 2 ]] (CALLCODE 300000 1 0 0 128 128 32) [[ 0 ]] (MOD (MLOAD 128) (EXP 2 160)) [[ 1 ]] (EQ (ORIGIN) (SLOAD 0)) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -85,7 +86,6 @@ def test_callcode_ecrecover_s_prefixed0( nonce=0, address=Address(0xEA150F7A83DC3C344EFB50FCA8FD1526B5D48935), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stPreCompiledContracts2/test_callcode_ecrecover_v_prefixed0.py b/tests/ported_static/stPreCompiledContracts2/test_callcode_ecrecover_v_prefixed0.py index c006c842443..74faea77487 100644 --- a/tests/ported_static/stPreCompiledContracts2/test_callcode_ecrecover_v_prefixed0.py +++ b/tests/ported_static/stPreCompiledContracts2/test_callcode_ecrecover_v_prefixed0.py @@ -49,6 +49,7 @@ def test_callcode_ecrecover_v_prefixed0( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { (MSTORE 0 0x18c547e4f7b0f325ad1e56f57e26c745b09a3e503d86e00e5255ff7f715d3d1c) (MSTORE 32 0x001c) (MSTORE 64 0x73b1693892219d736caba55bdb67216e485557ea6b6af75f37096c9aa6a5a75f) (MSTORE 96 0xeeb940b1d03b21e36b0e47e79769f095fe2ab855bd91e3a38756b7d75a9c4549) [[ 2 ]] (CALLCODE 300000 1 0 0 128 128 32) [[ 0 ]] (MOD (MLOAD 128) (EXP 2 160)) [[ 1 ]] (EQ (ORIGIN) (SLOAD 0)) } # noqa: E501 contract_0 = pre.deploy_contract( # noqa: F841 @@ -86,7 +87,6 @@ def test_callcode_ecrecover_v_prefixed0( nonce=0, address=Address(0x095E7BAEA6A6C7C4C2DFEB977EFAC326AF552D87), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, @@ -96,14 +96,6 @@ def test_callcode_ecrecover_v_prefixed0( value=0x186A0, ) - post = { - contract_0: Account( - storage={ - 0: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, - 1: 1, - 2: 1, - }, - ), - } + post = {contract_0: Account(storage={0: sender, 1: 1, 2: 1})} state_test(env=env, pre=pre, post=post, tx=tx) diff --git a/tests/ported_static/stPreCompiledContracts2/test_callcode_ecrecover_v_prefixedf0.py b/tests/ported_static/stPreCompiledContracts2/test_callcode_ecrecover_v_prefixedf0.py index 6b5113c3d54..faa4869ed6c 100644 --- a/tests/ported_static/stPreCompiledContracts2/test_callcode_ecrecover_v_prefixedf0.py +++ b/tests/ported_static/stPreCompiledContracts2/test_callcode_ecrecover_v_prefixedf0.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -57,9 +56,7 @@ def test_callcode_ecrecover_v_prefixedf0( ) -> None: """Test_callcode_ecrecover_v_prefixedf0.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -105,9 +102,7 @@ def test_callcode_ecrecover_v_prefixedf0( + Op.STOP, balance=0x1312D00, nonce=0, - address=Address(0xEBCDD28B5479DBDE3E8317EBAC82A6E019E256E4), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx_data = [ Hash(0xF01C), diff --git a/tests/ported_static/stPreCompiledContracts2/test_callcode_ripemd160_0.py b/tests/ported_static/stPreCompiledContracts2/test_callcode_ripemd160_0.py index 9a75d531f11..68d973a0d35 100644 --- a/tests/ported_static/stPreCompiledContracts2/test_callcode_ripemd160_0.py +++ b/tests/ported_static/stPreCompiledContracts2/test_callcode_ripemd160_0.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_callcode_ripemd160_0( ) -> None: """Test_callcode_ripemd160_0.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -62,9 +59,7 @@ def test_callcode_ripemd160_0( + Op.SSTORE(key=0x0, value=Op.MLOAD(offset=0x0)), balance=0x1312D00, nonce=0, - address=Address(0x21C1AD575033F5EFBB9D40B78C24B18809902665), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stPreCompiledContracts2/test_callcode_ripemd160_1.py b/tests/ported_static/stPreCompiledContracts2/test_callcode_ripemd160_1.py index 195fce970ba..e4d89acbc75 100644 --- a/tests/ported_static/stPreCompiledContracts2/test_callcode_ripemd160_1.py +++ b/tests/ported_static/stPreCompiledContracts2/test_callcode_ripemd160_1.py @@ -46,6 +46,7 @@ def test_callcode_ripemd160_1( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { [[ 2 ]] (CALLCODE 600 3 0 0 0 0 32) [[ 0 ]] (MLOAD 0)} target = pre.deploy_contract( # noqa: F841 @@ -67,7 +68,6 @@ def test_callcode_ripemd160_1( nonce=0, address=Address(0xC2568EE355F0F71AA13FA54F6B01882D79A078C4), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stPreCompiledContracts2/test_callcode_ripemd160_2.py b/tests/ported_static/stPreCompiledContracts2/test_callcode_ripemd160_2.py index 1d6efad3a6b..3eb132c2ce1 100644 --- a/tests/ported_static/stPreCompiledContracts2/test_callcode_ripemd160_2.py +++ b/tests/ported_static/stPreCompiledContracts2/test_callcode_ripemd160_2.py @@ -46,6 +46,7 @@ def test_callcode_ripemd160_2( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { (MSTORE 5 0xf34578907f) [[ 2 ]] (CALLCODE 6000 3 0 0 37 0 32) [[ 0 ]] (MLOAD 0)} # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -68,7 +69,6 @@ def test_callcode_ripemd160_2( nonce=0, address=Address(0xB5505A4E16C6DC9A8F57A35F11D7A11FE0C62652), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stPreCompiledContracts2/test_callcode_ripemd160_3.py b/tests/ported_static/stPreCompiledContracts2/test_callcode_ripemd160_3.py index 2d4cf574fa0..dfb5918c38a 100644 --- a/tests/ported_static/stPreCompiledContracts2/test_callcode_ripemd160_3.py +++ b/tests/ported_static/stPreCompiledContracts2/test_callcode_ripemd160_3.py @@ -46,6 +46,7 @@ def test_callcode_ripemd160_3( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { (MSTORE 0 0xf34578907f) [[ 2 ]] (CALLCODE 6000 3 0 0 37 0 32) [[ 0 ]] (MLOAD 0)} # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -68,7 +69,6 @@ def test_callcode_ripemd160_3( nonce=0, address=Address(0x8976B14FE4CDE9954494EC41AA275F87E2E13D0A), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stPreCompiledContracts2/test_callcode_ripemd160_3_postfixed0.py b/tests/ported_static/stPreCompiledContracts2/test_callcode_ripemd160_3_postfixed0.py index e9069da27ca..c9ae41cdee4 100644 --- a/tests/ported_static/stPreCompiledContracts2/test_callcode_ripemd160_3_postfixed0.py +++ b/tests/ported_static/stPreCompiledContracts2/test_callcode_ripemd160_3_postfixed0.py @@ -48,6 +48,7 @@ def test_callcode_ripemd160_3_postfixed0( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { (MSTORE 0 0xf34578907f00) [[ 2 ]] (CALLCODE 6000 3 0 0 37 0 32) [[ 0 ]] (MLOAD 0)} # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -70,7 +71,6 @@ def test_callcode_ripemd160_3_postfixed0( nonce=0, address=Address(0x4AE7F0A2D9EBEDE8E424C882C869DA67AC881DEB), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stPreCompiledContracts2/test_callcode_ripemd160_3_prefixed0.py b/tests/ported_static/stPreCompiledContracts2/test_callcode_ripemd160_3_prefixed0.py index 604a7271a32..2880463f03b 100644 --- a/tests/ported_static/stPreCompiledContracts2/test_callcode_ripemd160_3_prefixed0.py +++ b/tests/ported_static/stPreCompiledContracts2/test_callcode_ripemd160_3_prefixed0.py @@ -48,6 +48,7 @@ def test_callcode_ripemd160_3_prefixed0( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { (MSTORE 0 0x00f34578907f) [[ 2 ]] (CALLCODE 6000 3 0 0 37 0 32) [[ 0 ]] (MLOAD 0)} # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -70,7 +71,6 @@ def test_callcode_ripemd160_3_prefixed0( nonce=0, address=Address(0x063102841B53CEA1BE51EBA298D1B86B90F7C071), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stPreCompiledContracts2/test_callcode_ripemd160_4.py b/tests/ported_static/stPreCompiledContracts2/test_callcode_ripemd160_4.py index 3f65d961fa2..1a1f003383b 100644 --- a/tests/ported_static/stPreCompiledContracts2/test_callcode_ripemd160_4.py +++ b/tests/ported_static/stPreCompiledContracts2/test_callcode_ripemd160_4.py @@ -46,6 +46,7 @@ def test_callcode_ripemd160_4( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { (MSTORE 0 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) [[ 2 ]] (CALLCODE 720 3 0 0 32 0 32) [[ 0 ]] (MLOAD 0)} # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -71,7 +72,6 @@ def test_callcode_ripemd160_4( nonce=0, address=Address(0x6E9A87C7B4F3D629DF2F099546D9250F1CCD92AF), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stPreCompiledContracts2/test_callcode_ripemd160_4_gas719.py b/tests/ported_static/stPreCompiledContracts2/test_callcode_ripemd160_4_gas719.py index 1a5d86a9a98..ccfc5a27418 100644 --- a/tests/ported_static/stPreCompiledContracts2/test_callcode_ripemd160_4_gas719.py +++ b/tests/ported_static/stPreCompiledContracts2/test_callcode_ripemd160_4_gas719.py @@ -48,6 +48,7 @@ def test_callcode_ripemd160_4_gas719( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { (MSTORE 0 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) [[ 2 ]] (CALLCODE 719 3 0 0 32 0 32) [[ 0 ]] (MLOAD 0)} # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -73,7 +74,6 @@ def test_callcode_ripemd160_4_gas719( nonce=0, address=Address(0xE54144E08B2FAA0FB551D5DF635711386FD3E8F2), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stPreCompiledContracts2/test_callcode_ripemd160_5.py b/tests/ported_static/stPreCompiledContracts2/test_callcode_ripemd160_5.py index b4bf188b266..4c0721cfd12 100644 --- a/tests/ported_static/stPreCompiledContracts2/test_callcode_ripemd160_5.py +++ b/tests/ported_static/stPreCompiledContracts2/test_callcode_ripemd160_5.py @@ -46,6 +46,7 @@ def test_callcode_ripemd160_5( gas_limit=100000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { (MSTORE 0 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) [[ 2 ]] (CALLCODE 6000 3 0 0 1000000 0 32) [[ 0 ]] (MLOAD 0)} # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -71,7 +72,6 @@ def test_callcode_ripemd160_5( nonce=0, address=Address(0x445F6977E8026D56E8B9A36B4CE7591EF0B9493A), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stPreCompiledContracts2/test_callcode_sha256_0.py b/tests/ported_static/stPreCompiledContracts2/test_callcode_sha256_0.py index 1794e7cf29d..b1a4cf62997 100644 --- a/tests/ported_static/stPreCompiledContracts2/test_callcode_sha256_0.py +++ b/tests/ported_static/stPreCompiledContracts2/test_callcode_sha256_0.py @@ -46,6 +46,7 @@ def test_callcode_sha256_0( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: hex # 0x600160005260206000602060006000600260fff2600051600055 target = pre.deploy_contract( # noqa: F841 @@ -64,7 +65,6 @@ def test_callcode_sha256_0( nonce=0, address=Address(0xFAC135CDECD64B72CDA12C2B4764E9D4E474DE3E), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stPreCompiledContracts2/test_callcode_sha256_1.py b/tests/ported_static/stPreCompiledContracts2/test_callcode_sha256_1.py index 6c2a8829cd5..3aca9583c81 100644 --- a/tests/ported_static/stPreCompiledContracts2/test_callcode_sha256_1.py +++ b/tests/ported_static/stPreCompiledContracts2/test_callcode_sha256_1.py @@ -46,6 +46,7 @@ def test_callcode_sha256_1( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { [[ 2 ]] (CALLCODE 500 2 0 0 0 0 32) [[ 0 ]] (MLOAD 0)} target = pre.deploy_contract( # noqa: F841 @@ -67,7 +68,6 @@ def test_callcode_sha256_1( nonce=0, address=Address(0xC4009BC3B312CE413BFB8734800AA7B54261856D), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stPreCompiledContracts2/test_callcode_sha256_1_nonzero_value.py b/tests/ported_static/stPreCompiledContracts2/test_callcode_sha256_1_nonzero_value.py index 7236752cccf..88e216e0abd 100644 --- a/tests/ported_static/stPreCompiledContracts2/test_callcode_sha256_1_nonzero_value.py +++ b/tests/ported_static/stPreCompiledContracts2/test_callcode_sha256_1_nonzero_value.py @@ -48,6 +48,7 @@ def test_callcode_sha256_1_nonzero_value( gas_limit=100000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { [[ 2 ]] (CALLCODE 200000 2 0x13 0 0 0 32) [[ 0 ]] (MLOAD 0)} target = pre.deploy_contract( # noqa: F841 @@ -69,7 +70,6 @@ def test_callcode_sha256_1_nonzero_value( nonce=0, address=Address(0xA32D9AC4A5BA456F9E539AC5C756230EEBC72F85), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stPreCompiledContracts2/test_callcode_sha256_2.py b/tests/ported_static/stPreCompiledContracts2/test_callcode_sha256_2.py index a44f805e36b..83fb69530c9 100644 --- a/tests/ported_static/stPreCompiledContracts2/test_callcode_sha256_2.py +++ b/tests/ported_static/stPreCompiledContracts2/test_callcode_sha256_2.py @@ -46,6 +46,7 @@ def test_callcode_sha256_2( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { (MSTORE 5 0xf34578907f) [[ 2 ]] (CALLCODE 500 2 0 0 37 0 32) [[ 0 ]] (MLOAD 0)} # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -68,7 +69,6 @@ def test_callcode_sha256_2( nonce=0, address=Address(0x49EDFD0547A55D03FFB882894166FB4E19BCE699), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stPreCompiledContracts2/test_callcode_sha256_3.py b/tests/ported_static/stPreCompiledContracts2/test_callcode_sha256_3.py index 9c448ae8fca..79347e7dbfb 100644 --- a/tests/ported_static/stPreCompiledContracts2/test_callcode_sha256_3.py +++ b/tests/ported_static/stPreCompiledContracts2/test_callcode_sha256_3.py @@ -46,6 +46,7 @@ def test_callcode_sha256_3( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { (MSTORE 0 0xf34578907f) [[ 2 ]] (CALLCODE 500 2 0 0 37 0 32) [[ 0 ]] (MLOAD 0)} # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -68,7 +69,6 @@ def test_callcode_sha256_3( nonce=0, address=Address(0x66ADD49A7D6964132DEE6F9C01A7CE445976D7F1), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stPreCompiledContracts2/test_callcode_sha256_3_postfix0.py b/tests/ported_static/stPreCompiledContracts2/test_callcode_sha256_3_postfix0.py index 9ff3205b143..c924cc8ed2b 100644 --- a/tests/ported_static/stPreCompiledContracts2/test_callcode_sha256_3_postfix0.py +++ b/tests/ported_static/stPreCompiledContracts2/test_callcode_sha256_3_postfix0.py @@ -48,6 +48,7 @@ def test_callcode_sha256_3_postfix0( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { (MSTORE 0 0xf34578907f00) [[ 2 ]] (CALLCODE 500 2 0 0 37 0 32) [[ 0 ]] (MLOAD 0)} # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -70,7 +71,6 @@ def test_callcode_sha256_3_postfix0( nonce=0, address=Address(0x47623157953751C765B038FEA97F26122EE130CA), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stPreCompiledContracts2/test_callcode_sha256_3_prefix0.py b/tests/ported_static/stPreCompiledContracts2/test_callcode_sha256_3_prefix0.py index 41b0bdf16d5..b052e6d0650 100644 --- a/tests/ported_static/stPreCompiledContracts2/test_callcode_sha256_3_prefix0.py +++ b/tests/ported_static/stPreCompiledContracts2/test_callcode_sha256_3_prefix0.py @@ -48,6 +48,7 @@ def test_callcode_sha256_3_prefix0( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { (MSTORE 0 0x00f34578907f) [[ 2 ]] (CALLCODE 500 2 0 0 37 0 32) [[ 0 ]] (MLOAD 0)} # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -70,7 +71,6 @@ def test_callcode_sha256_3_prefix0( nonce=0, address=Address(0x350856CB8740C7A9F14DE1D4901111246CDBA0B5), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stPreCompiledContracts2/test_callcode_sha256_4.py b/tests/ported_static/stPreCompiledContracts2/test_callcode_sha256_4.py index 51af5b40fa1..d69405bd039 100644 --- a/tests/ported_static/stPreCompiledContracts2/test_callcode_sha256_4.py +++ b/tests/ported_static/stPreCompiledContracts2/test_callcode_sha256_4.py @@ -46,6 +46,7 @@ def test_callcode_sha256_4( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { (MSTORE 0 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) [[ 2 ]] (CALLCODE 100 2 0 0 32 0 32) [[ 0 ]] (MLOAD 0)} # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -71,7 +72,6 @@ def test_callcode_sha256_4( nonce=0, address=Address(0x081EB2E67904436211EEEF7B37055D5A08BF76B1), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stPreCompiledContracts2/test_callcode_sha256_4_gas99.py b/tests/ported_static/stPreCompiledContracts2/test_callcode_sha256_4_gas99.py index 75b33067338..07205685dff 100644 --- a/tests/ported_static/stPreCompiledContracts2/test_callcode_sha256_4_gas99.py +++ b/tests/ported_static/stPreCompiledContracts2/test_callcode_sha256_4_gas99.py @@ -46,6 +46,7 @@ def test_callcode_sha256_4_gas99( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { (MSTORE 0 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) [[ 2 ]] (CALLCODE 99 2 0 0 32 0 32) [[ 0 ]] (MLOAD 0)} # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -71,7 +72,6 @@ def test_callcode_sha256_4_gas99( nonce=0, address=Address(0xBDC43A81E62F216D623D3E91F1F5FE1E3730A068), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stPreCompiledContracts2/test_callcode_sha256_5.py b/tests/ported_static/stPreCompiledContracts2/test_callcode_sha256_5.py index d72b1fad837..9f4fb5580b6 100644 --- a/tests/ported_static/stPreCompiledContracts2/test_callcode_sha256_5.py +++ b/tests/ported_static/stPreCompiledContracts2/test_callcode_sha256_5.py @@ -46,6 +46,7 @@ def test_callcode_sha256_5( gas_limit=100000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { (MSTORE 0 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) [[ 2 ]] (CALLCODE 600 2 0 0 1000000 0 32) [[ 0 ]] (MLOAD 0)} # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -71,7 +72,6 @@ def test_callcode_sha256_5( nonce=0, address=Address(0x12D19AA9C20419BF0656FC7A93642F9CAFC744F4), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stPreCompiledContracts2/test_ecrecover_short_buff.py b/tests/ported_static/stPreCompiledContracts2/test_ecrecover_short_buff.py index 9acaa6fe2d2..cffcc678170 100644 --- a/tests/ported_static/stPreCompiledContracts2/test_ecrecover_short_buff.py +++ b/tests/ported_static/stPreCompiledContracts2/test_ecrecover_short_buff.py @@ -47,6 +47,7 @@ def test_ecrecover_short_buff( gas_limit=71794957647893862, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000, nonce=1) # Source: yul # berlin # { @@ -149,7 +150,6 @@ def test_ecrecover_short_buff( nonce=1, address=Address(0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000, nonce=1) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stPreCompiledContracts2/test_ecrecover_weird_v.py b/tests/ported_static/stPreCompiledContracts2/test_ecrecover_weird_v.py index 72509eae8ce..3a607960508 100644 --- a/tests/ported_static/stPreCompiledContracts2/test_ecrecover_weird_v.py +++ b/tests/ported_static/stPreCompiledContracts2/test_ecrecover_weird_v.py @@ -277,6 +277,7 @@ def test_ecrecover_weird_v( ) pre[coinbase] = Account(balance=0, nonce=1) + pre[sender] = Account(balance=0xDE0B6B3A7640000, nonce=1) # Source: yul # berlin # { @@ -315,7 +316,6 @@ def test_ecrecover_weird_v( nonce=1, address=Address(0x9121BB12ADE6BF12796E6007B21A204E05B1BD49), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000, nonce=1) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stPreCompiledContracts2/test_modexp_0_0_0_20500.py b/tests/ported_static/stPreCompiledContracts2/test_modexp_0_0_0_20500.py index 5b5164d4e35..59e3af2c647 100644 --- a/tests/ported_static/stPreCompiledContracts2/test_modexp_0_0_0_20500.py +++ b/tests/ported_static/stPreCompiledContracts2/test_modexp_0_0_0_20500.py @@ -95,6 +95,78 @@ def test_modexp_0_0_0_20500( pre[sender] = Account(balance=0xDE0B6B3A761FE12, nonce=1) # Source: hex + # 0x + coinbase = pre.deploy_contract( # noqa: F841 + code="", + balance=0x201EE, + nonce=0, + address=Address(0x3535353535353535353535353535353535353535), # noqa: E501 + ) + # Source: hex + # 0x + contract_1 = pre.deploy_contract( # noqa: F841 + code="", + balance=1, + nonce=0, + address=Address(0x0000000000000000000000000000000000000001), # noqa: E501 + ) + # Source: hex + # 0x + contract_2 = pre.deploy_contract( # noqa: F841 + code="", + balance=1, + nonce=0, + address=Address(0x0000000000000000000000000000000000000005), # noqa: E501 + ) + # Source: hex + # 0x + contract_3 = pre.deploy_contract( # noqa: F841 + code="", + balance=1, + nonce=0, + address=Address(0x0000000000000000000000000000000000000008), # noqa: E501 + ) + # Source: hex + # 0x + contract_4 = pre.deploy_contract( # noqa: F841 + code="", + balance=1, + nonce=0, + address=Address(0x0000000000000000000000000000000000000003), # noqa: E501 + ) + # Source: hex + # 0x + contract_5 = pre.deploy_contract( # noqa: F841 + code="", + balance=1, + nonce=0, + address=Address(0x0000000000000000000000000000000000000006), # noqa: E501 + ) + # Source: hex + # 0x + contract_6 = pre.deploy_contract( # noqa: F841 + code="", + balance=1, + nonce=0, + address=Address(0x0000000000000000000000000000000000000007), # noqa: E501 + ) + # Source: hex + # 0x + contract_7 = pre.deploy_contract( # noqa: F841 + code="", + balance=1, + nonce=0, + address=Address(0x0000000000000000000000000000000000000004), # noqa: E501 + ) + # Source: hex + # 0x + contract_8 = pre.deploy_contract( # noqa: F841 + code="", + balance=1, + nonce=0, + address=Address(0x0000000000000000000000000000000000000002), # noqa: E501 + ) + # Source: hex # 0x600035601c52740100000000000000000000000000000000000000006020526fffffffffffffffffffffffffffffffff6040527fffffffffffffffffffffffffffffffff000000000000000000000000000000016060527402540be3fffffffffffffffffffffffffdabf41c006080527ffffffffffffffffffffffffdabf41c00000000000000000000000002540be40060a0526330c8d1da600051141561012b5760846004356004013511151558576004356004013560200160043560040161014037600161024061014051610160600060056305f5e0fff11558576001610220526102206021806102808284600060046015f150505061028080516020820120905060005561028060206020820352604081510160206001820306601f820103905060208203f350005b # noqa: E501 contract_0 = pre.deploy_contract( # noqa: F841 code=Op.MSTORE(offset=0x1C, value=Op.CALLDATALOAD(offset=0x0)) @@ -189,78 +261,6 @@ def test_modexp_0_0_0_20500( nonce=1, address=Address(0xC305C901078781C232A2A521C2AF7980F8385EE9), # noqa: E501 ) - # Source: hex - # 0x - coinbase = pre.deploy_contract( # noqa: F841 - code="", - balance=0x201EE, - nonce=0, - address=Address(0x3535353535353535353535353535353535353535), # noqa: E501 - ) - # Source: hex - # 0x - contract_1 = pre.deploy_contract( # noqa: F841 - code="", - balance=1, - nonce=0, - address=Address(0x0000000000000000000000000000000000000001), # noqa: E501 - ) - # Source: hex - # 0x - contract_2 = pre.deploy_contract( # noqa: F841 - code="", - balance=1, - nonce=0, - address=Address(0x0000000000000000000000000000000000000005), # noqa: E501 - ) - # Source: hex - # 0x - contract_3 = pre.deploy_contract( # noqa: F841 - code="", - balance=1, - nonce=0, - address=Address(0x0000000000000000000000000000000000000008), # noqa: E501 - ) - # Source: hex - # 0x - contract_4 = pre.deploy_contract( # noqa: F841 - code="", - balance=1, - nonce=0, - address=Address(0x0000000000000000000000000000000000000003), # noqa: E501 - ) - # Source: hex - # 0x - contract_5 = pre.deploy_contract( # noqa: F841 - code="", - balance=1, - nonce=0, - address=Address(0x0000000000000000000000000000000000000006), # noqa: E501 - ) - # Source: hex - # 0x - contract_6 = pre.deploy_contract( # noqa: F841 - code="", - balance=1, - nonce=0, - address=Address(0x0000000000000000000000000000000000000007), # noqa: E501 - ) - # Source: hex - # 0x - contract_7 = pre.deploy_contract( # noqa: F841 - code="", - balance=1, - nonce=0, - address=Address(0x0000000000000000000000000000000000000004), # noqa: E501 - ) - # Source: hex - # 0x - contract_8 = pre.deploy_contract( # noqa: F841 - code="", - balance=1, - nonce=0, - address=Address(0x0000000000000000000000000000000000000002), # noqa: E501 - ) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stPreCompiledContracts2/test_modexp_0_0_0_22000.py b/tests/ported_static/stPreCompiledContracts2/test_modexp_0_0_0_22000.py index 5b3c05cf8c4..9390b7eb00c 100644 --- a/tests/ported_static/stPreCompiledContracts2/test_modexp_0_0_0_22000.py +++ b/tests/ported_static/stPreCompiledContracts2/test_modexp_0_0_0_22000.py @@ -92,6 +92,78 @@ def test_modexp_0_0_0_22000( pre[sender] = Account(balance=0xDE0B6B3A761FE12, nonce=1) # Source: hex + # 0x + coinbase = pre.deploy_contract( # noqa: F841 + code="", + balance=0x201EE, + nonce=0, + address=Address(0x3535353535353535353535353535353535353535), # noqa: E501 + ) + # Source: hex + # 0x + contract_1 = pre.deploy_contract( # noqa: F841 + code="", + balance=1, + nonce=0, + address=Address(0x0000000000000000000000000000000000000001), # noqa: E501 + ) + # Source: hex + # 0x + contract_2 = pre.deploy_contract( # noqa: F841 + code="", + balance=1, + nonce=0, + address=Address(0x0000000000000000000000000000000000000005), # noqa: E501 + ) + # Source: hex + # 0x + contract_3 = pre.deploy_contract( # noqa: F841 + code="", + balance=1, + nonce=0, + address=Address(0x0000000000000000000000000000000000000008), # noqa: E501 + ) + # Source: hex + # 0x + contract_4 = pre.deploy_contract( # noqa: F841 + code="", + balance=1, + nonce=0, + address=Address(0x0000000000000000000000000000000000000003), # noqa: E501 + ) + # Source: hex + # 0x + contract_5 = pre.deploy_contract( # noqa: F841 + code="", + balance=1, + nonce=0, + address=Address(0x0000000000000000000000000000000000000006), # noqa: E501 + ) + # Source: hex + # 0x + contract_6 = pre.deploy_contract( # noqa: F841 + code="", + balance=1, + nonce=0, + address=Address(0x0000000000000000000000000000000000000007), # noqa: E501 + ) + # Source: hex + # 0x + contract_7 = pre.deploy_contract( # noqa: F841 + code="", + balance=1, + nonce=0, + address=Address(0x0000000000000000000000000000000000000004), # noqa: E501 + ) + # Source: hex + # 0x + contract_8 = pre.deploy_contract( # noqa: F841 + code="", + balance=1, + nonce=0, + address=Address(0x0000000000000000000000000000000000000002), # noqa: E501 + ) + # Source: hex # 0x600035601c52740100000000000000000000000000000000000000006020526fffffffffffffffffffffffffffffffff6040527fffffffffffffffffffffffffffffffff000000000000000000000000000000016060527402540be3fffffffffffffffffffffffffdabf41c006080527ffffffffffffffffffffffffdabf41c00000000000000000000000002540be40060a0526330c8d1da600051141561012b5760846004356004013511151558576004356004013560200160043560040161014037600161024061014051610160600060056305f5e0fff11558576001610220526102206021806102808284600060046015f150505061028080516020820120905060005561028060206020820352604081510160206001820306601f820103905060208203f350005b # noqa: E501 contract_0 = pre.deploy_contract( # noqa: F841 code=Op.MSTORE(offset=0x1C, value=Op.CALLDATALOAD(offset=0x0)) @@ -186,78 +258,6 @@ def test_modexp_0_0_0_22000( nonce=1, address=Address(0xC305C901078781C232A2A521C2AF7980F8385EE9), # noqa: E501 ) - # Source: hex - # 0x - coinbase = pre.deploy_contract( # noqa: F841 - code="", - balance=0x201EE, - nonce=0, - address=Address(0x3535353535353535353535353535353535353535), # noqa: E501 - ) - # Source: hex - # 0x - contract_1 = pre.deploy_contract( # noqa: F841 - code="", - balance=1, - nonce=0, - address=Address(0x0000000000000000000000000000000000000001), # noqa: E501 - ) - # Source: hex - # 0x - contract_2 = pre.deploy_contract( # noqa: F841 - code="", - balance=1, - nonce=0, - address=Address(0x0000000000000000000000000000000000000005), # noqa: E501 - ) - # Source: hex - # 0x - contract_3 = pre.deploy_contract( # noqa: F841 - code="", - balance=1, - nonce=0, - address=Address(0x0000000000000000000000000000000000000008), # noqa: E501 - ) - # Source: hex - # 0x - contract_4 = pre.deploy_contract( # noqa: F841 - code="", - balance=1, - nonce=0, - address=Address(0x0000000000000000000000000000000000000003), # noqa: E501 - ) - # Source: hex - # 0x - contract_5 = pre.deploy_contract( # noqa: F841 - code="", - balance=1, - nonce=0, - address=Address(0x0000000000000000000000000000000000000006), # noqa: E501 - ) - # Source: hex - # 0x - contract_6 = pre.deploy_contract( # noqa: F841 - code="", - balance=1, - nonce=0, - address=Address(0x0000000000000000000000000000000000000007), # noqa: E501 - ) - # Source: hex - # 0x - contract_7 = pre.deploy_contract( # noqa: F841 - code="", - balance=1, - nonce=0, - address=Address(0x0000000000000000000000000000000000000004), # noqa: E501 - ) - # Source: hex - # 0x - contract_8 = pre.deploy_contract( # noqa: F841 - code="", - balance=1, - nonce=0, - address=Address(0x0000000000000000000000000000000000000002), # noqa: E501 - ) tx_data = [ Bytes("30c8d1da") diff --git a/tests/ported_static/stPreCompiledContracts2/test_modexp_0_0_0_25000.py b/tests/ported_static/stPreCompiledContracts2/test_modexp_0_0_0_25000.py index f807fd468bd..9ae5ef9d781 100644 --- a/tests/ported_static/stPreCompiledContracts2/test_modexp_0_0_0_25000.py +++ b/tests/ported_static/stPreCompiledContracts2/test_modexp_0_0_0_25000.py @@ -92,6 +92,78 @@ def test_modexp_0_0_0_25000( pre[sender] = Account(balance=0xDE0B6B3A761FE12, nonce=1) # Source: hex + # 0x + coinbase = pre.deploy_contract( # noqa: F841 + code="", + balance=0x201EE, + nonce=0, + address=Address(0x3535353535353535353535353535353535353535), # noqa: E501 + ) + # Source: hex + # 0x + contract_1 = pre.deploy_contract( # noqa: F841 + code="", + balance=1, + nonce=0, + address=Address(0x0000000000000000000000000000000000000001), # noqa: E501 + ) + # Source: hex + # 0x + contract_2 = pre.deploy_contract( # noqa: F841 + code="", + balance=1, + nonce=0, + address=Address(0x0000000000000000000000000000000000000005), # noqa: E501 + ) + # Source: hex + # 0x + contract_3 = pre.deploy_contract( # noqa: F841 + code="", + balance=1, + nonce=0, + address=Address(0x0000000000000000000000000000000000000008), # noqa: E501 + ) + # Source: hex + # 0x + contract_4 = pre.deploy_contract( # noqa: F841 + code="", + balance=1, + nonce=0, + address=Address(0x0000000000000000000000000000000000000003), # noqa: E501 + ) + # Source: hex + # 0x + contract_5 = pre.deploy_contract( # noqa: F841 + code="", + balance=1, + nonce=0, + address=Address(0x0000000000000000000000000000000000000006), # noqa: E501 + ) + # Source: hex + # 0x + contract_6 = pre.deploy_contract( # noqa: F841 + code="", + balance=1, + nonce=0, + address=Address(0x0000000000000000000000000000000000000007), # noqa: E501 + ) + # Source: hex + # 0x + contract_7 = pre.deploy_contract( # noqa: F841 + code="", + balance=1, + nonce=0, + address=Address(0x0000000000000000000000000000000000000004), # noqa: E501 + ) + # Source: hex + # 0x + contract_8 = pre.deploy_contract( # noqa: F841 + code="", + balance=1, + nonce=0, + address=Address(0x0000000000000000000000000000000000000002), # noqa: E501 + ) + # Source: hex # 0x600035601c52740100000000000000000000000000000000000000006020526fffffffffffffffffffffffffffffffff6040527fffffffffffffffffffffffffffffffff000000000000000000000000000000016060527402540be3fffffffffffffffffffffffffdabf41c006080527ffffffffffffffffffffffffdabf41c00000000000000000000000002540be40060a0526330c8d1da600051141561012b5760846004356004013511151558576004356004013560200160043560040161014037600161024061014051610160600060056305f5e0fff11558576001610220526102206021806102808284600060046015f150505061028080516020820120905060005561028060206020820352604081510160206001820306601f820103905060208203f350005b # noqa: E501 contract_0 = pre.deploy_contract( # noqa: F841 code=Op.MSTORE(offset=0x1C, value=Op.CALLDATALOAD(offset=0x0)) @@ -186,78 +258,6 @@ def test_modexp_0_0_0_25000( nonce=1, address=Address(0xC305C901078781C232A2A521C2AF7980F8385EE9), # noqa: E501 ) - # Source: hex - # 0x - coinbase = pre.deploy_contract( # noqa: F841 - code="", - balance=0x201EE, - nonce=0, - address=Address(0x3535353535353535353535353535353535353535), # noqa: E501 - ) - # Source: hex - # 0x - contract_1 = pre.deploy_contract( # noqa: F841 - code="", - balance=1, - nonce=0, - address=Address(0x0000000000000000000000000000000000000001), # noqa: E501 - ) - # Source: hex - # 0x - contract_2 = pre.deploy_contract( # noqa: F841 - code="", - balance=1, - nonce=0, - address=Address(0x0000000000000000000000000000000000000005), # noqa: E501 - ) - # Source: hex - # 0x - contract_3 = pre.deploy_contract( # noqa: F841 - code="", - balance=1, - nonce=0, - address=Address(0x0000000000000000000000000000000000000008), # noqa: E501 - ) - # Source: hex - # 0x - contract_4 = pre.deploy_contract( # noqa: F841 - code="", - balance=1, - nonce=0, - address=Address(0x0000000000000000000000000000000000000003), # noqa: E501 - ) - # Source: hex - # 0x - contract_5 = pre.deploy_contract( # noqa: F841 - code="", - balance=1, - nonce=0, - address=Address(0x0000000000000000000000000000000000000006), # noqa: E501 - ) - # Source: hex - # 0x - contract_6 = pre.deploy_contract( # noqa: F841 - code="", - balance=1, - nonce=0, - address=Address(0x0000000000000000000000000000000000000007), # noqa: E501 - ) - # Source: hex - # 0x - contract_7 = pre.deploy_contract( # noqa: F841 - code="", - balance=1, - nonce=0, - address=Address(0x0000000000000000000000000000000000000004), # noqa: E501 - ) - # Source: hex - # 0x - contract_8 = pre.deploy_contract( # noqa: F841 - code="", - balance=1, - nonce=0, - address=Address(0x0000000000000000000000000000000000000002), # noqa: E501 - ) tx_data = [ Bytes("30c8d1da") diff --git a/tests/ported_static/stPreCompiledContracts2/test_modexp_0_0_0_35000.py b/tests/ported_static/stPreCompiledContracts2/test_modexp_0_0_0_35000.py index 6e560ee537e..89b4b07c0e8 100644 --- a/tests/ported_static/stPreCompiledContracts2/test_modexp_0_0_0_35000.py +++ b/tests/ported_static/stPreCompiledContracts2/test_modexp_0_0_0_35000.py @@ -92,6 +92,78 @@ def test_modexp_0_0_0_35000( pre[sender] = Account(balance=0xDE0B6B3A761FE12, nonce=1) # Source: hex + # 0x + coinbase = pre.deploy_contract( # noqa: F841 + code="", + balance=0x201EE, + nonce=0, + address=Address(0x3535353535353535353535353535353535353535), # noqa: E501 + ) + # Source: hex + # 0x + contract_1 = pre.deploy_contract( # noqa: F841 + code="", + balance=1, + nonce=0, + address=Address(0x0000000000000000000000000000000000000001), # noqa: E501 + ) + # Source: hex + # 0x + contract_2 = pre.deploy_contract( # noqa: F841 + code="", + balance=1, + nonce=0, + address=Address(0x0000000000000000000000000000000000000005), # noqa: E501 + ) + # Source: hex + # 0x + contract_3 = pre.deploy_contract( # noqa: F841 + code="", + balance=1, + nonce=0, + address=Address(0x0000000000000000000000000000000000000008), # noqa: E501 + ) + # Source: hex + # 0x + contract_4 = pre.deploy_contract( # noqa: F841 + code="", + balance=1, + nonce=0, + address=Address(0x0000000000000000000000000000000000000003), # noqa: E501 + ) + # Source: hex + # 0x + contract_5 = pre.deploy_contract( # noqa: F841 + code="", + balance=1, + nonce=0, + address=Address(0x0000000000000000000000000000000000000006), # noqa: E501 + ) + # Source: hex + # 0x + contract_6 = pre.deploy_contract( # noqa: F841 + code="", + balance=1, + nonce=0, + address=Address(0x0000000000000000000000000000000000000007), # noqa: E501 + ) + # Source: hex + # 0x + contract_7 = pre.deploy_contract( # noqa: F841 + code="", + balance=1, + nonce=0, + address=Address(0x0000000000000000000000000000000000000004), # noqa: E501 + ) + # Source: hex + # 0x + contract_8 = pre.deploy_contract( # noqa: F841 + code="", + balance=1, + nonce=0, + address=Address(0x0000000000000000000000000000000000000002), # noqa: E501 + ) + # Source: hex # 0x600035601c52740100000000000000000000000000000000000000006020526fffffffffffffffffffffffffffffffff6040527fffffffffffffffffffffffffffffffff000000000000000000000000000000016060527402540be3fffffffffffffffffffffffffdabf41c006080527ffffffffffffffffffffffffdabf41c00000000000000000000000002540be40060a0526330c8d1da600051141561012b5760846004356004013511151558576004356004013560200160043560040161014037600161024061014051610160600060056305f5e0fff11558576001610220526102206021806102808284600060046015f150505061028080516020820120905060005561028060206020820352604081510160206001820306601f820103905060208203f350005b # noqa: E501 contract_0 = pre.deploy_contract( # noqa: F841 code=Op.MSTORE(offset=0x1C, value=Op.CALLDATALOAD(offset=0x0)) @@ -186,78 +258,6 @@ def test_modexp_0_0_0_35000( nonce=1, address=Address(0xC305C901078781C232A2A521C2AF7980F8385EE9), # noqa: E501 ) - # Source: hex - # 0x - coinbase = pre.deploy_contract( # noqa: F841 - code="", - balance=0x201EE, - nonce=0, - address=Address(0x3535353535353535353535353535353535353535), # noqa: E501 - ) - # Source: hex - # 0x - contract_1 = pre.deploy_contract( # noqa: F841 - code="", - balance=1, - nonce=0, - address=Address(0x0000000000000000000000000000000000000001), # noqa: E501 - ) - # Source: hex - # 0x - contract_2 = pre.deploy_contract( # noqa: F841 - code="", - balance=1, - nonce=0, - address=Address(0x0000000000000000000000000000000000000005), # noqa: E501 - ) - # Source: hex - # 0x - contract_3 = pre.deploy_contract( # noqa: F841 - code="", - balance=1, - nonce=0, - address=Address(0x0000000000000000000000000000000000000008), # noqa: E501 - ) - # Source: hex - # 0x - contract_4 = pre.deploy_contract( # noqa: F841 - code="", - balance=1, - nonce=0, - address=Address(0x0000000000000000000000000000000000000003), # noqa: E501 - ) - # Source: hex - # 0x - contract_5 = pre.deploy_contract( # noqa: F841 - code="", - balance=1, - nonce=0, - address=Address(0x0000000000000000000000000000000000000006), # noqa: E501 - ) - # Source: hex - # 0x - contract_6 = pre.deploy_contract( # noqa: F841 - code="", - balance=1, - nonce=0, - address=Address(0x0000000000000000000000000000000000000007), # noqa: E501 - ) - # Source: hex - # 0x - contract_7 = pre.deploy_contract( # noqa: F841 - code="", - balance=1, - nonce=0, - address=Address(0x0000000000000000000000000000000000000004), # noqa: E501 - ) - # Source: hex - # 0x - contract_8 = pre.deploy_contract( # noqa: F841 - code="", - balance=1, - nonce=0, - address=Address(0x0000000000000000000000000000000000000002), # noqa: E501 - ) tx_data = [ Bytes("30c8d1da") diff --git a/tests/ported_static/stPreCompiledContracts2/test_modexp_random_input.py b/tests/ported_static/stPreCompiledContracts2/test_modexp_random_input.py index 2840e3593cf..beb5e9d3a55 100644 --- a/tests/ported_static/stPreCompiledContracts2/test_modexp_random_input.py +++ b/tests/ported_static/stPreCompiledContracts2/test_modexp_random_input.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -68,7 +67,6 @@ ), ], ) -@pytest.mark.pre_alloc_mutable def test_modexp_random_input( state_test: StateTestFiller, pre: Alloc, @@ -79,9 +77,7 @@ def test_modexp_random_input( ) -> None: """Fuzzed input discovered by Guido.""" coinbase = Address(0x3535353535353535353535353535353535353535) - sender = EOA( - key=0x897B12D02D588D8A4FE16FF831CBD4459C6F62F8C845B0CCDD31CAF068C84A26 - ) + sender = pre.fund_eoa(amount=0x3635C9ADC5DEA00000) env = Environment( fee_recipient=coinbase, @@ -92,8 +88,6 @@ def test_modexp_random_input( gas_limit=100000000, ) - pre[sender] = Account(balance=0x3635C9ADC5DEA00000) - tx_data = [ Bytes( "00000000000000000000000000000000000000000000000000000000000000e300000000000000000000000000000000000000000000000000" # noqa: E501 diff --git a/tests/ported_static/stQuadraticComplexityTest/test_call1_mb1024_calldepth.py b/tests/ported_static/stQuadraticComplexityTest/test_call1_mb1024_calldepth.py index 9753d9d8810..228828eea8c 100644 --- a/tests/ported_static/stQuadraticComplexityTest/test_call1_mb1024_calldepth.py +++ b/tests/ported_static/stQuadraticComplexityTest/test_call1_mb1024_calldepth.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -60,10 +59,7 @@ def test_call1_mb1024_calldepth( ) -> None: """Test_call1_mb1024_calldepth.""" coinbase = Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) - addr = Address(0x2AB8257767339461506C0C67824CF17BC77B52CA) - sender = EOA( - key=0xE7C72B378297589ACEE4E0BA3272841BCFC5E220F86DE253F890274CFEE9E474 - ) + sender = pre.fund_eoa(amount=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) env = Environment( fee_recipient=coinbase, @@ -74,8 +70,7 @@ def test_call1_mb1024_calldepth( gas_limit=882500000000, ) - pre[sender] = Account(balance=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) - pre[addr] = Account(balance=0xFFFFFFFFFFFFF) + addr = pre.fund_eoa(amount=0xFFFFFFFFFFFFF) # noqa: F841 # Source: lll # { (def 'i 0x80) [[ 0 ]] (+ @@0 1) (if (LT @@0 1024) [[ 1 ]] (CALL (- (GAS) 1005000) 0 0 1000000 0 0) [[ 2 ]] 1 ) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 diff --git a/tests/ported_static/stQuadraticComplexityTest/test_call20_kbytes_contract50_2.py b/tests/ported_static/stQuadraticComplexityTest/test_call20_kbytes_contract50_2.py index 02f27461722..e064cb3e94e 100644 --- a/tests/ported_static/stQuadraticComplexityTest/test_call20_kbytes_contract50_2.py +++ b/tests/ported_static/stQuadraticComplexityTest/test_call20_kbytes_contract50_2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -62,9 +61,7 @@ def test_call20_kbytes_contract50_2( ) -> None: """Test_call20_kbytes_contract50_2.""" coinbase = Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) - sender = EOA( - key=0xE7C72B378297589ACEE4E0BA3272841BCFC5E220F86DE253F890274CFEE9E474 - ) + sender = pre.fund_eoa(amount=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) env = Environment( fee_recipient=coinbase, @@ -75,7 +72,6 @@ def test_call20_kbytes_contract50_2( gas_limit=882500000000, ) - pre[sender] = Account(balance=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) # Source: raw # 0x60015b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b600101600055 # noqa: E501 addr = pre.deploy_contract( # noqa: F841 @@ -85,7 +81,6 @@ def test_call20_kbytes_contract50_2( + Op.SSTORE(key=0x0, value=Op.ADD), balance=0xFFFFFFFFFFFFF, nonce=0, - address=Address(0xE7EBAFA0FEA97A99A72B7F0996C07477E54DF0C2), # noqa: E501 ) # Source: lll # { (def 'i 0x80) (for {} (< @i 50) [i](+ @i 1) [[ 0 ]] (CALL 88250000000 0 0 0 0 0) ) [[ 1 ]] @i } # noqa: E501 @@ -98,7 +93,7 @@ def test_call20_kbytes_contract50_2( key=0x0, value=Op.CALL( gas=0x148C1C2280, - address=0xE7EBAFA0FEA97A99A72B7F0996C07477E54DF0C2, + address=addr, value=0x0, args_offset=0x0, args_size=0x0, @@ -113,7 +108,6 @@ def test_call20_kbytes_contract50_2( + Op.STOP, balance=0xFFFFFFFFFFFFF, nonce=0, - address=Address(0x8C9EC19D542269495230087C08602E5D70572FD5), # noqa: E501 ) expect_entries_: list[dict] = [ diff --git a/tests/ported_static/stQuadraticComplexityTest/test_call20_kbytes_contract50_3.py b/tests/ported_static/stQuadraticComplexityTest/test_call20_kbytes_contract50_3.py index a64f8b0bfb8..172093e2818 100644 --- a/tests/ported_static/stQuadraticComplexityTest/test_call20_kbytes_contract50_3.py +++ b/tests/ported_static/stQuadraticComplexityTest/test_call20_kbytes_contract50_3.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -62,9 +61,7 @@ def test_call20_kbytes_contract50_3( ) -> None: """Potentially broken test: gas optimization shows that we can go as...""" coinbase = Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) - sender = EOA( - key=0xE7C72B378297589ACEE4E0BA3272841BCFC5E220F86DE253F890274CFEE9E474 - ) + sender = pre.fund_eoa(amount=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) env = Environment( fee_recipient=coinbase, @@ -75,7 +72,6 @@ def test_call20_kbytes_contract50_3( gas_limit=882500000000, ) - pre[sender] = Account(balance=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) # Source: raw # 0x6001614a8e565b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b600101600055 # noqa: E501 addr = pre.deploy_contract( # noqa: F841 @@ -86,7 +82,6 @@ def test_call20_kbytes_contract50_3( + Op.SSTORE(key=0x0, value=Op.ADD), balance=0xFFFFFFFFFFFFF, nonce=0, - address=Address(0x2C496C63F4E9F426BFD41214147CDD3DCD2DE1C3), # noqa: E501 ) # Source: lll # { (def 'i 0x80) (for {} (< @i 50) [i](+ @i 1) [[ 0 ]] (CALL 88250000000 0 0 0 0 0) ) [[ 1 ]] @i } # noqa: E501 @@ -99,7 +94,7 @@ def test_call20_kbytes_contract50_3( key=0x0, value=Op.CALL( gas=0x148C1C2280, - address=0x2C496C63F4E9F426BFD41214147CDD3DCD2DE1C3, + address=addr, value=0x0, args_offset=0x0, args_size=0x0, @@ -114,7 +109,6 @@ def test_call20_kbytes_contract50_3( + Op.STOP, balance=0xFFFFFFFFFFFFF, nonce=0, - address=Address(0x8C9EC19D542269495230087C08602E5D70572FD5), # noqa: E501 ) expect_entries_: list[dict] = [ diff --git a/tests/ported_static/stQuadraticComplexityTest/test_call50000.py b/tests/ported_static/stQuadraticComplexityTest/test_call50000.py index 2d158c62b40..09054e27c25 100644 --- a/tests/ported_static/stQuadraticComplexityTest/test_call50000.py +++ b/tests/ported_static/stQuadraticComplexityTest/test_call50000.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -60,10 +59,7 @@ def test_call50000( ) -> None: """Test_call50000.""" coinbase = Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) - addr = Address(0xD9B97C712EBCE43F3C19179BBEF44B550F9E8BC0) - sender = EOA( - key=0xE7C72B378297589ACEE4E0BA3272841BCFC5E220F86DE253F890274CFEE9E474 - ) + sender = pre.fund_eoa(amount=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) env = Environment( fee_recipient=coinbase, @@ -74,8 +70,7 @@ def test_call50000( gas_limit=860000000, ) - pre[sender] = Account(balance=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) - pre[addr] = Account(balance=7000) + addr = pre.fund_eoa(amount=7000) # noqa: F841 # Source: lll # { (def 'i 0x80) (for {} (< @i 50000) [i](+ @i 1) [[ 0 ]] (CALL 1600 1 0 50000 0 0) ) [[ 1 ]] @i} # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -87,7 +82,7 @@ def test_call50000( key=0x0, value=Op.CALL( gas=0x640, - address=0xD9B97C712EBCE43F3C19179BBEF44B550F9E8BC0, + address=addr, value=0x1, args_offset=0x0, args_size=0xC350, @@ -102,7 +97,6 @@ def test_call50000( + Op.STOP, balance=0xFFFFFFFFFFFFF, nonce=0, - address=Address(0x968A2606110EF719ED66F5E3688F6FB82D606FFA), # noqa: E501 ) expect_entries_: list[dict] = [ diff --git a/tests/ported_static/stQuadraticComplexityTest/test_call50000_ecrec.py b/tests/ported_static/stQuadraticComplexityTest/test_call50000_ecrec.py index f536b3f8572..5ef0eba7901 100644 --- a/tests/ported_static/stQuadraticComplexityTest/test_call50000_ecrec.py +++ b/tests/ported_static/stQuadraticComplexityTest/test_call50000_ecrec.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -60,9 +59,7 @@ def test_call50000_ecrec( ) -> None: """Test_call50000_ecrec.""" coinbase = Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) - sender = EOA( - key=0xE7C72B378297589ACEE4E0BA3272841BCFC5E220F86DE253F890274CFEE9E474 - ) + sender = pre.fund_eoa(amount=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) env = Environment( fee_recipient=coinbase, @@ -73,7 +70,6 @@ def test_call50000_ecrec( gas_limit=3000000000, ) - pre[sender] = Account(balance=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) # Source: lll # { (def 'i 0x80) (for {} (< @i 50000) [i](+ @i 1) [[ 0 ]] (CALL 500 1 1 0 50000 0 0) ) [[ 1 ]] @i} # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -100,7 +96,6 @@ def test_call50000_ecrec( + Op.STOP, balance=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, nonce=0, - address=Address(0x1C5BEF085B43F11A8A19AE08A0C20019E6D15236), # noqa: E501 ) expect_entries_: list[dict] = [ diff --git a/tests/ported_static/stQuadraticComplexityTest/test_call50000_identity.py b/tests/ported_static/stQuadraticComplexityTest/test_call50000_identity.py index fcddf62356f..6d52d835c00 100644 --- a/tests/ported_static/stQuadraticComplexityTest/test_call50000_identity.py +++ b/tests/ported_static/stQuadraticComplexityTest/test_call50000_identity.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -60,9 +59,7 @@ def test_call50000_identity( ) -> None: """Test_call50000_identity.""" coinbase = Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) - sender = EOA( - key=0xE7C72B378297589ACEE4E0BA3272841BCFC5E220F86DE253F890274CFEE9E474 - ) + sender = pre.fund_eoa(amount=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) env = Environment( fee_recipient=coinbase, @@ -73,7 +70,6 @@ def test_call50000_identity( gas_limit=882500000, ) - pre[sender] = Account(balance=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) # Source: lll # { (def 'i 0x80) (for {} (< @i 50000) [i](+ @i 1) [[ 0 ]] (CALL 1564 4 1 0 50000 0 0) ) [[ 1 ]] @i} # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -100,7 +96,6 @@ def test_call50000_identity( + Op.STOP, balance=0xFFFFFFFFFFFFF, nonce=0, - address=Address(0x25D58A9D3632EEA7B6146CDAA0B4D323A83A814E), # noqa: E501 ) expect_entries_: list[dict] = [ diff --git a/tests/ported_static/stQuadraticComplexityTest/test_call50000_identity2.py b/tests/ported_static/stQuadraticComplexityTest/test_call50000_identity2.py index 77058afe23b..f2d27a68845 100644 --- a/tests/ported_static/stQuadraticComplexityTest/test_call50000_identity2.py +++ b/tests/ported_static/stQuadraticComplexityTest/test_call50000_identity2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -60,9 +59,7 @@ def test_call50000_identity2( ) -> None: """Test_call50000_identity2.""" coinbase = Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) - sender = EOA( - key=0xE7C72B378297589ACEE4E0BA3272841BCFC5E220F86DE253F890274CFEE9E474 - ) + sender = pre.fund_eoa(amount=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) env = Environment( fee_recipient=coinbase, @@ -73,7 +70,6 @@ def test_call50000_identity2( gas_limit=882500000, ) - pre[sender] = Account(balance=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) # Source: lll # { (def 'i 0x80) [ 1 ] 42 (for {} (< @i 50000) [i](+ @i 1) [[ 0 ]] (CALL 1564 4 1 0 50000 1 50000) ) [[ 1 ]] @i [[ 2 ]] @1 } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -102,7 +98,6 @@ def test_call50000_identity2( + Op.STOP, balance=0xFFFFFFFFFFFFF, nonce=0, - address=Address(0x6DC17565113358633923F732D8C32382345D2D6F), # noqa: E501 ) expect_entries_: list[dict] = [ diff --git a/tests/ported_static/stQuadraticComplexityTest/test_call50000_rip160.py b/tests/ported_static/stQuadraticComplexityTest/test_call50000_rip160.py index 8d3ee02644e..143a678a724 100644 --- a/tests/ported_static/stQuadraticComplexityTest/test_call50000_rip160.py +++ b/tests/ported_static/stQuadraticComplexityTest/test_call50000_rip160.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -60,9 +59,7 @@ def test_call50000_rip160( ) -> None: """Test_call50000_rip160.""" coinbase = Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) - sender = EOA( - key=0xE7C72B378297589ACEE4E0BA3272841BCFC5E220F86DE253F890274CFEE9E474 - ) + sender = pre.fund_eoa(amount=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) env = Environment( fee_recipient=coinbase, @@ -73,7 +70,6 @@ def test_call50000_rip160( gas_limit=3925000000, ) - pre[sender] = Account(balance=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) # Source: lll # { (def 'i 0x80) (for {} (< @i 50000) [i](+ @i 1) [[ 0 ]] (CALL 78200 3 1 0 50000 0 0) ) [[ 1 ]] @i} # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -100,7 +96,6 @@ def test_call50000_rip160( + Op.STOP, balance=0xFFFFFFFFFFFFF, nonce=0, - address=Address(0xC10D84BAA3A4BB4E45C856EBE1EF386BFED327DB), # noqa: E501 ) expect_entries_: list[dict] = [ diff --git a/tests/ported_static/stQuadraticComplexityTest/test_callcode50000.py b/tests/ported_static/stQuadraticComplexityTest/test_callcode50000.py index 59a73d24fbc..6d2ec3e0d83 100644 --- a/tests/ported_static/stQuadraticComplexityTest/test_callcode50000.py +++ b/tests/ported_static/stQuadraticComplexityTest/test_callcode50000.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -60,10 +59,7 @@ def test_callcode50000( ) -> None: """Test_callcode50000.""" coinbase = Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) - addr = Address(0xD9B97C712EBCE43F3C19179BBEF44B550F9E8BC0) - sender = EOA( - key=0xE7C72B378297589ACEE4E0BA3272841BCFC5E220F86DE253F890274CFEE9E474 - ) + sender = pre.fund_eoa(amount=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) env = Environment( fee_recipient=coinbase, @@ -74,8 +70,7 @@ def test_callcode50000( gas_limit=8600000000, ) - pre[sender] = Account(balance=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) - pre[addr] = Account(balance=7000) + addr = pre.fund_eoa(amount=7000) # noqa: F841 # Source: lll # { (def 'i 0x80) (for {} (< @i 50000) [i](+ @i 1) [[ 0 ]] (CALLCODE 1600 1 0 50000 0 0) ) [[ 1 ]] @i} # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -87,7 +82,7 @@ def test_callcode50000( key=0x0, value=Op.CALLCODE( gas=0x640, - address=0xD9B97C712EBCE43F3C19179BBEF44B550F9E8BC0, + address=addr, value=0x1, args_offset=0x0, args_size=0xC350, @@ -102,7 +97,6 @@ def test_callcode50000( + Op.STOP, balance=0xFFFFFFFFFFFFF, nonce=0, - address=Address(0x7FC89545BED7AF26B6EF809B53E9A93FD0718468), # noqa: E501 ) expect_entries_: list[dict] = [ diff --git a/tests/ported_static/stQuadraticComplexityTest/test_create1000.py b/tests/ported_static/stQuadraticComplexityTest/test_create1000.py index 0fd46530994..74c1e0f1112 100644 --- a/tests/ported_static/stQuadraticComplexityTest/test_create1000.py +++ b/tests/ported_static/stQuadraticComplexityTest/test_create1000.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -62,9 +61,7 @@ def test_create1000( """Gas analysis showed this test's gas can go as low as 21053, and...""" coinbase = Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) contract_0 = Address(0xBBBF5374FCE5EDBC8E2A8697C15331677E6EBF0B) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) env = Environment( fee_recipient=coinbase, @@ -75,7 +72,6 @@ def test_create1000( gas_limit=8600000000, ) - pre[sender] = Account(balance=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) # Source: lll # { (def 'i 0x80) (for {} (< @i 1000) [i](+ @i 1) [[ 0 ]] (CREATE 1 0 50000) ) [[ 1 ]] @i} # noqa: E501 contract_0 = pre.deploy_contract( # noqa: F841 @@ -93,7 +89,6 @@ def test_create1000( + Op.STOP, balance=0xFFFFFFFFFFFFF, nonce=0, - address=Address(0xBBBF5374FCE5EDBC8E2A8697C15331677E6EBF0B), # noqa: E501 ) expect_entries_: list[dict] = [ @@ -101,30 +96,30 @@ def test_create1000( "indexes": {"data": -1, "gas": 0, "value": -1}, "network": [">=Cancun=Cancun=Cancun=Cancun None: """Test_random_statetest0.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -53,7 +50,6 @@ def test_random_statetest0( "7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000100000000000000000000000000000000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f000000000000000000000000000000000000000000000000000000000000c3507f00000000000000000000000100000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff857ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1302056f60005155" # noqa: E501 ), nonce=0, - address=Address(0x3C2C1D569D955EE8D26CED4ADCD452C462A972AD), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -71,7 +67,6 @@ def test_random_statetest0( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest1.py b/tests/ported_static/stRandom/test_random_statetest1.py index bb480bae8d1..2d43d88fe21 100644 --- a/tests/ported_static/stRandom/test_random_statetest1.py +++ b/tests/ported_static/stRandom/test_random_statetest1.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,9 +33,7 @@ def test_random_statetest1( """Test_random_statetest1.""" coinbase = Address(0x945304EB96065B2A98B57A48A06AE28D285A71B5) contract_0 = Address(0x095E7BAEA6A6C7C4C2DFEB977EFAC326AF552D87) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -62,7 +59,6 @@ def test_random_statetest1( ), balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x095E7BAEA6A6C7C4C2DFEB977EFAC326AF552D87), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -80,7 +76,6 @@ def test_random_statetest1( nonce=0, address=Address(0x945304EB96065B2A98B57A48A06AE28D285A71B5), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest10.py b/tests/ported_static/stRandom/test_random_statetest10.py index 0e0b16c047b..f5c895545db 100644 --- a/tests/ported_static/stRandom/test_random_statetest10.py +++ b/tests/ported_static/stRandom/test_random_statetest10.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest10( ) -> None: """Test_random_statetest10.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -53,7 +50,6 @@ def test_random_statetest10( "7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000c3507f000000000000000000000000000000000000000000000000000000000000000120417f000000000000000000000000000000000000000000000000000000000000c3507f000000000000000000000000000000000000000000000000000000000000c3508859a1740a0528f26a635216cd980a9a9255" # noqa: E501 ), nonce=0, - address=Address(0xA1941AE61E22D0850914D85E19B1BD7234265C66), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -71,7 +67,6 @@ def test_random_statetest10( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest103.py b/tests/ported_static/stRandom/test_random_statetest103.py index e1809cc0f0a..40b67225a2c 100644 --- a/tests/ported_static/stRandom/test_random_statetest103.py +++ b/tests/ported_static/stRandom/test_random_statetest103.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest103( ) -> None: """Test_random_statetest103.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,15 +43,6 @@ def test_random_statetest103( gas_limit=9223372036854775807, ) - # Source: raw - # 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe92357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff597f00000000000000000000000000000000000000000000000000000000000000019385a39988160a205a93196d336428 # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=bytes.fromhex( - "7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e797ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe92357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff597f00000000000000000000000000000000000000000000000000000000000000019385a39988160a205a93196d336428" # noqa: E501 - ), - nonce=0, - address=Address(0x7284C101C23E4AF67251BEEAAAFA61D3AC764B99), # noqa: E501 - ) # Source: raw # 0x6000355415600957005b60203560003555 coinbase = pre.deploy_contract( # noqa: F841 @@ -71,7 +59,14 @@ def test_random_statetest103( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: raw + # 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe92357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff597f00000000000000000000000000000000000000000000000000000000000000019385a39988160a205a93196d336428 # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=bytes.fromhex( + "7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e797ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe92357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff597f00000000000000000000000000000000000000000000000000000000000000019385a39988160a205a93196d336428" # noqa: E501 + ), + nonce=0, + ) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest108.py b/tests/ported_static/stRandom/test_random_statetest108.py index 77a3ec683a4..27eb868b255 100644 --- a/tests/ported_static/stRandom/test_random_statetest108.py +++ b/tests/ported_static/stRandom/test_random_statetest108.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest108( ) -> None: """Test_random_statetest108.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -56,7 +53,6 @@ def test_random_statetest108( + Op.COINBASE, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xF3C8D5EA3CE820D6B26253D4D1D9106008C757DB), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -74,7 +70,6 @@ def test_random_statetest108( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest111.py b/tests/ported_static/stRandom/test_random_statetest111.py index 3aa84517400..e9926c99608 100644 --- a/tests/ported_static/stRandom/test_random_statetest111.py +++ b/tests/ported_static/stRandom/test_random_statetest111.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest111( ) -> None: """Test_random_statetest111.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -53,7 +50,6 @@ def test_random_statetest111( "7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000c3507f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000c35059a17f0000000000000000000000000000000000000000000000000000000000000001f38f07bf60005155" # noqa: E501 ), nonce=0, - address=Address(0xC9EDD4CF792E9FEFFEE7968E9A49A0BD81A7BA40), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -71,7 +67,6 @@ def test_random_statetest111( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest125.py b/tests/ported_static/stRandom/test_random_statetest125.py index a69c23b90ca..eb54ea5851d 100644 --- a/tests/ported_static/stRandom/test_random_statetest125.py +++ b/tests/ported_static/stRandom/test_random_statetest125.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest125( ) -> None: """Test_random_statetest125.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -53,7 +50,6 @@ def test_random_statetest125( "7f0000000000000000000000000000000000000000000000000000000000000001207f000000000000000000000000000000000000000000000000000000000000c3507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000c3507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe406f" # noqa: E501 ), nonce=0, - address=Address(0x1B0E1DBC498C84F90C7FD8527D4769745EF1B402), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -71,7 +67,6 @@ def test_random_statetest125( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest126.py b/tests/ported_static/stRandom/test_random_statetest126.py index 4eca7fc1703..579c4fea63a 100644 --- a/tests/ported_static/stRandom/test_random_statetest126.py +++ b/tests/ported_static/stRandom/test_random_statetest126.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest126( ) -> None: """Test_random_statetest126.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -52,7 +49,6 @@ def test_random_statetest126( code=Op.COINBASE + Op.TIMESTAMP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x14D62B5F3407C5252CF14978B30AA72F1D70C9B7), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -70,7 +66,6 @@ def test_random_statetest126( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest13.py b/tests/ported_static/stRandom/test_random_statetest13.py index e96ab1baa88..69cbf6a3159 100644 --- a/tests/ported_static/stRandom/test_random_statetest13.py +++ b/tests/ported_static/stRandom/test_random_statetest13.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest13( ) -> None: """Test_random_statetest13.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,6 +43,22 @@ def test_random_statetest13( gas_limit=9223372036854775807, ) + # Source: raw + # 0x6000355415600957005b60203560003555 + coinbase = pre.deploy_contract( # noqa: F841 + code=Op.JUMPI( + pc=0x9, + condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), + ) + + Op.STOP + + Op.JUMPDEST + + Op.SSTORE( + key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) + ), + balance=46, + nonce=0, + address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 + ) # Source: raw # 0x7f0000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000027ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe307f00000000000000000000000100000000000000000000000000000000000000007f00000000000000000000000100000000000000000000000000000000000000005255 # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -64,25 +77,7 @@ def test_random_statetest13( ) + Op.SSTORE, nonce=0, - address=Address(0xD9C946D2F4E706FBE9FB6F91B4034BD946606105), # noqa: E501 - ) - # Source: raw - # 0x6000355415600957005b60203560003555 - coinbase = pre.deploy_contract( # noqa: F841 - code=Op.JUMPI( - pc=0x9, - condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), - ) - + Op.STOP - + Op.JUMPDEST - + Op.SSTORE( - key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) - ), - balance=46, - nonce=0, - address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest133.py b/tests/ported_static/stRandom/test_random_statetest133.py index 5ec348ad982..632885666d4 100644 --- a/tests/ported_static/stRandom/test_random_statetest133.py +++ b/tests/ported_static/stRandom/test_random_statetest133.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest133( ) -> None: """Test_random_statetest133.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,15 +43,6 @@ def test_random_statetest133( gas_limit=9223372036854775807, ) - # Source: raw - # 0x7f000000000000000000000000000000000000000000000000000000000000c3507f00000000000000000000000100000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000001357f00000000000000000000000000000000000000000000000000000000000000017f00000000000000000000000000000000000000000000000000000000000000017f0000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000035830b503516a46d0b03 # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=bytes.fromhex( - "7f000000000000000000000000000000000000000000000000000000000000c3507f00000000000000000000000100000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000001357f00000000000000000000000000000000000000000000000000000000000000017f00000000000000000000000000000000000000000000000000000000000000017f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e797f000000000000000000000000000000000000000000000000000000000000000035830b503516a46d0b03" # noqa: E501 - ), - nonce=0, - address=Address(0x329BC91A29577639030B3D2025ECFA2AB0FC3BA8), # noqa: E501 - ) # Source: raw # 0x6000355415600957005b60203560003555 coinbase = pre.deploy_contract( # noqa: F841 @@ -71,7 +59,14 @@ def test_random_statetest133( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: raw + # 0x7f000000000000000000000000000000000000000000000000000000000000c3507f00000000000000000000000100000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000001357f00000000000000000000000000000000000000000000000000000000000000017f00000000000000000000000000000000000000000000000000000000000000017f0000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000035830b503516a46d0b03 # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=bytes.fromhex( + "7f000000000000000000000000000000000000000000000000000000000000c3507f00000000000000000000000100000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000001357f00000000000000000000000000000000000000000000000000000000000000017f00000000000000000000000000000000000000000000000000000000000000017f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e797f000000000000000000000000000000000000000000000000000000000000000035830b503516a46d0b03" # noqa: E501 + ), + nonce=0, + ) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest134.py b/tests/ported_static/stRandom/test_random_statetest134.py index 1a6a1d55122..cc6196657b8 100644 --- a/tests/ported_static/stRandom/test_random_statetest134.py +++ b/tests/ported_static/stRandom/test_random_statetest134.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest134( ) -> None: """Test_random_statetest134.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,6 +43,22 @@ def test_random_statetest134( gas_limit=9223372036854775807, ) + # Source: raw + # 0x6000355415600957005b60203560003555 + coinbase = pre.deploy_contract( # noqa: F841 + code=Op.JUMPI( + pc=0x9, + condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), + ) + + Op.STOP + + Op.JUMPDEST + + Op.SSTORE( + key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) + ), + balance=46, + nonce=0, + address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 + ) # Source: raw # 0x417f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff557f0000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff55836b636c9c395a0732014533405560005155 # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -65,25 +78,7 @@ def test_random_statetest134( key=Op.MLOAD(offset=0x0), value=0x636C9C395A07320145334055 ), nonce=0, - address=Address(0x955495CF3DC6D8B98B51E7C3F09C27A30C0E87F0), # noqa: E501 - ) - # Source: raw - # 0x6000355415600957005b60203560003555 - coinbase = pre.deploy_contract( # noqa: F841 - code=Op.JUMPI( - pc=0x9, - condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), - ) - + Op.STOP - + Op.JUMPDEST - + Op.SSTORE( - key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) - ), - balance=46, - nonce=0, - address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest135.py b/tests/ported_static/stRandom/test_random_statetest135.py index e192bb812a2..6d91f04aee8 100644 --- a/tests/ported_static/stRandom/test_random_statetest135.py +++ b/tests/ported_static/stRandom/test_random_statetest135.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest135( ) -> None: """Test_random_statetest135.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,6 +43,22 @@ def test_random_statetest135( gas_limit=9223372036854775807, ) + # Source: raw + # 0x6000355415600957005b60203560003555 + coinbase = pre.deploy_contract( # noqa: F841 + code=Op.JUMPI( + pc=0x9, + condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), + ) + + Op.STOP + + Op.JUMPDEST + + Op.SSTORE( + key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) + ), + balance=46, + nonce=0, + address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 + ) # Source: raw # 0x7f000000000000000000000000000000000000000000000000000000000000c3507f0000000000000000000000010000000000000000000000000000000000000000417f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0075a0b64319218663016870455 # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -77,25 +90,7 @@ def test_random_statetest135( value=Op.PUSH32[0x0], ), nonce=0, - address=Address(0x8BE71DFBA7B6D76D26A281635B0D1A85D947C1E5), # noqa: E501 - ) - # Source: raw - # 0x6000355415600957005b60203560003555 - coinbase = pre.deploy_contract( # noqa: F841 - code=Op.JUMPI( - pc=0x9, - condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), - ) - + Op.STOP - + Op.JUMPDEST - + Op.SSTORE( - key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) - ), - balance=46, - nonce=0, - address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest144.py b/tests/ported_static/stRandom/test_random_statetest144.py index 4cbad499b8b..4f09a5cfc6b 100644 --- a/tests/ported_static/stRandom/test_random_statetest144.py +++ b/tests/ported_static/stRandom/test_random_statetest144.py @@ -47,6 +47,8 @@ def test_random_statetest144( gas_limit=1545160903, ) + pre[addr] = Account(balance=0x2401AC5958344E85, nonce=53) + pre[sender] = Account(balance=0x71E90493E6EB4C59) # Source: raw # 0x621da82575e942e4fd977abdb407069cf700116e02b4f9b25d866b6d13163fff2b8ef03cf8ab5d662afb7bb5c9e68462741090bc0976c9705b40411efe39e80c20b572c5e3d75f788f9be2f0981672b8de37f9e2d1515046cb77cc3ee74646fb096eadce98908499b6fd54725f3c6a725968761ba50494d1ecaf1e787db9a052952427c4f271c28d3e25728b2b76439a3166cd0ed37f30ec2421ed38ebd3b00b89ba9208391dc274e4eefa69161a37dfff7111756dd7971065f05aa9de4867609e7d847a290d0eeb08cde2ff294ae11dd16f8a3e32494d943fa0622cc04cd7476b6d2a1008e4ad1e2c33e2928e707c797f2a1a586bbf78658189bf58172ff77130be2ffc9bbf7f171939be260b30eb65b46a6cf107be1c9ed5c92c99d69fe0559389600e6013601c60096016601260016001600c6017016d200351654b9773409608aaa7db1f67b518d025727bdc6e0463b2bc334b658536d84dadc47a2288da62c36b9a35bf8934e3781a4c44e91637ce5c6b2f916d76706529d728b6f5ee076013601e601960086005601c6013601d96423568ce21a850c04a77ceb9 # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -104,8 +106,6 @@ def test_random_statetest144( nonce=89, address=Address(0xEA1CD1B117B10AC33FD7BBF18889624625EDE7D4), # noqa: E501 ) - pre[addr] = Account(balance=0x2401AC5958344E85, nonce=53) - pre[sender] = Account(balance=0x71E90493E6EB4C59) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest146.py b/tests/ported_static/stRandom/test_random_statetest146.py index 57e678cb840..09586cd9e74 100644 --- a/tests/ported_static/stRandom/test_random_statetest146.py +++ b/tests/ported_static/stRandom/test_random_statetest146.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest146( ) -> None: """Test_random_statetest146.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -58,7 +55,6 @@ def test_random_statetest146( + Op.EXP(Op.CALLCODE, Op.EQ(Op.CALLDATASIZE, Op.ADDRESS)), balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xDE14E9D6C6F9145C355FDF3100FE961632D4CF85), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -76,7 +72,6 @@ def test_random_statetest146( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest149.py b/tests/ported_static/stRandom/test_random_statetest149.py index f751a51b3d4..8227cf138fc 100644 --- a/tests/ported_static/stRandom/test_random_statetest149.py +++ b/tests/ported_static/stRandom/test_random_statetest149.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest149( ) -> None: """Test_random_statetest149.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,6 +43,22 @@ def test_random_statetest149( gas_limit=9223372036854775807, ) + # Source: raw + # 0x6000355415600957005b60203560003555 + coinbase = pre.deploy_contract( # noqa: F841 + code=Op.JUMPI( + pc=0x9, + condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), + ) + + Op.STOP + + Op.JUMPDEST + + Op.SSTORE( + key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) + ), + balance=46, + nonce=0, + address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 + ) # Source: raw # 0x7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f0000000000000000000000007f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000c3507f00000000000000000000000100000000000000000000000000000000000000007f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff099055510760005155 # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -66,25 +79,7 @@ def test_random_statetest149( + Op.MLOAD + Op.SSTORE(key=Op.MLOAD(offset=0x0), value=Op.SMOD), nonce=0, - address=Address(0xEE2A67362D09420884AE26DC5C2F1C69EC03C027), # noqa: E501 - ) - # Source: raw - # 0x6000355415600957005b60203560003555 - coinbase = pre.deploy_contract( # noqa: F841 - code=Op.JUMPI( - pc=0x9, - condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), - ) - + Op.STOP - + Op.JUMPDEST - + Op.SSTORE( - key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) - ), - balance=46, - nonce=0, - address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest150.py b/tests/ported_static/stRandom/test_random_statetest150.py index 8a19ba48705..6f9cc75c228 100644 --- a/tests/ported_static/stRandom/test_random_statetest150.py +++ b/tests/ported_static/stRandom/test_random_statetest150.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,9 +33,7 @@ def test_random_statetest150( ) -> None: """Test_random_statetest150.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -47,6 +44,22 @@ def test_random_statetest150( gas_limit=9223372036854775807, ) + # Source: raw + # 0x6000355415600957005b60203560003555 + coinbase = pre.deploy_contract( # noqa: F841 + code=Op.JUMPI( + pc=0x9, + condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), + ) + + Op.STOP + + Op.JUMPDEST + + Op.SSTORE( + key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) + ), + balance=46, + nonce=0, + address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 + ) # Source: raw # 0x668254d76c6f24d4806677d83f3a46a1a66f20ae2688cf4b75842ac7265966f5f5ca603e6062a268aba89067dc278e1f86710462dae624ac683889038d26894af02617c06b39c4988a5a60a12c0d9ad0ca65839c92f7c75c6ad3d6a7b617ac7fbd41f5a29377ca6ad48748a94e31302254147fb3b5857568e516cb6e8aa23577af85d0e508dc17dc50e246130be577cb59826adc86af6c107fd8a98f47cccd9d22a867a43cd8ad77bbe8bb737af5acc0be67fd7b054f7281e771891dc4aad180996b9cb71c6016d0f6a9148c775e57ac8456a883eedc3182623898f32b5c83760465a2061c7652e785e7eef7a97b0aa6d6c15b5c296bcf05ee2e9b87aa60b5741b3f7d69a1df03df117b848b3a75f81c12dee2244f76e56bb261e9c75fb5ccc769db72bfaeadee3f68cf22bbca665b0647ac74c1409778c71b73ed4adaa2c6ba1c181b0747c27506478c403b3943129e79223e788bf8b81f60abecb73be035d03a8bbdfa112cd8cb2f7a1065250292740d2d72259b4d7e3ef844783da8118b72912b9f96a61f6168f160ef69d7dd3dfc7e4ef204766f789cbaf2abeceadcf5bdd8dddfef773f0a628afdf3988861662b77882a5cebffc61e75f11835b109e81f7c915a91c13b09097b792d3d59de0ef5b0f00f95ea49860917656263925da2fd6685359c6d7e4c3c4d2001a30111de14c56503788453df98a29b8715561b2c2021cf78e0ccc4701b192ebf67bb6f522656788b3d21428b50a2fa16224d926ce2ea5944760d501bfa0774238c6351dd224b743d3fc4d5a309166016a71b1c230fe9afd6479324716e71e3b27bdd3fb18cccc42f6ec973129f7958435f45da181aeb1608ed31713c33330ab4d2d4af54dd92d1df1560086014601d601f636b1d9a3573632aec0540f16cfb040c16bd7c3761bdb86dd6be658d2aefe157396217393663769965a66479176d702e7e2d5697681aac1beccc55825241cd77551f39526cfa77838faa9c4759aafa5c64df5e9199976f35f8298acd398d1913c1fd2ddacbbeac7cc29daee12c057385808f19d07110f30cfd900a130b0a713468bceaf4236153ab6c7bdc39cf86d0a5b03684624d187473b42a2968f1128872724b3d42218dbac11f5a9492651f09a866f61a72535c373274618d5914163abc7481bb7789394e62f247e78e7f83af55a5686926972af7c6519658aee40a564e3c2950f874def7a2110af0526f75629b20a108e1cfba0db03fcdee497ee2f8bcf78ef14317 # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -134,23 +147,6 @@ def test_random_statetest150( nonce=0, address=Address(0xA00C267DA6E57A9318A096C6333C4BCED51306DA), # noqa: E501 ) - # Source: raw - # 0x6000355415600957005b60203560003555 - coinbase = pre.deploy_contract( # noqa: F841 - code=Op.JUMPI( - pc=0x9, - condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), - ) - + Op.STOP - + Op.JUMPDEST - + Op.SSTORE( - key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) - ), - balance=46, - nonce=0, - address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest151.py b/tests/ported_static/stRandom/test_random_statetest151.py index a9699c5adf2..192a0f7c215 100644 --- a/tests/ported_static/stRandom/test_random_statetest151.py +++ b/tests/ported_static/stRandom/test_random_statetest151.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest151( ) -> None: """Test_random_statetest151.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -52,7 +49,6 @@ def test_random_statetest151( code=bytes.fromhex("41424143445a42f35b10773574016c9f"), balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x832214236B4DC7829A505AFAFB05B91D152F9FF4), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -70,7 +66,6 @@ def test_random_statetest151( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest154.py b/tests/ported_static/stRandom/test_random_statetest154.py index f41e51f37b2..0bad5e9b660 100644 --- a/tests/ported_static/stRandom/test_random_statetest154.py +++ b/tests/ported_static/stRandom/test_random_statetest154.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,9 +33,7 @@ def test_random_statetest154( ) -> None: """Test_random_statetest154.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -47,6 +44,22 @@ def test_random_statetest154( gas_limit=9223372036854775807, ) + # Source: raw + # 0x6000355415600957005b60203560003555 + coinbase = pre.deploy_contract( # noqa: F841 + code=Op.JUMPI( + pc=0x9, + condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), + ) + + Op.STOP + + Op.JUMPDEST + + Op.SSTORE( + key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) + ), + balance=46, + nonce=0, + address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 + ) # Source: raw # 0x7db1267c8bba268d1408f7b3e269afee3fea86c5bc8aec8108fd6aaa954f5173b7d0e2328333e94698e0d570db9b316cba0adbae609d611ba1a2326004600d6005600f632de40a2773635c2491eef1 # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -69,23 +82,6 @@ def test_random_statetest154( nonce=0, address=Address(0xF8E70C18DB2BF1444417C2820AF74D3AB1D6A06F), # noqa: E501 ) - # Source: raw - # 0x6000355415600957005b60203560003555 - coinbase = pre.deploy_contract( # noqa: F841 - code=Op.JUMPI( - pc=0x9, - condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), - ) - + Op.STOP - + Op.JUMPDEST - + Op.SSTORE( - key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) - ), - balance=46, - nonce=0, - address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest157.py b/tests/ported_static/stRandom/test_random_statetest157.py index 2c26e9768bb..b7faca09a73 100644 --- a/tests/ported_static/stRandom/test_random_statetest157.py +++ b/tests/ported_static/stRandom/test_random_statetest157.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest157( ) -> None: """Test_random_statetest157.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -53,7 +50,6 @@ def test_random_statetest157( "7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000100000000000000000000000000000000000000007f00000000000000000000000100000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff0966ff351691689162f371a38d9b789e4360005155" # noqa: E501 ), nonce=0, - address=Address(0xD86E1F5504D3579A67DB179F0CE158D0E8B252D9), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -71,7 +67,6 @@ def test_random_statetest157( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest159.py b/tests/ported_static/stRandom/test_random_statetest159.py index 9f9fb966491..cf7ad9cc324 100644 --- a/tests/ported_static/stRandom/test_random_statetest159.py +++ b/tests/ported_static/stRandom/test_random_statetest159.py @@ -47,6 +47,23 @@ def test_random_statetest159( gas_limit=9223372036854775807, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: raw + # 0x6000355415600957005b60203560003555 + coinbase = pre.deploy_contract( # noqa: F841 + code=Op.JUMPI( + pc=0x9, + condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), + ) + + Op.STOP + + Op.JUMPDEST + + Op.SSTORE( + key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) + ), + balance=46, + nonce=0, + address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 + ) # Source: raw # 0x324260e172acf6051580ff4e3ba75da449e7ab2b705cf75873b252caf4b51def86cf4988747e4b77d541c09d316acfebf3871d3a1944a5b975670f11d63a7d9c9b49750a0734d7313f746ba5fba6f3ff04148f4f39e4a28cc271e1ae0b89f2ad1413af2317c6a9628006d4157cdf7a3f30103f20611fe88431b16a79be995278aec271b56bc32543196c650621b66f1bfc718c0d9360cfb17a079aeca76a0b08cb4f0e5789426a6a26c3bef3710be80e4d646135f26076a178e17952f1667fa85f3b72ffa4c95bda9db87e2b8409a9b1c9e27346e5b9a49fd3689f943925eb4618577675acf6bf7b1b665940c32ef9086a95914496bc8bb76245fa2dc9cd3e29618e568966b2893ecd2e84766a8cf184a772e70b3e042b9584601e600b600760136304b1e2f2736339570738f16df327f570c11aa84a7a5480b98c5175cbd00120239df2d03db2fdd9c233df848ead9d3c84d4556f6030a17e0f41dfce8be36a92b0d5e0d67a71c146187edefc7923a8aad22ca228ecee824c2d7c237ace7e52fd62bd649662a4fe5f78a0b34d84a28c14c9fea0f18d1d55870173546b3b99e17cae467e2f1667b7c9445b11382bf9d7ff632d1ccdc973ba913d9ebbb219ac7aa0f3b579caa81065e433d2b8cf8cbfb998ec52fe1eaea6d87bc7728315cc653ccf904948918741 # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -101,23 +118,6 @@ def test_random_statetest159( nonce=0, address=Address(0xBADAB8EC78E07CDBB4B25F913769FEA51E5A9C2A), # noqa: E501 ) - # Source: raw - # 0x6000355415600957005b60203560003555 - coinbase = pre.deploy_contract( # noqa: F841 - code=Op.JUMPI( - pc=0x9, - condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), - ) - + Op.STOP - + Op.JUMPDEST - + Op.SSTORE( - key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) - ), - balance=46, - nonce=0, - address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest16.py b/tests/ported_static/stRandom/test_random_statetest16.py index 5b201216811..9fd19a54c5c 100644 --- a/tests/ported_static/stRandom/test_random_statetest16.py +++ b/tests/ported_static/stRandom/test_random_statetest16.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest16( ) -> None: """Test_random_statetest16.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,15 +43,6 @@ def test_random_statetest16( gas_limit=9223372036854775807, ) - # Source: raw - # 0x7f00000000000000000000000100000000000000000000000000000000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f0000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000557f00000000000000000000000000000000000000000000000000000000000000017f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000005531848f7aa4516d7d7578797e # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=bytes.fromhex( - "7f00000000000000000000000100000000000000000000000000000000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e797f0000000000000000000000000000000000000000000000000000000000000000557f00000000000000000000000000000000000000000000000000000000000000017f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000005531848f7aa4516d7d7578797e" # noqa: E501 - ), - nonce=0, - address=Address(0xAFBF96F4E8A345CC862021D826A7CAE52ADCCDE9), # noqa: E501 - ) # Source: raw # 0x6000355415600957005b60203560003555 coinbase = pre.deploy_contract( # noqa: F841 @@ -71,7 +59,14 @@ def test_random_statetest16( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: raw + # 0x7f00000000000000000000000100000000000000000000000000000000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f0000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000557f00000000000000000000000000000000000000000000000000000000000000017f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000005531848f7aa4516d7d7578797e # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=bytes.fromhex( + "7f00000000000000000000000100000000000000000000000000000000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e797f0000000000000000000000000000000000000000000000000000000000000000557f00000000000000000000000000000000000000000000000000000000000000017f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000005531848f7aa4516d7d7578797e" # noqa: E501 + ), + nonce=0, + ) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest163.py b/tests/ported_static/stRandom/test_random_statetest163.py index e855aea06dc..e09dae5e866 100644 --- a/tests/ported_static/stRandom/test_random_statetest163.py +++ b/tests/ported_static/stRandom/test_random_statetest163.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,9 +33,7 @@ def test_random_statetest163( ) -> None: """Test_random_statetest163.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -54,7 +51,6 @@ def test_random_statetest163( "7f000000000000000000000000000000000000000000000000000000000000000034577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000100000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000426259cb6142a1196e3168c986758aa4" # noqa: E501 ), nonce=0, - address=Address(0xE9A32A9AD98C02FA9521B9AB066BCC683A8AB126), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -72,7 +68,6 @@ def test_random_statetest163( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest171.py b/tests/ported_static/stRandom/test_random_statetest171.py index 7320c71012f..085db9770a6 100644 --- a/tests/ported_static/stRandom/test_random_statetest171.py +++ b/tests/ported_static/stRandom/test_random_statetest171.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest171( ) -> None: """Test_random_statetest171.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,6 +43,22 @@ def test_random_statetest171( gas_limit=9223372036854775807, ) + # Source: raw + # 0x6000355415600957005b60203560003555 + coinbase = pre.deploy_contract( # noqa: F841 + code=Op.JUMPI( + pc=0x9, + condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), + ) + + Op.STOP + + Op.JUMPDEST + + Op.SSTORE( + key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) + ), + balance=46, + nonce=0, + address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 + ) # Source: raw # 0x7f000000000000000000000000000000000000000000000000000000000000c350437f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000017ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f000000000000000000000000197ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe095560005155 # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -63,25 +76,7 @@ def test_random_statetest171( + Op.MLOAD(offset=0x0) + Op.SSTORE, nonce=0, - address=Address(0x698791D8A7C355091FA7BC3A0171CD426DBE2F51), # noqa: E501 - ) - # Source: raw - # 0x6000355415600957005b60203560003555 - coinbase = pre.deploy_contract( # noqa: F841 - code=Op.JUMPI( - pc=0x9, - condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), - ) - + Op.STOP - + Op.JUMPDEST - + Op.SSTORE( - key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) - ), - balance=46, - nonce=0, - address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest172.py b/tests/ported_static/stRandom/test_random_statetest172.py index 7a87b12e703..69d3fbbe19d 100644 --- a/tests/ported_static/stRandom/test_random_statetest172.py +++ b/tests/ported_static/stRandom/test_random_statetest172.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest172( ) -> None: """Test_random_statetest172.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -63,7 +60,6 @@ def test_random_statetest172( ), ), nonce=0, - address=Address(0xF279F9F41A3A6ECF391D89AAC2E62FD83D4488B7), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -81,7 +77,6 @@ def test_random_statetest172( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest176.py b/tests/ported_static/stRandom/test_random_statetest176.py index e1813fe5bd0..b38024b1239 100644 --- a/tests/ported_static/stRandom/test_random_statetest176.py +++ b/tests/ported_static/stRandom/test_random_statetest176.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest176( ) -> None: """Test_random_statetest176.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,15 +43,6 @@ def test_random_statetest176( gas_limit=9223372036854775807, ) - # Source: raw - # 0x327fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000c350427f000000000000000000000000000000000000000000000000000000000000c3507f0000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff041469988517f6889d92799e74664160005155 # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=bytes.fromhex( - "327fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000c350427f000000000000000000000000000000000000000000000000000000000000c3507f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e797f00000000000000000000000000000000000000000000000000000000000000017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff041469988517f6889d92799e74664160005155" # noqa: E501 - ), - nonce=0, - address=Address(0x6520F3AED37C7B3960EC53119D5B0CEDD39FE2F6), # noqa: E501 - ) # Source: raw # 0x6000355415600957005b60203560003555 coinbase = pre.deploy_contract( # noqa: F841 @@ -71,7 +59,14 @@ def test_random_statetest176( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: raw + # 0x327fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000c350427f000000000000000000000000000000000000000000000000000000000000c3507f0000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff041469988517f6889d92799e74664160005155 # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=bytes.fromhex( + "327fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000c350427f000000000000000000000000000000000000000000000000000000000000c3507f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e797f00000000000000000000000000000000000000000000000000000000000000017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff041469988517f6889d92799e74664160005155" # noqa: E501 + ), + nonce=0, + ) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest177.py b/tests/ported_static/stRandom/test_random_statetest177.py index 6336b5fb25d..074d36783cc 100644 --- a/tests/ported_static/stRandom/test_random_statetest177.py +++ b/tests/ported_static/stRandom/test_random_statetest177.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest177( ) -> None: """Test_random_statetest177.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -154,7 +151,6 @@ def test_random_statetest177( size=0x483189606297788FBF55, ), nonce=0, - address=Address(0xD18174ABA5B877BD17DC67A4272D8A567CFA8925), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -172,7 +168,6 @@ def test_random_statetest177( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest178.py b/tests/ported_static/stRandom/test_random_statetest178.py index 63acfd5143d..db292922da6 100644 --- a/tests/ported_static/stRandom/test_random_statetest178.py +++ b/tests/ported_static/stRandom/test_random_statetest178.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,9 +33,7 @@ def test_random_statetest178( ) -> None: """Test_random_statetest178.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -47,6 +44,22 @@ def test_random_statetest178( gas_limit=9223372036854775807, ) + # Source: raw + # 0x6000355415600957005b60203560003555 + coinbase = pre.deploy_contract( # noqa: F841 + code=Op.JUMPI( + pc=0x9, + condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), + ) + + Op.STOP + + Op.JUMPDEST + + Op.SSTORE( + key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) + ), + balance=46, + nonce=0, + address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 + ) # Source: raw # 0x7d342beabe599e4bc177fd97d36df48d50650ba6129a9a83d4cf809ec21452357c620167f530c3265be9887f6e5b8186decdc00a6a801e5f56dd8d9d36a4806dbccc299e4bbf46ad577e25b5b1fc76b6999cb23a6a03c4035e36b8494135ee170647395da00b6e0a64c43f3358b8bdcf593c89fb70b865ef153b5195c77959256beb4f932095eb8ac80bc2c050f6f550a362aac77f5c4b197151df039d64b77dca22eb8fd4b8cf50fb85a36f1d909d1919a47fe97de5526726b4a47b866b7b13471056439457cd7cbc5060d978056ff5dd24a1f49e50b9f5924f473b2dc5306d67054ca575d0603e616291a3601460106009601f6338a57ddc73630e3319c8f133 # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -85,23 +98,6 @@ def test_random_statetest178( nonce=0, address=Address(0x1B0A78BDF6595742D34BF13386BCC01EFADDF68C), # noqa: E501 ) - # Source: raw - # 0x6000355415600957005b60203560003555 - coinbase = pre.deploy_contract( # noqa: F841 - code=Op.JUMPI( - pc=0x9, - condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), - ) - + Op.STOP - + Op.JUMPDEST - + Op.SSTORE( - key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) - ), - balance=46, - nonce=0, - address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest18.py b/tests/ported_static/stRandom/test_random_statetest18.py index 79d0ba8929c..ad0ccda235e 100644 --- a/tests/ported_static/stRandom/test_random_statetest18.py +++ b/tests/ported_static/stRandom/test_random_statetest18.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest18( ) -> None: """Test_random_statetest18.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -53,7 +50,6 @@ def test_random_statetest18( "7f00000000000000000000000000000000000000000000000000000000000000017f00000000000000000000000100000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000001077f00000000000000000000000100000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000c3504419860b9754998d503105a033436e67133a60005155" # noqa: E501 ), nonce=0, - address=Address(0x199E67129322E9EA96E433131D5CE947EF8B4892), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -71,7 +67,6 @@ def test_random_statetest18( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest185.py b/tests/ported_static/stRandom/test_random_statetest185.py index e1ac36b7c11..21863df133c 100644 --- a/tests/ported_static/stRandom/test_random_statetest185.py +++ b/tests/ported_static/stRandom/test_random_statetest185.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,9 +33,7 @@ def test_random_statetest185( ) -> None: """Test_random_statetest185.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -63,7 +60,6 @@ def test_random_statetest185( topic_3=Op.PUSH32[0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF], ), nonce=0, - address=Address(0x065AB564766A44260B57175A6F14DB1478FF080F), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -81,7 +77,6 @@ def test_random_statetest185( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest189.py b/tests/ported_static/stRandom/test_random_statetest189.py index 1f1ac0a3978..4a6149f73b4 100644 --- a/tests/ported_static/stRandom/test_random_statetest189.py +++ b/tests/ported_static/stRandom/test_random_statetest189.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest189( ) -> None: """Test_random_statetest189.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -53,7 +50,6 @@ def test_random_statetest189( "7f00000000000000000000000100000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000100000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000017f00000000000000000000000100000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000035900bf3740474765060005155" # noqa: E501 ), nonce=0, - address=Address(0x8979909F9CFE09C20D8B0D21AC5FB398B01B8DF1), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -71,7 +67,6 @@ def test_random_statetest189( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest190.py b/tests/ported_static/stRandom/test_random_statetest190.py index 3cce6ba5e32..08b54fdd625 100644 --- a/tests/ported_static/stRandom/test_random_statetest190.py +++ b/tests/ported_static/stRandom/test_random_statetest190.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest190( ) -> None: """Test_random_statetest190.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,6 +43,22 @@ def test_random_statetest190( gas_limit=9223372036854775807, ) + # Source: raw + # 0x6000355415600957005b60203560003555 + coinbase = pre.deploy_contract( # noqa: F841 + code=Op.JUMPI( + pc=0x9, + condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), + ) + + Op.STOP + + Op.JUMPDEST + + Op.SSTORE( + key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) + ), + balance=46, + nonce=0, + address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 + ) # Source: raw # 0x7f0000000000000000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000100000000000000000000000000000000000000007f0000000000000000000000007f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0960005155 # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -65,25 +78,7 @@ def test_random_statetest190( ), ), nonce=0, - address=Address(0x2BF1E46C1EC71AC6066D16A4400CE88AE6ADE599), # noqa: E501 - ) - # Source: raw - # 0x6000355415600957005b60203560003555 - coinbase = pre.deploy_contract( # noqa: F841 - code=Op.JUMPI( - pc=0x9, - condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), - ) - + Op.STOP - + Op.JUMPDEST - + Op.SSTORE( - key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) - ), - balance=46, - nonce=0, - address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest197.py b/tests/ported_static/stRandom/test_random_statetest197.py index 41b5ce9b9d5..97a84e3878a 100644 --- a/tests/ported_static/stRandom/test_random_statetest197.py +++ b/tests/ported_static/stRandom/test_random_statetest197.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest197( ) -> None: """Test_random_statetest197.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -53,7 +50,6 @@ def test_random_statetest197( "7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000100000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000c3507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f000000000000000000000000000000000000000000000000000000000000c350437f00000000000000000000000000000000000000000000000000000000000000016e6a078e5652549f57423955" # noqa: E501 ), nonce=0, - address=Address(0x71102826FF0F31FB54CE1F4B51C4F72E17BD2312), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -71,7 +67,6 @@ def test_random_statetest197( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest20.py b/tests/ported_static/stRandom/test_random_statetest20.py index c1ee18da454..c6b30221733 100644 --- a/tests/ported_static/stRandom/test_random_statetest20.py +++ b/tests/ported_static/stRandom/test_random_statetest20.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest20( ) -> None: """Test_random_statetest20.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -69,7 +66,6 @@ def test_random_statetest20( + Op.SWAP11 + Op.SSTORE, nonce=0, - address=Address(0x14AAE767BFB5A29EE9B0F5B449EB48366103601C), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -87,7 +83,6 @@ def test_random_statetest20( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest205.py b/tests/ported_static/stRandom/test_random_statetest205.py index 0a02472e6f0..a4e283aab9a 100644 --- a/tests/ported_static/stRandom/test_random_statetest205.py +++ b/tests/ported_static/stRandom/test_random_statetest205.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest205( ) -> None: """Test_random_statetest205.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,6 +43,22 @@ def test_random_statetest205( gas_limit=9223372036854775807, ) + # Source: raw + # 0x6000355415600957005b60203560003555 + coinbase = pre.deploy_contract( # noqa: F841 + code=Op.JUMPI( + pc=0x9, + condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), + ) + + Op.STOP + + Op.JUMPDEST + + Op.SSTORE( + key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) + ), + balance=46, + nonce=0, + address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 + ) # Source: raw # 0x3360b261edefa0326fdc74d570982966277b49cdb30a453fa06c34a7423da44ba2d04341af08c478b17a57318ab10ab43b3744333b0aa8864ac27b3fd022e380056735a5fcda3e9fdc25695972a076884de6d6b6b06dd45416c8110bae3c70576b433a4672777847e81823024ddd1292b929ad28e64a732b74c0ae1941d5936ecd35738e2f279273788f4aaf19907a532a6b0f117c32b6cb967aae8bdfcf86e2d4d64599986abcf65a20754f5a816c58ed669138f6a0448670b906bbf1eb145ced896c578de5aa27769006b1a784e84b6316d4e60c7053b0b6550c70a177cb7a3e88d4e83fb1897a09c2161ff6cc2679c178292687137854da672e316c66ef03dc9ac37e8e430b7c64d1939bf67383c4bafeb2f0471fe896b7c0e114bf6f152b266cc769ae4d38f3df618f5eeb9085601f601060086016632c019e2e73626b8a0ef179e6b62e86237845e9605d61219d97c1d0145516f5355fe73384e87a6a87cc6d2378c81797ac3746bc562e2fd1145e14781307bc4ada39732e9d0e8725fde75c5abc313c11e3238c7cd9b7186a6a14f8d5c3cad9da5339446ad1311ccc67a0691559157a674825358b301ac42d7bcae31beb8b0849903402175ca3740f3fd690ad66287d6bf67a98c09e6de5717596052d30f4b9bb8046a6b67ef51b1b13c496e97bf9a2e67aeca97fa10a266f8cf22c10cc0375b514b25de466a146576b2cb565754efc80d4b8aa5497aa0fb4cbab90ee57298d322474d276366e04eab856c9f6070c80701fa30596dd0b6ea5bc38ba64e1d16aff1b8c61caa379064465a9308dbb1465294ddcb5fa32833e4ffb049c71761ed93472c7e58f171c6c8b51e2ec704d34897b80466e826b0c1ce2488511cbb1aaad26b075ed5ebf070be6e14eaa6b973423bcb2e0541307d88ff66d1b7e29fffb10218ca75bf3f9957d6ee27a0945278d5f9303b3e3f28a325a7f17905f7467c4afcbb3a43dbbd37e9591e3f5a82841ee9cb8b23f68b4572e8cd96d0f7daacbd3ab3bd5a8f427baf6ea7ae70d98d3948eafb74e2e4a158ac116c5219403c9073a457409c6e464bae32b2c856b15bda1b2176295fd1cecfe7d794ab2692061aa79387004112272204198437fc78d1dbe0e8932ce6f47828a2bf4df47446291b99d92a90de3623954589d36 # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -119,23 +132,6 @@ def test_random_statetest205( nonce=0, address=Address(0xD6C9D572B7645ECAE86A7BDB66C7AE1FB04B0321), # noqa: E501 ) - # Source: raw - # 0x6000355415600957005b60203560003555 - coinbase = pre.deploy_contract( # noqa: F841 - code=Op.JUMPI( - pc=0x9, - condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), - ) - + Op.STOP - + Op.JUMPDEST - + Op.SSTORE( - key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) - ), - balance=46, - nonce=0, - address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest209.py b/tests/ported_static/stRandom/test_random_statetest209.py index e9c894f5d5f..95ff6abc047 100644 --- a/tests/ported_static/stRandom/test_random_statetest209.py +++ b/tests/ported_static/stRandom/test_random_statetest209.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest209( ) -> None: """Test_random_statetest209.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -53,7 +50,6 @@ def test_random_statetest209( "7f00000000000000000000000000000000000000000000000000000000000000017f000000000000000000000000000000000000000000000000000000000000c3507f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff0951537d3c6474623b781181a355" # noqa: E501 ), nonce=0, - address=Address(0x8BCAE160C58323E76F465E719B7F38A0049B17C9), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -71,7 +67,6 @@ def test_random_statetest209( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest211.py b/tests/ported_static/stRandom/test_random_statetest211.py index 4f724711b3f..33bad535f67 100644 --- a/tests/ported_static/stRandom/test_random_statetest211.py +++ b/tests/ported_static/stRandom/test_random_statetest211.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest211( ) -> None: """Test_random_statetest211.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -77,7 +74,6 @@ def test_random_statetest211( + Op.PUSH21[0xF392A4AA2A84A99C9390AB4BD4C39F521A2B91C2EA] + Op.SWAP1, nonce=0, - address=Address(0xD7EB1DDC2F83F5620BD387BC6409BE3CC2D2422F), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -95,7 +91,6 @@ def test_random_statetest211( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest226.py b/tests/ported_static/stRandom/test_random_statetest226.py index 4fb7718504f..e8efcbb0224 100644 --- a/tests/ported_static/stRandom/test_random_statetest226.py +++ b/tests/ported_static/stRandom/test_random_statetest226.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,9 +33,7 @@ def test_random_statetest226( ) -> None: """Test_random_statetest226.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -47,6 +44,22 @@ def test_random_statetest226( gas_limit=9223372036854775807, ) + # Source: raw + # 0x6000355415600957005b60203560003555 + coinbase = pre.deploy_contract( # noqa: F841 + code=Op.JUMPI( + pc=0x9, + condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), + ) + + Op.STOP + + Op.JUMPDEST + + Op.SSTORE( + key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) + ), + balance=46, + nonce=0, + address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 + ) # Source: raw # 0x7f000000000000000000000000000000000000000000000000000000000000c350357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000007f000000000000000000000000000000000000000000000000000000000000c3507f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe5a605560005155 # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -63,25 +76,7 @@ def test_random_statetest226( + Op.GAS + Op.SSTORE(key=Op.MLOAD(offset=0x0), value=0x55), nonce=0, - address=Address(0xC5676AEAB3D49C7E165B0F09B63906F533BC6232), # noqa: E501 - ) - # Source: raw - # 0x6000355415600957005b60203560003555 - coinbase = pre.deploy_contract( # noqa: F841 - code=Op.JUMPI( - pc=0x9, - condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), - ) - + Op.STOP - + Op.JUMPDEST - + Op.SSTORE( - key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) - ), - balance=46, - nonce=0, - address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest230.py b/tests/ported_static/stRandom/test_random_statetest230.py index 5797b56bc60..b197ea59848 100644 --- a/tests/ported_static/stRandom/test_random_statetest230.py +++ b/tests/ported_static/stRandom/test_random_statetest230.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest230( ) -> None: """Test_random_statetest230.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -64,7 +61,6 @@ def test_random_statetest230( ), ), nonce=0, - address=Address(0xF2D051C4061DE9BB62F3C8B53170AC76CAF27862), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -82,7 +78,6 @@ def test_random_statetest230( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest233.py b/tests/ported_static/stRandom/test_random_statetest233.py index 3b9da2acf65..023c0f438b0 100644 --- a/tests/ported_static/stRandom/test_random_statetest233.py +++ b/tests/ported_static/stRandom/test_random_statetest233.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest233( ) -> None: """Test_random_statetest233.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -63,7 +60,6 @@ def test_random_statetest233( + Op.PUSH32[0x10000000000000000000000000000000000000000] + Op.PUSH6[0x715460005155], nonce=0, - address=Address(0x05C62926921E990C1B91CB104C481076FF52B217), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -81,7 +77,6 @@ def test_random_statetest233( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest24.py b/tests/ported_static/stRandom/test_random_statetest24.py index 7643419280b..944d0513f3e 100644 --- a/tests/ported_static/stRandom/test_random_statetest24.py +++ b/tests/ported_static/stRandom/test_random_statetest24.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest24( ) -> None: """Test_random_statetest24.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -53,7 +50,6 @@ def test_random_statetest24( "41417f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff459d7f0000000000000000000000000000000000000000000000000000000000000001817f000000000000000000000000000000000000000000000000000000000000c35095418211337b0530435560005155" # noqa: E501 ), nonce=0, - address=Address(0x0EC19BD4E8D4C09BCCC0EDD6ECD58DD99B7B3212), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -71,7 +67,6 @@ def test_random_statetest24( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest25.py b/tests/ported_static/stRandom/test_random_statetest25.py index 1a57eb69d60..0d6cbc6c271 100644 --- a/tests/ported_static/stRandom/test_random_statetest25.py +++ b/tests/ported_static/stRandom/test_random_statetest25.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest25( ) -> None: """Test_random_statetest25.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -53,7 +50,6 @@ def test_random_statetest25( "427f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000010000000000000000000000000000000000000000437f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff807f00000000000000000000000100000000000000000000000000000000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6844f1389163a444405b123678749c55" # noqa: E501 ), nonce=0, - address=Address(0xA4BA89AEA3BBA17580E93A80135F218628A68101), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -71,7 +67,6 @@ def test_random_statetest25( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest250.py b/tests/ported_static/stRandom/test_random_statetest250.py index 840be0eca9e..49410929b7f 100644 --- a/tests/ported_static/stRandom/test_random_statetest250.py +++ b/tests/ported_static/stRandom/test_random_statetest250.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest250( ) -> None: """Test_random_statetest250.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,6 +43,22 @@ def test_random_statetest250( gas_limit=9223372036854775807, ) + # Source: raw + # 0x6000355415600957005b60203560003555 + coinbase = pre.deploy_contract( # noqa: F841 + code=Op.JUMPI( + pc=0x9, + condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), + ) + + Op.STOP + + Op.JUMPDEST + + Op.SSTORE( + key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) + ), + balance=46, + nonce=0, + address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 + ) # Source: raw # 0x557ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f00000000000000000000000000000000000000000000000000000000000000017f000000000000000000000000000000000000000000000000000000000000c3507f000000000000000000000000627f00000000000000000000000100000000000000000000000000000000000000007f0000000000000000000000006a328b186e166407917c7af102925060005155 # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -69,25 +82,7 @@ def test_random_statetest250( + Op.MLOAD(offset=0x0) + Op.SSTORE, nonce=0, - address=Address(0x089927DAF7E20B167E29C7DC686D18639371E6BF), # noqa: E501 - ) - # Source: raw - # 0x6000355415600957005b60203560003555 - coinbase = pre.deploy_contract( # noqa: F841 - code=Op.JUMPI( - pc=0x9, - condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), - ) - + Op.STOP - + Op.JUMPDEST - + Op.SSTORE( - key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) - ), - balance=46, - nonce=0, - address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest251.py b/tests/ported_static/stRandom/test_random_statetest251.py index c9bb1b29d08..194201527c7 100644 --- a/tests/ported_static/stRandom/test_random_statetest251.py +++ b/tests/ported_static/stRandom/test_random_statetest251.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest251( ) -> None: """Test_random_statetest251.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -53,7 +50,6 @@ def test_random_statetest251( "7f0000000000000000000000000000000000000000000000000000000000000000447f000000000000000000000000000000000000000000000000000000000000c3505b7f000000000000000000000000000000000000000000000000000000000000c3507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe417f00000000000000000000000000000000000000000000000000000000000000006867f1" # noqa: E501 ), nonce=0, - address=Address(0x75A7D42B361CA2FF027B1CBC1418D431D3C31F27), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -71,7 +67,6 @@ def test_random_statetest251( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest252.py b/tests/ported_static/stRandom/test_random_statetest252.py index ca773f8282f..092b4e019a5 100644 --- a/tests/ported_static/stRandom/test_random_statetest252.py +++ b/tests/ported_static/stRandom/test_random_statetest252.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest252( ) -> None: """Test_random_statetest252.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -52,7 +49,6 @@ def test_random_statetest252( code=bytes.fromhex("387b414543444043899e863a628b55"), balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xCB10591583644B914D53D1D9538866320D00BAD3), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -70,7 +66,6 @@ def test_random_statetest252( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest257.py b/tests/ported_static/stRandom/test_random_statetest257.py index 28530d23ed7..336a5e4d62e 100644 --- a/tests/ported_static/stRandom/test_random_statetest257.py +++ b/tests/ported_static/stRandom/test_random_statetest257.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest257( ) -> None: """Test_random_statetest257.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -53,7 +50,6 @@ def test_random_statetest257( "7f000000000000000000000000000000000000000000000000000000000000c3507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff337f000000000000000000000000000000000000000000000000000000000000000099447ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f000000000000000000000000000000000000000000000000000000000000c350735b9f81208b6f526655" # noqa: E501 ), nonce=0, - address=Address(0x85004625C8C4EAAAFED36A6ECB4835FDEA0F2B6B), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -71,7 +67,6 @@ def test_random_statetest257( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest260.py b/tests/ported_static/stRandom/test_random_statetest260.py index 99815fa7703..1890f239eb6 100644 --- a/tests/ported_static/stRandom/test_random_statetest260.py +++ b/tests/ported_static/stRandom/test_random_statetest260.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest260( ) -> None: """Test_random_statetest260.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -60,7 +57,6 @@ def test_random_statetest260( + Op.JUMP(pc=0x413B) + Op.SSTORE(key=Op.ADDMOD, value=Op.CALLCODE), nonce=0, - address=Address(0x912E90647207810A8FA1F685D7CD4A5BAA06E85D), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -78,7 +74,6 @@ def test_random_statetest260( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest261.py b/tests/ported_static/stRandom/test_random_statetest261.py index cd1f42684ca..bd3d7c0e6ae 100644 --- a/tests/ported_static/stRandom/test_random_statetest261.py +++ b/tests/ported_static/stRandom/test_random_statetest261.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest261( ) -> None: """Test_random_statetest261.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,15 +43,6 @@ def test_random_statetest261( gas_limit=9223372036854775807, ) - # Source: raw - # 0x7f0000000000000000000000000000000000000000000000000000000000000000447fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000017f00000000000000000000000000000000000000000000000000000000000000017f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000007f00000000000000000000000100000000000000000000000000000000000000001231b61993 # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=bytes.fromhex( - "7f0000000000000000000000000000000000000000000000000000000000000000447fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000017f00000000000000000000000000000000000000000000000000000000000000017f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e797f00000000000000000000000100000000000000000000000000000000000000001231b61993" # noqa: E501 - ), - nonce=0, - address=Address(0x439F60D09BA1D7E67458E16721B402EA66BB69EF), # noqa: E501 - ) # Source: raw # 0x6000355415600957005b60203560003555 coinbase = pre.deploy_contract( # noqa: F841 @@ -71,7 +59,14 @@ def test_random_statetest261( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: raw + # 0x7f0000000000000000000000000000000000000000000000000000000000000000447fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000017f00000000000000000000000000000000000000000000000000000000000000017f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000007f00000000000000000000000100000000000000000000000000000000000000001231b61993 # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=bytes.fromhex( + "7f0000000000000000000000000000000000000000000000000000000000000000447fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000017f00000000000000000000000000000000000000000000000000000000000000017f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e797f00000000000000000000000100000000000000000000000000000000000000001231b61993" # noqa: E501 + ), + nonce=0, + ) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest263.py b/tests/ported_static/stRandom/test_random_statetest263.py index be0119ce632..002ca645f8f 100644 --- a/tests/ported_static/stRandom/test_random_statetest263.py +++ b/tests/ported_static/stRandom/test_random_statetest263.py @@ -48,6 +48,23 @@ def test_random_statetest263( gas_limit=9223372036854775807, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: raw + # 0x6000355415600957005b60203560003555 + coinbase = pre.deploy_contract( # noqa: F841 + code=Op.JUMPI( + pc=0x9, + condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), + ) + + Op.STOP + + Op.JUMPDEST + + Op.SSTORE( + key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) + ), + balance=46, + nonce=0, + address=Address(0x945304EB96065B2A98B57A48A06AE28D285A71B5), # noqa: E501 + ) # Source: raw # 0x7f000000000000000000000000945304eb96065b2a98b57a48a06ae28d285a71b5807f000000000000000000000000000000000000000000000000000000000000c3507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f00000000000000000000000100000000000000000000000000000000000000007f000000000000000000000000945304eb96065b2a98b57a48a06ae28d285a71b57f000000000000000000000000000000000000000000000000000000000000c3507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0418625560005155 # noqa: E501 contract_0 = pre.deploy_contract( # noqa: F841 @@ -71,23 +88,6 @@ def test_random_statetest263( nonce=0, address=Address(0x095E7BAEA6A6C7C4C2DFEB977EFAC326AF552D87), # noqa: E501 ) - # Source: raw - # 0x6000355415600957005b60203560003555 - coinbase = pre.deploy_contract( # noqa: F841 - code=Op.JUMPI( - pc=0x9, - condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), - ) - + Op.STOP - + Op.JUMPDEST - + Op.SSTORE( - key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) - ), - balance=46, - nonce=0, - address=Address(0x945304EB96065B2A98B57A48A06AE28D285A71B5), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest265.py b/tests/ported_static/stRandom/test_random_statetest265.py index 761374323f9..3d6e9b7db7a 100644 --- a/tests/ported_static/stRandom/test_random_statetest265.py +++ b/tests/ported_static/stRandom/test_random_statetest265.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest265( ) -> None: """Test_random_statetest265.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -53,7 +50,6 @@ def test_random_statetest265( "7f000000000000000000000000000000000000000000000000000000000000c3507f000000000000000000000000000000000000000000000000000000000000c3503b7f000000000000000000000000000000000000000000000000000000000000c3506a7f00000000000000000000000000000000000000000000000000000000000000017f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000010000000000000000000000000000000000000000745b9b824070397f921960005155" # noqa: E501 ), nonce=0, - address=Address(0x897196687E79DB7A21310478E9BA6CC9D6C1209E), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -71,7 +67,6 @@ def test_random_statetest265( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest266.py b/tests/ported_static/stRandom/test_random_statetest266.py index c0070a5f7c5..99e4fe62d6a 100644 --- a/tests/ported_static/stRandom/test_random_statetest266.py +++ b/tests/ported_static/stRandom/test_random_statetest266.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest266( ) -> None: """Test_random_statetest266.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -63,7 +60,6 @@ def test_random_statetest266( + Op.MLOAD + Op.SSTORE, nonce=0, - address=Address(0x118B2FA6CFAB667C42CCB5C5EEEE4DC3AF2CAE15), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -81,7 +77,6 @@ def test_random_statetest266( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest271.py b/tests/ported_static/stRandom/test_random_statetest271.py index 5ed18719793..3d33887fec9 100644 --- a/tests/ported_static/stRandom/test_random_statetest271.py +++ b/tests/ported_static/stRandom/test_random_statetest271.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest271( ) -> None: """Test_random_statetest271.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,15 +43,6 @@ def test_random_statetest271( gas_limit=9223372036854775807, ) - # Source: raw - # 0x7f0000000000000000000000000000000000000000000000000000000000000001457f000000000000000000000000000000000000000000000000000000000000c350417f0000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000357f00000000000000000000000000000000000000000000000000000000000000000b6d7d958a0269995560005155 # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=bytes.fromhex( - "7f0000000000000000000000000000000000000000000000000000000000000001457f000000000000000000000000000000000000000000000000000000000000c350417f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e797f0000000000000000000000000000000000000000000000000000000000000000357f00000000000000000000000000000000000000000000000000000000000000000b6d7d958a0269995560005155" # noqa: E501 - ), - nonce=0, - address=Address(0xB45F31DD95616972767DD62E9B996E22566AAEC1), # noqa: E501 - ) # Source: raw # 0x6000355415600957005b60203560003555 coinbase = pre.deploy_contract( # noqa: F841 @@ -71,7 +59,14 @@ def test_random_statetest271( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: raw + # 0x7f0000000000000000000000000000000000000000000000000000000000000001457f000000000000000000000000000000000000000000000000000000000000c350417f0000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000357f00000000000000000000000000000000000000000000000000000000000000000b6d7d958a0269995560005155 # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=bytes.fromhex( + "7f0000000000000000000000000000000000000000000000000000000000000001457f000000000000000000000000000000000000000000000000000000000000c350417f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e797f0000000000000000000000000000000000000000000000000000000000000000357f00000000000000000000000000000000000000000000000000000000000000000b6d7d958a0269995560005155" # noqa: E501 + ), + nonce=0, + ) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest274.py b/tests/ported_static/stRandom/test_random_statetest274.py index faa36bae460..b095ed1ebcb 100644 --- a/tests/ported_static/stRandom/test_random_statetest274.py +++ b/tests/ported_static/stRandom/test_random_statetest274.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest274( ) -> None: """Test_random_statetest274.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,6 +43,22 @@ def test_random_statetest274( gas_limit=9223372036854775807, ) + # Source: raw + # 0x6000355415600957005b60203560003555 + coinbase = pre.deploy_contract( # noqa: F841 + code=Op.JUMPI( + pc=0x9, + condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), + ) + + Op.STOP + + Op.JUMPDEST + + Op.SSTORE( + key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) + ), + balance=46, + nonce=0, + address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 + ) # Source: raw # 0x7f000000000000000000000000ffffffffffffffffffffffffffffffffffffffffa405457f00000000000000000000000100000000000000000000000000000000000000007f00000000000000000000000088015a9a0542a13a051497514215 # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -67,25 +80,7 @@ def test_random_statetest274( + Op.MLOAD + Op.ISZERO(Op.TIMESTAMP), nonce=0, - address=Address(0x89CD1261AD57A9678AC21ADB1C06750567D685F4), # noqa: E501 - ) - # Source: raw - # 0x6000355415600957005b60203560003555 - coinbase = pre.deploy_contract( # noqa: F841 - code=Op.JUMPI( - pc=0x9, - condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), - ) - + Op.STOP - + Op.JUMPDEST - + Op.SSTORE( - key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) - ), - balance=46, - nonce=0, - address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest275.py b/tests/ported_static/stRandom/test_random_statetest275.py index f2446be9245..72f1dadc0e8 100644 --- a/tests/ported_static/stRandom/test_random_statetest275.py +++ b/tests/ported_static/stRandom/test_random_statetest275.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest275( ) -> None: """Test_random_statetest275.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -63,7 +60,6 @@ def test_random_statetest275( ), ), nonce=0, - address=Address(0x69D3E12FB87D7EFFEB9DED3D46879EBE02925B4E), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -81,7 +77,6 @@ def test_random_statetest275( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest282.py b/tests/ported_static/stRandom/test_random_statetest282.py index 2fd31c3f6cd..490fe3bac97 100644 --- a/tests/ported_static/stRandom/test_random_statetest282.py +++ b/tests/ported_static/stRandom/test_random_statetest282.py @@ -46,6 +46,23 @@ def test_random_statetest282( gas_limit=9223372036854775807, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: raw + # 0x6000355415600957005b60203560003555 + coinbase = pre.deploy_contract( # noqa: F841 + code=Op.JUMPI( + pc=0x9, + condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), + ) + + Op.STOP + + Op.JUMPDEST + + Op.SSTORE( + key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) + ), + balance=46, + nonce=0, + address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 + ) # Source: raw # 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000ff447f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff429d415560005155 # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -66,23 +83,6 @@ def test_random_statetest282( nonce=0, address=Address(0x14209E1C3D86DEC137A40E23CA3CEEC80421DA46), # noqa: E501 ) - # Source: raw - # 0x6000355415600957005b60203560003555 - coinbase = pre.deploy_contract( # noqa: F841 - code=Op.JUMPI( - pc=0x9, - condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), - ) - + Op.STOP - + Op.JUMPDEST - + Op.SSTORE( - key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) - ), - balance=46, - nonce=0, - address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest285.py b/tests/ported_static/stRandom/test_random_statetest285.py index 189e98f6ab8..c2e21d35bd7 100644 --- a/tests/ported_static/stRandom/test_random_statetest285.py +++ b/tests/ported_static/stRandom/test_random_statetest285.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest285( ) -> None: """Test_random_statetest285.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -52,7 +49,6 @@ def test_random_statetest285( code=bytes.fromhex("413443f3404242433389ff723810"), balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x42C6DF39ABD3D7DE1C64C50B0D8BB0E6085FB6AF), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -70,7 +66,6 @@ def test_random_statetest285( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest286.py b/tests/ported_static/stRandom/test_random_statetest286.py index 20cc937c830..0c4d5538e24 100644 --- a/tests/ported_static/stRandom/test_random_statetest286.py +++ b/tests/ported_static/stRandom/test_random_statetest286.py @@ -47,6 +47,23 @@ def test_random_statetest286( gas_limit=9223372036854775807, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: raw + # 0x6000355415600957005b60203560003555 + coinbase = pre.deploy_contract( # noqa: F841 + code=Op.JUMPI( + pc=0x9, + condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), + ) + + Op.STOP + + Op.JUMPDEST + + Op.SSTORE( + key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) + ), + balance=46, + nonce=0, + address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 + ) # Source: raw # 0x5a7f0000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f000000000000000000000000000000000000000000000000000000000000c3507f000000000000000000000000000000000000000000000000000000000000c3507f0000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000009582860460005155 # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -66,23 +83,6 @@ def test_random_statetest286( nonce=0, address=Address(0xF72E559DBB45A1B06CEFDB38D53632F23795EC0E), # noqa: E501 ) - # Source: raw - # 0x6000355415600957005b60203560003555 - coinbase = pre.deploy_contract( # noqa: F841 - code=Op.JUMPI( - pc=0x9, - condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), - ) - + Op.STOP - + Op.JUMPDEST - + Op.SSTORE( - key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) - ), - balance=46, - nonce=0, - address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest287.py b/tests/ported_static/stRandom/test_random_statetest287.py index 4664d93b3bf..88ee08e38b4 100644 --- a/tests/ported_static/stRandom/test_random_statetest287.py +++ b/tests/ported_static/stRandom/test_random_statetest287.py @@ -46,6 +46,23 @@ def test_random_statetest287( gas_limit=9223372036854775807, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: raw + # 0x6000355415600957005b60203560003555 + coinbase = pre.deploy_contract( # noqa: F841 + code=Op.JUMPI( + pc=0x9, + condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), + ) + + Op.STOP + + Op.JUMPDEST + + Op.SSTORE( + key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) + ), + balance=46, + nonce=0, + address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 + ) # Source: raw # 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000017f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000100000000000000000000000000000000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f000000000000000000000000ff7f00000000000000000000000100000000000000000000000000000000000000000759 # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -67,23 +84,6 @@ def test_random_statetest287( nonce=0, address=Address(0x31C15A33D833B7C1A49E3F28E6D2B2D975F578BD), # noqa: E501 ) - # Source: raw - # 0x6000355415600957005b60203560003555 - coinbase = pre.deploy_contract( # noqa: F841 - code=Op.JUMPI( - pc=0x9, - condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), - ) - + Op.STOP - + Op.JUMPDEST - + Op.SSTORE( - key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) - ), - balance=46, - nonce=0, - address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest288.py b/tests/ported_static/stRandom/test_random_statetest288.py index b209dd90594..9b7cf063be2 100644 --- a/tests/ported_static/stRandom/test_random_statetest288.py +++ b/tests/ported_static/stRandom/test_random_statetest288.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest288( ) -> None: """Test_random_statetest288.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -52,7 +49,6 @@ def test_random_statetest288( code=bytes.fromhex("76404140424242458c1f11410b"), balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x491EC6B2F8EC53C669DB820E13F80F4987CDD1E4), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -70,7 +66,6 @@ def test_random_statetest288( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest292.py b/tests/ported_static/stRandom/test_random_statetest292.py index 557f3c85da1..33dd50d35a6 100644 --- a/tests/ported_static/stRandom/test_random_statetest292.py +++ b/tests/ported_static/stRandom/test_random_statetest292.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest292( ) -> None: """Test_random_statetest292.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,6 +43,22 @@ def test_random_statetest292( gas_limit=9223372036854775807, ) + # Source: raw + # 0x6000355415600957005b60203560003555 + coinbase = pre.deploy_contract( # noqa: F841 + code=Op.JUMPI( + pc=0x9, + condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), + ) + + Op.STOP + + Op.JUMPDEST + + Op.SSTORE( + key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) + ), + balance=46, + nonce=0, + address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 + ) # Source: raw # 0x7f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000417f000000000000000000000000000000000000000000000000000000000000c3507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f00000000000000000000000000000000000000000000000000000000000000013063a09c825a338e # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -66,25 +79,7 @@ def test_random_statetest292( + Op.CALLER + Op.DUP15, nonce=0, - address=Address(0x6F333ED29BA1F098BA2B1F681F8E6131C7F3D2C2), # noqa: E501 - ) - # Source: raw - # 0x6000355415600957005b60203560003555 - coinbase = pre.deploy_contract( # noqa: F841 - code=Op.JUMPI( - pc=0x9, - condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), - ) - + Op.STOP - + Op.JUMPDEST - + Op.SSTORE( - key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) - ), - balance=46, - nonce=0, - address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest294.py b/tests/ported_static/stRandom/test_random_statetest294.py index b951f2aa971..e1ac3b28387 100644 --- a/tests/ported_static/stRandom/test_random_statetest294.py +++ b/tests/ported_static/stRandom/test_random_statetest294.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest294( ) -> None: """Test_random_statetest294.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -53,7 +50,6 @@ def test_random_statetest294( "057fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000100000000000000000000000000000000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe3c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9d0718f377825843028dfa02158878" # noqa: E501 ), nonce=0, - address=Address(0xEAF8F32047C68F3092D0C23D440C8F5E910865B0), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -71,7 +67,6 @@ def test_random_statetest294( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest295.py b/tests/ported_static/stRandom/test_random_statetest295.py index f6df4452515..2bfdf406f3e 100644 --- a/tests/ported_static/stRandom/test_random_statetest295.py +++ b/tests/ported_static/stRandom/test_random_statetest295.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest295( ) -> None: """Test_random_statetest295.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,15 +43,6 @@ def test_random_statetest295( gas_limit=9223372036854775807, ) - # Source: raw - # 0x7f0000000000000000000000007f0000000000000000000000007f000000000000000000000000000000000000000000000000000000000000c3507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f000000000000000000000000000000000000000000000000000000000000c3507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000c3507f00000000000000000000000031353a0b3c8b17eb55 # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=bytes.fromhex( - "7f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e797f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e797f000000000000000000000000000000000000000000000000000000000000c3507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f000000000000000000000000000000000000000000000000000000000000c3507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000c3507f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e7931353a0b3c8b17eb55" # noqa: E501 - ), - nonce=0, - address=Address(0x8B2CF534E72A2AF416B63FAE177D57DEDAEEC9E9), # noqa: E501 - ) # Source: raw # 0x6000355415600957005b60203560003555 coinbase = pre.deploy_contract( # noqa: F841 @@ -71,7 +59,14 @@ def test_random_statetest295( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: raw + # 0x7f0000000000000000000000007f0000000000000000000000007f000000000000000000000000000000000000000000000000000000000000c3507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f000000000000000000000000000000000000000000000000000000000000c3507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000c3507f00000000000000000000000031353a0b3c8b17eb55 # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=bytes.fromhex( + "7f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e797f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e797f000000000000000000000000000000000000000000000000000000000000c3507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f000000000000000000000000000000000000000000000000000000000000c3507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000c3507f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e7931353a0b3c8b17eb55" # noqa: E501 + ), + nonce=0, + ) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest296.py b/tests/ported_static/stRandom/test_random_statetest296.py index 82c36e2e27e..5a61d0e00b1 100644 --- a/tests/ported_static/stRandom/test_random_statetest296.py +++ b/tests/ported_static/stRandom/test_random_statetest296.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest296( ) -> None: """Test_random_statetest296.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,15 +43,6 @@ def test_random_statetest296( gas_limit=9223372036854775807, ) - # Source: raw - # 0x7f000000000000000000000000000000000000000000000000000000000000c3507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f00000000000000000000000100000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff417f00000000000000000000000000000000000000000000000000000000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f000000000000000000000000385b9655558f510a6c73 # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=bytes.fromhex( - "7f000000000000000000000000000000000000000000000000000000000000c3507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f00000000000000000000000100000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff417f00000000000000000000000000000000000000000000000000000000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e79385b9655558f510a6c73" # noqa: E501 - ), - nonce=0, - address=Address(0xC2006FD0F9C78C5404B143C53D5E4E7AA4B20324), # noqa: E501 - ) # Source: raw # 0x6000355415600957005b60203560003555 coinbase = pre.deploy_contract( # noqa: F841 @@ -71,7 +59,14 @@ def test_random_statetest296( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: raw + # 0x7f000000000000000000000000000000000000000000000000000000000000c3507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f00000000000000000000000100000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff417f00000000000000000000000000000000000000000000000000000000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f000000000000000000000000385b9655558f510a6c73 # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=bytes.fromhex( + "7f000000000000000000000000000000000000000000000000000000000000c3507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f00000000000000000000000100000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff417f00000000000000000000000000000000000000000000000000000000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e79385b9655558f510a6c73" # noqa: E501 + ), + nonce=0, + ) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest300.py b/tests/ported_static/stRandom/test_random_statetest300.py index e01413617c0..66861dbcf29 100644 --- a/tests/ported_static/stRandom/test_random_statetest300.py +++ b/tests/ported_static/stRandom/test_random_statetest300.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest300( ) -> None: """Test_random_statetest300.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -61,7 +58,6 @@ def test_random_statetest300( ] + Op.SSTORE(key=Op.MLOAD(offset=0x0), value=Op.PUSH32[0xC350]), nonce=0, - address=Address(0xC4E0B0EE0EF1C851E1FF17D15C1E0EC5318B2A07), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -79,7 +75,6 @@ def test_random_statetest300( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest302.py b/tests/ported_static/stRandom/test_random_statetest302.py index 806cb9b87d1..b1efad7461a 100644 --- a/tests/ported_static/stRandom/test_random_statetest302.py +++ b/tests/ported_static/stRandom/test_random_statetest302.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest302( ) -> None: """Test_random_statetest302.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,23 +43,6 @@ def test_random_statetest302( gas_limit=9223372036854775807, ) - # Source: raw - # 0x7f0000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000010000000000000000000000000000000000000000971a7f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff447f00000000000000000000000000000000000000000000000000000000000000006989206c0b8a01867bf155 # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.PUSH32[0x4F3F701464972E74606D6EA82D4D3080599A0E79] - + Op.PUSH32[ - 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - ] - + Op.PUSH32[0x10000000000000000000000000000000000000000] - + Op.SWAP8 - + Op.BYTE - + Op.PUSH32[0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF] - + Op.PREVRANDAO - + Op.PUSH32[0x0] - + Op.PUSH10[0x89206C0B8A01867BF155], - nonce=0, - address=Address(0xFCBCBA7CBA75059C569BE5870CA9B87A68DA093A), # noqa: E501 - ) # Source: raw # 0x6000355415600957005b60203560003555 coinbase = pre.deploy_contract( # noqa: F841 @@ -79,7 +59,22 @@ def test_random_statetest302( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: raw + # 0x7f0000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000010000000000000000000000000000000000000000971a7f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff447f00000000000000000000000000000000000000000000000000000000000000006989206c0b8a01867bf155 # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.PUSH32[0x4F3F701464972E74606D6EA82D4D3080599A0E79] + + Op.PUSH32[ + 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + ] + + Op.PUSH32[0x10000000000000000000000000000000000000000] + + Op.SWAP8 + + Op.BYTE + + Op.PUSH32[0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF] + + Op.PREVRANDAO + + Op.PUSH32[0x0] + + Op.PUSH10[0x89206C0B8A01867BF155], + nonce=0, + ) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest303.py b/tests/ported_static/stRandom/test_random_statetest303.py index 01abb28e1bf..cf1d7bebbec 100644 --- a/tests/ported_static/stRandom/test_random_statetest303.py +++ b/tests/ported_static/stRandom/test_random_statetest303.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest303( ) -> None: """Test_random_statetest303.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,15 +43,6 @@ def test_random_statetest303( gas_limit=9223372036854775807, ) - # Source: raw - # 0x7f0000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000017f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000457f00000000000000000000000100000000000000000000000000000000000000007f0000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff441a35803a0ba46699913755 # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=bytes.fromhex( - "7f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e797f00000000000000000000000000000000000000000000000000000000000000017f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e79457f00000000000000000000000100000000000000000000000000000000000000007f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e797fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff441a35803a0ba46699913755" # noqa: E501 - ), - nonce=0, - address=Address(0xBDFD7B81900BFD715187BFA71345114F62FB7494), # noqa: E501 - ) # Source: raw # 0x6000355415600957005b60203560003555 coinbase = pre.deploy_contract( # noqa: F841 @@ -71,7 +59,14 @@ def test_random_statetest303( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: raw + # 0x7f0000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000017f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000457f00000000000000000000000100000000000000000000000000000000000000007f0000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff441a35803a0ba46699913755 # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=bytes.fromhex( + "7f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e797f00000000000000000000000000000000000000000000000000000000000000017f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e79457f00000000000000000000000100000000000000000000000000000000000000007f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e797fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff441a35803a0ba46699913755" # noqa: E501 + ), + nonce=0, + ) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest304.py b/tests/ported_static/stRandom/test_random_statetest304.py index c8cb6b16f5c..b1e7d637b36 100644 --- a/tests/ported_static/stRandom/test_random_statetest304.py +++ b/tests/ported_static/stRandom/test_random_statetest304.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest304( ) -> None: """Test_random_statetest304.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -73,7 +70,6 @@ def test_random_statetest304( + Op.MLOAD(offset=0x0) + Op.SSTORE, nonce=0, - address=Address(0xEED16AB98D10EE33A19828F9FD044B86553A6F06), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -91,7 +87,6 @@ def test_random_statetest304( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest306.py b/tests/ported_static/stRandom/test_random_statetest306.py index 91a13c84119..17f34a3a28f 100644 --- a/tests/ported_static/stRandom/test_random_statetest306.py +++ b/tests/ported_static/stRandom/test_random_statetest306.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,9 +33,7 @@ def test_random_statetest306( ) -> None: """Test_random_statetest306.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -47,6 +44,22 @@ def test_random_statetest306( gas_limit=9223372036854775807, ) + # Source: raw + # 0x6000355415600957005b60203560003555 + coinbase = pre.deploy_contract( # noqa: F841 + code=Op.JUMPI( + pc=0x9, + condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), + ) + + Op.STOP + + Op.JUMPDEST + + Op.SSTORE( + key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) + ), + balance=46, + nonce=0, + address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 + ) # Source: raw # 0x60d36e84517b3285b0867cd4144ff5f688d60b6a07592395d95e37246c06736c78c9fa9e4b5e5db5a4b6ac4ced6dd169cda4fc3c11e9a6f0b4cec2f56019617df7a363788c155473412582d556f06c6d5864cf4be6a2d1318b8e40ba1377454cc8d0510823591dee680d7dddc8c149bfcc24c65c69e66c2b9d3e28f05faf2587c446509405759901ec0946bf3d786827225faf5da81e158cd9b2b4666f71a29fbe89f77c340dcbd7d67aedf852136b6c76affb38beb802e0af269e65c22f52807c677b5e2c7d8c473aff18fe912c7ed21ab60fe5d4916a76c93539332c6ab16b3f81b990f4b34b0228c7f5b1656bdd21d458717330e4be7d7bb91cc95818140eef086cd82d2d6f0d66c92a7ffb27125a625c77a8967268f212339508d6f60d9c93a9e201f2ae883cb9752460ec0dcb4ba3b84a4db899c29f08ef1b0f506b4f3c05601f6001601060116328b0eb5f73630a4eb375f17df238e15d7d51240301521f173d628e7a68d01354faaf406ce541f753db89671f6aedcf261f632e6244e8c3799a2de002f15ba4681fd3c609c0f522dfd964f95def9926f812327781b2de33196cc22776e9b26d8a0d65c57bdac987d0b3e0db66c0f1232c7add3365f209cc53592f73502d0c5889b1bbf131f8bb6a6b5e2e067b9ef676768d48b3f5790c3304e046f0a9c8a838a0596583d6258f196dcf982a9de5cec4f871470e7a6c9289615e1e7d140fdc038972916223fb8012e29350295f3919cb28a36411845930d5e91b68510faac5e0677953467cedb653f73818749e8cbaf15a5d64ba7ee5cabc98137167b924a2aac9147f159713d115e0225a84a54d6471dc7a01a7e4e814145305c9d04d2880c5be42fc6c52ced3e983d91a580a4142021b73e99c3180117914b9ad03c580a8dac862be9b599a73ccfcfb230bcffc425c13c265f3b06b8c9f104c10752740765567374c211601a5f51501d18c48081998ff7b7a8bfdf0bec9eb4385b554870a996e0cab662d991d0e5f9357f2f99f98 # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -122,23 +135,6 @@ def test_random_statetest306( nonce=0, address=Address(0xCE8D3E84F685B2EED55366547289AC4D314DE277), # noqa: E501 ) - # Source: raw - # 0x6000355415600957005b60203560003555 - coinbase = pre.deploy_contract( # noqa: F841 - code=Op.JUMPI( - pc=0x9, - condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), - ) - + Op.STOP - + Op.JUMPDEST - + Op.SSTORE( - key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) - ), - balance=46, - nonce=0, - address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest307.py b/tests/ported_static/stRandom/test_random_statetest307.py index 4e6aae35945..b2a8f51c93f 100644 --- a/tests/ported_static/stRandom/test_random_statetest307.py +++ b/tests/ported_static/stRandom/test_random_statetest307.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_random_statetest307( """Test_random_statetest307.""" coinbase = Address(0x945304EB96065B2A98B57A48A06AE28D285A71B5) contract_0 = Address(0x095E7BAEA6A6C7C4C2DFEB977EFAC326AF552D87) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -48,23 +45,6 @@ def test_random_statetest307( gas_limit=9223372036854775807, ) - # Source: raw - # 0x7f000000000000000000000000945304eb96065b2a98b57a48a06ae28d285a71b57f000000000000000000000000000000000000000000000000000000000000c3507f000000000000000000000000945304eb96065b2a98b57a48a06ae28d285a71b5547f000000000000000000000000000000000000000000000000000000000000c3507f000000000000000000000000000000000000000000000000000000000000c3507f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000037f055 # noqa: E501 - contract_0 = pre.deploy_contract( # noqa: F841 - code=Op.PUSH32[0x945304EB96065B2A98B57A48A06AE28D285A71B5] - + Op.PUSH32[0xC350] - + Op.SLOAD(key=Op.PUSH32[0x945304EB96065B2A98B57A48A06AE28D285A71B5]) - + Op.PUSH32[0xC350] - + Op.CALLDATACOPY( - dest_offset=Op.PUSH32[0x0], - offset=Op.PUSH32[0x0], - size=Op.PUSH32[0xC350], - ) - + Op.CREATE - + Op.SSTORE, - nonce=0, - address=Address(0x095E7BAEA6A6C7C4C2DFEB977EFAC326AF552D87), # noqa: E501 - ) # Source: raw # 0x6000355415600957005b60203560003555 coinbase = pre.deploy_contract( # noqa: F841 @@ -81,7 +61,22 @@ def test_random_statetest307( nonce=0, address=Address(0x945304EB96065B2A98B57A48A06AE28D285A71B5), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: raw + # 0x7f000000000000000000000000945304eb96065b2a98b57a48a06ae28d285a71b57f000000000000000000000000000000000000000000000000000000000000c3507f000000000000000000000000945304eb96065b2a98b57a48a06ae28d285a71b5547f000000000000000000000000000000000000000000000000000000000000c3507f000000000000000000000000000000000000000000000000000000000000c3507f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000037f055 # noqa: E501 + contract_0 = pre.deploy_contract( # noqa: F841 + code=Op.PUSH32[0x945304EB96065B2A98B57A48A06AE28D285A71B5] + + Op.PUSH32[0xC350] + + Op.SLOAD(key=Op.PUSH32[0x945304EB96065B2A98B57A48A06AE28D285A71B5]) + + Op.PUSH32[0xC350] + + Op.CALLDATACOPY( + dest_offset=Op.PUSH32[0x0], + offset=Op.PUSH32[0x0], + size=Op.PUSH32[0xC350], + ) + + Op.CREATE + + Op.SSTORE, + nonce=0, + ) tx = Transaction( sender=sender, @@ -95,11 +90,13 @@ def test_random_statetest307( post = { contract_0: Account(storage={}, nonce=0), - Address( - 0x62C01474F089B07DAE603491675DC5B5748F7049 + compute_create_address( + address=compute_create_address(address=contract_0, nonce=0), + nonce=0, ): Account.NONEXISTENT, - Address( - 0x91ED00A0A906270D466AF043C4E111DADCA970A3 + compute_create_address( + address=compute_create_address(address=contract_0, nonce=0), + nonce=1, ): Account.NONEXISTENT, coinbase: Account(storage={}, nonce=0), compute_create_address( diff --git a/tests/ported_static/stRandom/test_random_statetest308.py b/tests/ported_static/stRandom/test_random_statetest308.py index 5e1fb34da37..9dde60983e7 100644 --- a/tests/ported_static/stRandom/test_random_statetest308.py +++ b/tests/ported_static/stRandom/test_random_statetest308.py @@ -48,6 +48,23 @@ def test_random_statetest308( gas_limit=9223372036854775807, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: raw + # 0x6000355415600957005b60203560003555 + coinbase = pre.deploy_contract( # noqa: F841 + code=Op.JUMPI( + pc=0x9, + condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), + ) + + Op.STOP + + Op.JUMPDEST + + Op.SSTORE( + key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) + ), + balance=46, + nonce=0, + address=Address(0x945304EB96065B2A98B57A48A06AE28D285A71B5), # noqa: E501 + ) # Source: raw # 0x7f000000000000000000000000945304eb96065b2a98b57a48a06ae28d285a71b57f000000000000000000000000945304eb96065b2a98b57a48a06ae28d285a71b5357f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe427f000000000000000000000000000000000000000000000000000000000000c3507f0000000000000000000000010000000000000000000000000000000000000000085a01096630f38c9a60005155 # noqa: E501 contract_0 = pre.deploy_contract( # noqa: F841 @@ -73,23 +90,6 @@ def test_random_statetest308( nonce=0, address=Address(0x095E7BAEA6A6C7C4C2DFEB977EFAC326AF552D87), # noqa: E501 ) - # Source: raw - # 0x6000355415600957005b60203560003555 - coinbase = pre.deploy_contract( # noqa: F841 - code=Op.JUMPI( - pc=0x9, - condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), - ) - + Op.STOP - + Op.JUMPDEST - + Op.SSTORE( - key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) - ), - balance=46, - nonce=0, - address=Address(0x945304EB96065B2A98B57A48A06AE28D285A71B5), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest309.py b/tests/ported_static/stRandom/test_random_statetest309.py index edf2726755f..114d8e3352a 100644 --- a/tests/ported_static/stRandom/test_random_statetest309.py +++ b/tests/ported_static/stRandom/test_random_statetest309.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest309( ) -> None: """Test_random_statetest309.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -55,7 +52,6 @@ def test_random_statetest309( ), balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x80F26BF6EA7E69C54687BEB66D90438E7F0286B4), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -73,7 +69,6 @@ def test_random_statetest309( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest312.py b/tests/ported_static/stRandom/test_random_statetest312.py index de22d083b93..7b559d0f92a 100644 --- a/tests/ported_static/stRandom/test_random_statetest312.py +++ b/tests/ported_static/stRandom/test_random_statetest312.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest312( ) -> None: """Test_random_statetest312.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,15 +43,6 @@ def test_random_statetest312( gas_limit=9223372036854775807, ) - # Source: raw - # 0x7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff427f0000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000187b55 # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=bytes.fromhex( - "7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e797f00000000000000000000000000000000000000000000000000000000000000017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff427f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e797f0000000000000000000000000000000000000000000000000000000000000000187b55" # noqa: E501 - ), - nonce=0, - address=Address(0xA7A903566ABEAB1B0A9EB4F54909E6B00848A2A6), # noqa: E501 - ) # Source: raw # 0x6000355415600957005b60203560003555 coinbase = pre.deploy_contract( # noqa: F841 @@ -71,7 +59,14 @@ def test_random_statetest312( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: raw + # 0x7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff427f0000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000187b55 # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=bytes.fromhex( + "7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e797f00000000000000000000000000000000000000000000000000000000000000017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff427f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e797f0000000000000000000000000000000000000000000000000000000000000000187b55" # noqa: E501 + ), + nonce=0, + ) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest313.py b/tests/ported_static/stRandom/test_random_statetest313.py index 89fb9065d7f..ae122af2e4b 100644 --- a/tests/ported_static/stRandom/test_random_statetest313.py +++ b/tests/ported_static/stRandom/test_random_statetest313.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest313( ) -> None: """Test_random_statetest313.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -65,7 +62,6 @@ def test_random_statetest313( + Op.DUP13 * 2 + Op.SSTORE(key=Op.MLOAD(offset=0x0), value=Op.GAS), nonce=0, - address=Address(0x9F0B64FB000394E77826EA5EE94FE9CF30284BF2), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -83,7 +79,6 @@ def test_random_statetest313( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest320.py b/tests/ported_static/stRandom/test_random_statetest320.py index 6828cf1b2e1..7e08ad0c477 100644 --- a/tests/ported_static/stRandom/test_random_statetest320.py +++ b/tests/ported_static/stRandom/test_random_statetest320.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest320( ) -> None: """Test_random_statetest320.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,15 +43,6 @@ def test_random_statetest320( gas_limit=9223372036854775807, ) - # Source: raw - # 0x7f00000000000000000000000100000000000000000000000000000000000000007f0000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff45457f000000000000000000000000000000000000000000000000000000000000c3507f0000000000000000000000007f000000000000000000000000000000000000000000000000000000000000c3505b0a36095511805131558f14fc3b # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=bytes.fromhex( - "7f00000000000000000000000100000000000000000000000000000000000000007f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e797fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff45457f000000000000000000000000000000000000000000000000000000000000c3507f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e797f000000000000000000000000000000000000000000000000000000000000c3505b0a36095511805131558f14fc3b" # noqa: E501 - ), - nonce=0, - address=Address(0x10450E65DFDE8718B82D012B8B2A6005E1A164DD), # noqa: E501 - ) # Source: raw # 0x6000355415600957005b60203560003555 coinbase = pre.deploy_contract( # noqa: F841 @@ -71,7 +59,14 @@ def test_random_statetest320( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: raw + # 0x7f00000000000000000000000100000000000000000000000000000000000000007f0000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff45457f000000000000000000000000000000000000000000000000000000000000c3507f0000000000000000000000007f000000000000000000000000000000000000000000000000000000000000c3505b0a36095511805131558f14fc3b # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=bytes.fromhex( + "7f00000000000000000000000100000000000000000000000000000000000000007f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e797fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff45457f000000000000000000000000000000000000000000000000000000000000c3507f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e797f000000000000000000000000000000000000000000000000000000000000c3505b0a36095511805131558f14fc3b" # noqa: E501 + ), + nonce=0, + ) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest321.py b/tests/ported_static/stRandom/test_random_statetest321.py index 2d4faa7acbe..43ef478e72e 100644 --- a/tests/ported_static/stRandom/test_random_statetest321.py +++ b/tests/ported_static/stRandom/test_random_statetest321.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest321( ) -> None: """Test_random_statetest321.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -72,7 +69,6 @@ def test_random_statetest321( + Op.MLOAD + Op.SSTORE, nonce=0, - address=Address(0x4F557114709BBDB63366DA99F52FAE471C987703), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -90,7 +86,6 @@ def test_random_statetest321( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest323.py b/tests/ported_static/stRandom/test_random_statetest323.py index 3ea11b4e0a5..8a9ebfa5ddf 100644 --- a/tests/ported_static/stRandom/test_random_statetest323.py +++ b/tests/ported_static/stRandom/test_random_statetest323.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest323( ) -> None: """Test_random_statetest323.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,15 +43,6 @@ def test_random_statetest323( gas_limit=9223372036854775807, ) - # Source: raw - # 0x6f7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe74977f000000000000000000000000000000000000000000000000000000000000c3506f6b7936181136392060005155 # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=bytes.fromhex( - "6f7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e797ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe74977f000000000000000000000000000000000000000000000000000000000000c3506f6b7936181136392060005155" # noqa: E501 - ), - nonce=0, - address=Address(0x70DA9B48406E4B67E6CC0458D7376116D08EB806), # noqa: E501 - ) # Source: raw # 0x6000355415600957005b60203560003555 coinbase = pre.deploy_contract( # noqa: F841 @@ -71,7 +59,14 @@ def test_random_statetest323( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: raw + # 0x6f7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe74977f000000000000000000000000000000000000000000000000000000000000c3506f6b7936181136392060005155 # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=bytes.fromhex( + "6f7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e797ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe74977f000000000000000000000000000000000000000000000000000000000000c3506f6b7936181136392060005155" # noqa: E501 + ), + nonce=0, + ) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest326.py b/tests/ported_static/stRandom/test_random_statetest326.py index 8a20c16dd8c..d5cc7e9155e 100644 --- a/tests/ported_static/stRandom/test_random_statetest326.py +++ b/tests/ported_static/stRandom/test_random_statetest326.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,9 +33,7 @@ def test_random_statetest326( ) -> None: """Test_random_statetest326.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -54,7 +51,6 @@ def test_random_statetest326( "7f000000000000000000000000000000000000000000000000000000000000000034577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000100000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000426259cb6142a1196e3168c986758aa4" # noqa: E501 ), nonce=0, - address=Address(0xE9A32A9AD98C02FA9521B9AB066BCC683A8AB126), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -72,7 +68,6 @@ def test_random_statetest326( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest327.py b/tests/ported_static/stRandom/test_random_statetest327.py index a81d37924c5..69a0ef27e4b 100644 --- a/tests/ported_static/stRandom/test_random_statetest327.py +++ b/tests/ported_static/stRandom/test_random_statetest327.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest327( ) -> None: """Test_random_statetest327.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -53,7 +50,6 @@ def test_random_statetest327( "457ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000001458b5554397513" # noqa: E501 ), nonce=0, - address=Address(0x85F19E026A6F76DB9583E20941653F5E029C9671), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -71,7 +67,6 @@ def test_random_statetest327( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest33.py b/tests/ported_static/stRandom/test_random_statetest33.py index 8c0577035c5..ef3cfc91ce3 100644 --- a/tests/ported_static/stRandom/test_random_statetest33.py +++ b/tests/ported_static/stRandom/test_random_statetest33.py @@ -47,6 +47,7 @@ def test_random_statetest33( gas_limit=9223372036854775807, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: raw # 0x7f000000000000000000000000000000000000000000000000000000000000c3507f00000000000000000000000000000000000000000000000000000000000000015a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f00000000000000000000000000000000000000000000000000000000000000017f000000000000000000000000000000000000000000000000000000000000c3506f6940566279386017a362876372698f5560005155 # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -84,7 +85,6 @@ def test_random_statetest33( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest335.py b/tests/ported_static/stRandom/test_random_statetest335.py index 2d59c29a1af..7196d9db3ec 100644 --- a/tests/ported_static/stRandom/test_random_statetest335.py +++ b/tests/ported_static/stRandom/test_random_statetest335.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest335( ) -> None: """Test_random_statetest335.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -53,7 +50,6 @@ def test_random_statetest335( "7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000100000000000000000000000000000000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f00000000000000000000000100000000000000000000000000000000000000007f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000c350617e7608617c95f3ff584076e07b5a4460005155" # noqa: E501 ), nonce=0, - address=Address(0xA3A709FECE04184D06401D32D39F133EA3B800A8), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -71,7 +67,6 @@ def test_random_statetest335( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest336.py b/tests/ported_static/stRandom/test_random_statetest336.py index 1297395a4e3..408d267cf3b 100644 --- a/tests/ported_static/stRandom/test_random_statetest336.py +++ b/tests/ported_static/stRandom/test_random_statetest336.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest336( ) -> None: """Test_random_statetest336.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -56,7 +53,6 @@ def test_random_statetest336( + Op.COINBASE, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xF3C8D5EA3CE820D6B26253D4D1D9106008C757DB), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -74,7 +70,6 @@ def test_random_statetest336( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest340.py b/tests/ported_static/stRandom/test_random_statetest340.py index 3637a979161..4fd262687f8 100644 --- a/tests/ported_static/stRandom/test_random_statetest340.py +++ b/tests/ported_static/stRandom/test_random_statetest340.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest340( ) -> None: """Test_random_statetest340.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,6 +43,22 @@ def test_random_statetest340( gas_limit=9223372036854775807, ) + # Source: raw + # 0x6000355415600957005b60203560003555 + coinbase = pre.deploy_contract( # noqa: F841 + code=Op.JUMPI( + pc=0x9, + condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), + ) + + Op.STOP + + Op.JUMPDEST + + Op.SSTORE( + key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) + ), + balance=46, + nonce=0, + address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 + ) # Source: raw # 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000c3507f000000000000000000000000547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff095560005155 # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -65,25 +78,7 @@ def test_random_statetest340( + Op.MLOAD(offset=0x0) + Op.SSTORE, nonce=0, - address=Address(0xE55B3D86C30351B3B3C173C83C73ACEDEA2578AE), # noqa: E501 - ) - # Source: raw - # 0x6000355415600957005b60203560003555 - coinbase = pre.deploy_contract( # noqa: F841 - code=Op.JUMPI( - pc=0x9, - condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), - ) - + Op.STOP - + Op.JUMPDEST - + Op.SSTORE( - key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) - ), - balance=46, - nonce=0, - address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest341.py b/tests/ported_static/stRandom/test_random_statetest341.py index 61082f6017e..0a99e3f670b 100644 --- a/tests/ported_static/stRandom/test_random_statetest341.py +++ b/tests/ported_static/stRandom/test_random_statetest341.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest341( ) -> None: """Test_random_statetest341.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,23 +43,6 @@ def test_random_statetest341( gas_limit=9223372036854775807, ) - # Source: raw - # 0x427f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000017f0000000000000000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff583481f36a85646d53671639175b940860005155 # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.TIMESTAMP - + Op.PUSH32[0x0] - + Op.PUSH32[0x1] - + Op.PUSH32[0x4F3F701464972E74606D6EA82D4D3080599A0E79] - + Op.PUSH32[ - 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE - ] - + Op.PUSH32[0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF] * 2 - + Op.PC - + Op.RETURN(offset=Op.DUP2, size=Op.CALLVALUE) - + Op.SSTORE(key=Op.MLOAD(offset=0x0), value=0x85646D53671639175B9408), - nonce=0, - address=Address(0xB2DA1F608A7E0626E721677FA30FC46D2D99C655), # noqa: E501 - ) # Source: raw # 0x6000355415600957005b60203560003555 coinbase = pre.deploy_contract( # noqa: F841 @@ -79,7 +59,22 @@ def test_random_statetest341( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: raw + # 0x427f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000017f0000000000000000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff583481f36a85646d53671639175b940860005155 # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.TIMESTAMP + + Op.PUSH32[0x0] + + Op.PUSH32[0x1] + + Op.PUSH32[0x4F3F701464972E74606D6EA82D4D3080599A0E79] + + Op.PUSH32[ + 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE + ] + + Op.PUSH32[0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF] * 2 + + Op.PC + + Op.RETURN(offset=Op.DUP2, size=Op.CALLVALUE) + + Op.SSTORE(key=Op.MLOAD(offset=0x0), value=0x85646D53671639175B9408), + nonce=0, + ) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest345.py b/tests/ported_static/stRandom/test_random_statetest345.py index d1195e58e8a..9959a5d94ba 100644 --- a/tests/ported_static/stRandom/test_random_statetest345.py +++ b/tests/ported_static/stRandom/test_random_statetest345.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest345( ) -> None: """Test_random_statetest345.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -53,7 +50,6 @@ def test_random_statetest345( "417f0000000000000000000000000000000000000000000000000000000000000001447fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f000000000000000000000000000000000000000000000000000000000000000035420b417f056699168fa16d8d94113b60005155" # noqa: E501 ), nonce=0, - address=Address(0xC4B87D307584985FC7448651ECDA800B709D96A2), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -71,7 +67,6 @@ def test_random_statetest345( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest346.py b/tests/ported_static/stRandom/test_random_statetest346.py index 5419273fdcc..3adafb84a38 100644 --- a/tests/ported_static/stRandom/test_random_statetest346.py +++ b/tests/ported_static/stRandom/test_random_statetest346.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest346( ) -> None: """Test_random_statetest346.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -68,7 +65,6 @@ def test_random_statetest346( + Op.MLOAD(offset=0x0) + Op.SSTORE, nonce=0, - address=Address(0xF27D15CBABF0EE5FF4E3C4F9F754AED2EFB556C6), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -86,7 +82,6 @@ def test_random_statetest346( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest347.py b/tests/ported_static/stRandom/test_random_statetest347.py index a13a820cb93..c4ad3281d1e 100644 --- a/tests/ported_static/stRandom/test_random_statetest347.py +++ b/tests/ported_static/stRandom/test_random_statetest347.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -26,16 +25,13 @@ ["state_tests/stRandom/randomStatetest347Filler.json"], ) @pytest.mark.valid_from("Cancun") -@pytest.mark.pre_alloc_mutable def test_random_statetest347( state_test: StateTestFiller, pre: Alloc, ) -> None: """Test_random_statetest347.""" coinbase = Address(0xA7F7C8EF9BBBCFB0F7E81C1FD46BB732FBA60592) - sender = EOA( - key=0x1F2F6944F70460E655546D414267BD3491A2DD9DAFB2280605404C858990D053 - ) + sender = pre.fund_eoa(amount=0x1024D289465FA51769) env = Environment( fee_recipient=coinbase, @@ -159,7 +155,6 @@ def test_random_statetest347( + Op.SWAP6, balance=0x33498455, nonce=233, - address=Address(0x97BC67B6EE773E59E516D02EDB13B971C3CBD856), # noqa: E501 ) # Source: raw # 0x36 @@ -167,9 +162,7 @@ def test_random_statetest347( code=Op.CALLDATASIZE, balance=0x4EA91708, nonce=89, - address=Address(0x79D9FBE6AC70917CB2E16EC4CD32968CE19C724D), # noqa: E501 ) - pre[sender] = Account(balance=0x1024D289465FA51769) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest350.py b/tests/ported_static/stRandom/test_random_statetest350.py index c5bb975caa1..42f404eea9c 100644 --- a/tests/ported_static/stRandom/test_random_statetest350.py +++ b/tests/ported_static/stRandom/test_random_statetest350.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest350( ) -> None: """Test_random_statetest350.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -67,7 +64,6 @@ def test_random_statetest350( ), ), nonce=0, - address=Address(0xE81D688B7D2E6264DEEC5B61C7E8E02426C7256F), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -85,7 +81,6 @@ def test_random_statetest350( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest352.py b/tests/ported_static/stRandom/test_random_statetest352.py index 9d5e3dd6f5d..c375ac9de31 100644 --- a/tests/ported_static/stRandom/test_random_statetest352.py +++ b/tests/ported_static/stRandom/test_random_statetest352.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest352( ) -> None: """Test_random_statetest352.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,6 +43,22 @@ def test_random_statetest352( gas_limit=9223372036854775807, ) + # Source: raw + # 0x6000355415600957005b60203560003555 + coinbase = pre.deploy_contract( # noqa: F841 + code=Op.JUMPI( + pc=0x9, + condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), + ) + + Op.STOP + + Op.JUMPDEST + + Op.SSTORE( + key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) + ), + balance=46, + nonce=0, + address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 + ) # Source: raw # 0x7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f00000000000000000000000000000000000000000000000000000000000000003a457f000000000000000000000000000000000000000000000000000000000000c3507f0000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000013428284f28a980b4539a39d1408 # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -76,25 +89,7 @@ def test_random_statetest352( + Op.EQ + Op.ADDMOD, nonce=0, - address=Address(0x936CFC08BEE110B939B632FE581FDC10E3484E0F), # noqa: E501 - ) - # Source: raw - # 0x6000355415600957005b60203560003555 - coinbase = pre.deploy_contract( # noqa: F841 - code=Op.JUMPI( - pc=0x9, - condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), - ) - + Op.STOP - + Op.JUMPDEST - + Op.SSTORE( - key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) - ), - balance=46, - nonce=0, - address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest353.py b/tests/ported_static/stRandom/test_random_statetest353.py index 0f866e32de3..23459f796bc 100644 --- a/tests/ported_static/stRandom/test_random_statetest353.py +++ b/tests/ported_static/stRandom/test_random_statetest353.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest353( ) -> None: """Test_random_statetest353.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,15 +43,6 @@ def test_random_statetest353( gas_limit=9223372036854775807, ) - # Source: raw - # 0x7f0000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000017f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000010000000000000000000000000000000000000000120ba49036880f86529655 # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=bytes.fromhex( - "7f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e797f00000000000000000000000000000000000000000000000000000000000000017f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000010000000000000000000000000000000000000000120ba49036880f86529655" # noqa: E501 - ), - nonce=0, - address=Address(0xDFB2DE0E2DC6BCF9941A4B2040AF9A9CD6CC8CA7), # noqa: E501 - ) # Source: raw # 0x6000355415600957005b60203560003555 coinbase = pre.deploy_contract( # noqa: F841 @@ -71,7 +59,14 @@ def test_random_statetest353( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: raw + # 0x7f0000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000017f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000010000000000000000000000000000000000000000120ba49036880f86529655 # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=bytes.fromhex( + "7f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e797f00000000000000000000000000000000000000000000000000000000000000017f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000010000000000000000000000000000000000000000120ba49036880f86529655" # noqa: E501 + ), + nonce=0, + ) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest355.py b/tests/ported_static/stRandom/test_random_statetest355.py index 6d28a80f3b5..b33a0979d45 100644 --- a/tests/ported_static/stRandom/test_random_statetest355.py +++ b/tests/ported_static/stRandom/test_random_statetest355.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest355( ) -> None: """Test_random_statetest355.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,15 +43,6 @@ def test_random_statetest355( gas_limit=9223372036854775807, ) - # Source: raw - # 0x7f00000000000000000000000000000000000000000000000000000000000000017f0000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000457f000000000000000000000000000000000000000000000000000000000000c3507f0000000000000000000000000000000000000000000000000000000000000001666b56e87c5a499d5389306e55 # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=bytes.fromhex( - "7f00000000000000000000000000000000000000000000000000000000000000017f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e797f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e79457f000000000000000000000000000000000000000000000000000000000000c3507f0000000000000000000000000000000000000000000000000000000000000001666b56e87c5a499d5389306e55" # noqa: E501 - ), - nonce=0, - address=Address(0xCECD2AE07D64D406743F25363AF5C2CD6E8FFC2A), # noqa: E501 - ) # Source: raw # 0x6000355415600957005b60203560003555 coinbase = pre.deploy_contract( # noqa: F841 @@ -71,7 +59,14 @@ def test_random_statetest355( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: raw + # 0x7f00000000000000000000000000000000000000000000000000000000000000017f0000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000457f000000000000000000000000000000000000000000000000000000000000c3507f0000000000000000000000000000000000000000000000000000000000000001666b56e87c5a499d5389306e55 # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=bytes.fromhex( + "7f00000000000000000000000000000000000000000000000000000000000000017f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e797f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e79457f000000000000000000000000000000000000000000000000000000000000c3507f0000000000000000000000000000000000000000000000000000000000000001666b56e87c5a499d5389306e55" # noqa: E501 + ), + nonce=0, + ) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest357.py b/tests/ported_static/stRandom/test_random_statetest357.py index 353052701b3..6a473f03531 100644 --- a/tests/ported_static/stRandom/test_random_statetest357.py +++ b/tests/ported_static/stRandom/test_random_statetest357.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest357( ) -> None: """Test_random_statetest357.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -53,7 +50,6 @@ def test_random_statetest357( "7f000000000000000000000000000000000000000000000000000000000000c3507f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000100000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000c350427fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff09377c5380715560005155" # noqa: E501 ), nonce=0, - address=Address(0x625C4C0C1932D06A13B656F82B55ACAF57689DDA), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -71,7 +67,6 @@ def test_random_statetest357( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest359.py b/tests/ported_static/stRandom/test_random_statetest359.py index ba8f93dfc85..64a5342d6fa 100644 --- a/tests/ported_static/stRandom/test_random_statetest359.py +++ b/tests/ported_static/stRandom/test_random_statetest359.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest359( ) -> None: """Test_random_statetest359.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -53,7 +50,6 @@ def test_random_statetest359( "7f000000000000000000000000000000000000000000000000000000000000c3507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000c3507f000000000000000000000000000000000000000000000000000000000000c3507f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff428d06809e75f26764867d853b0555" # noqa: E501 ), nonce=0, - address=Address(0x2E42FA9E3E939BC1AF51A19D6E8D3D80CD923842), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -71,7 +67,6 @@ def test_random_statetest359( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest36.py b/tests/ported_static/stRandom/test_random_statetest36.py index dc746636153..1a31f763bf3 100644 --- a/tests/ported_static/stRandom/test_random_statetest36.py +++ b/tests/ported_static/stRandom/test_random_statetest36.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,9 +33,7 @@ def test_random_statetest36( ) -> None: """Test_random_statetest36.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -72,7 +69,6 @@ def test_random_statetest36( + Op.MLOAD(offset=0x0) + Op.SSTORE, nonce=0, - address=Address(0xAD6FFFED2E41E6D57F10DEBDF91B1DC35758B7AD), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -90,7 +86,6 @@ def test_random_statetest36( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest370.py b/tests/ported_static/stRandom/test_random_statetest370.py index fea8d036af1..118b5f29d62 100644 --- a/tests/ported_static/stRandom/test_random_statetest370.py +++ b/tests/ported_static/stRandom/test_random_statetest370.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest370( ) -> None: """Test_random_statetest370.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,6 +43,22 @@ def test_random_statetest370( gas_limit=9223372036854775807, ) + # Source: raw + # 0x6000355415600957005b60203560003555 + coinbase = pre.deploy_contract( # noqa: F841 + code=Op.JUMPI( + pc=0x9, + condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), + ) + + Op.STOP + + Op.JUMPDEST + + Op.SSTORE( + key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) + ), + balance=46, + nonce=0, + address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 + ) # Source: raw # 0x44207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f00000000000000000000000100000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000001145344846604627f5560005155 # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -66,25 +79,7 @@ def test_random_statetest370( + Op.PREVRANDAO + Op.SSTORE(key=0x4627F55600051, value=Op.DUP5), nonce=0, - address=Address(0xE73096EDE5F7C095146A2B72C29B48A70F2DC518), # noqa: E501 - ) - # Source: raw - # 0x6000355415600957005b60203560003555 - coinbase = pre.deploy_contract( # noqa: F841 - code=Op.JUMPI( - pc=0x9, - condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), - ) - + Op.STOP - + Op.JUMPDEST - + Op.SSTORE( - key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) - ), - balance=46, - nonce=0, - address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest378.py b/tests/ported_static/stRandom/test_random_statetest378.py index e286ab11ed6..580339d4db8 100644 --- a/tests/ported_static/stRandom/test_random_statetest378.py +++ b/tests/ported_static/stRandom/test_random_statetest378.py @@ -47,6 +47,7 @@ def test_random_statetest378( gas_limit=9223372036854775807, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: raw # 0x7f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff547f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000017f000000000000000000000000000000000000000000000000000000000000c3507f00000000000000000000000000000000000000000000000000000000000000005a7f00000000000000000000000000000000000000000000000000000000000000016f855b445834721a5706f2891711f0025560005155 # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -81,7 +82,6 @@ def test_random_statetest378( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest384.py b/tests/ported_static/stRandom/test_random_statetest384.py index 7f52150fd8c..4e5808ba262 100644 --- a/tests/ported_static/stRandom/test_random_statetest384.py +++ b/tests/ported_static/stRandom/test_random_statetest384.py @@ -46,6 +46,7 @@ def test_random_statetest384( gas_limit=71794957647893862, ) + pre[sender] = Account(balance=0x3635C9ADC5DEA00000, nonce=1) # Source: raw # 0x786675A4758D443DBFF535F034A4EDA729A6FFC1E59F674E0C553b655D7974272AC76e18CE2014249172572ED5EAC0B9D2E461FFFF169061FFFF16a033114861C0CD619FE161A9BB61AD137F4D84673D975D1811374A239EF14EE26532D643CC4DD6E9115E28815562C2EB945AF46c513376BC288AA1FDB973C149CD143b7889CC6512F8D604E5D0656C17F2D45B916DF6816A1999719F2B71D521394F07100138B341F1DEBC06C3FB3CBC600116586008015760CB505B7227E1DC4C54400E52AB133F162C6DF107151D1145939445807e5153417E8FF00D138F0DFFC0CD79CED2ECECD6F0DCE826302E4129CB6C37AB43415B6145C16173CE6152A9610C307FA5D352916626FE6BE4AA6EF0E7634DB7909FD79752E5BCB504B358D36AF708495AF461FFFF169061FFFF16a26cE900F727806828F5EE6088EBF861FFFF165170015C1269FA9F5387AB7387A81F5190564098601F9471B46EB2F2D66EE0B4C6845455E9C5EEFF021875BAE1D66F6CB6213C6CE69859F1046AE4CB5E5B743AB76d66120B1A7A97C93A6A04BD493F4A07963d0b69471B70DEC306FA6142CE9c60FF164303406aA04EA7E0BD9D9CDA29962B05067246CE83AB26762D5E2CFB614AA2394AD1D70EA938856b938D5C3FF280BF7EFDA95E668a70149AFA7A18BF9C2D796DE03773E0D35C9A7e8E0E968BA16F3AD59D6442DDBDB9E537908DB1F791BB3F17B33A14333401071961A1689c7b413ED4A9B16E7D66A17B07730188A08FA9E6148100F0311EA269ECC588607D7fCBFFF9F42E22612E938809AF2674B0CEDC8548F47EE642097C0C4ABC9BF7C76B9678996410D0BF28E5E3E1B35B37FFCE70E346E013D5345494D47690334261771761ABAE6174FD61F1957F1396B439A0049676213FD1FF8B75232DBD2117C0C5DCC184D76E2534EA9628AC5AF4863a9761FFFF169061FFFF16a07e486085A7047BD1ACAB7C048C2AE5A07A9E25934021CFAF0651EFBD393B72141461FFFF165361FFFF169061FFFF16a16a84ED962562151D0B903FB2863004140473380357280D5DBC434298AC45559FC2855C0D2A045a66AF59655ED483A0583160FF16430340795F1536B1893659FBB9FFA023722BEB2F24B5693BE6B572737FED1b9d0a646F7A2658B58b5B417220E684F471111724A4F72553B4FDC9593AE22C96959961A631615AD461199161F3F6618FE07F39DBE091B64B8BE6A557A93BF2C25DD042E8C8FEA4DB3BD8EE5BE3EABDE2835E5AF105600055600155600255600355600455600555600655600755600855600955600a55600b55600c55600d55600e55600f55601055601155601255601355601455601555601655601755601855601955601a55601b55601c55601d55601e5561273961C065F3 # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -273,7 +274,6 @@ def test_random_statetest384( nonce=1, address=Address(0x14CEED78F6E86EEAD0A39E3F5C3481C7C233E8EA), # noqa: E501 ) - pre[sender] = Account(balance=0x3635C9ADC5DEA00000, nonce=1) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest4.py b/tests/ported_static/stRandom/test_random_statetest4.py index 9a3f6a5291b..55bfd614278 100644 --- a/tests/ported_static/stRandom/test_random_statetest4.py +++ b/tests/ported_static/stRandom/test_random_statetest4.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest4( ) -> None: """Test_random_statetest4.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -53,7 +50,6 @@ def test_random_statetest4( "7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000100000000000000000000000000000000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f00000000000000000000000100000000000000000000000000000000000000007f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000c350617e7608617c95f3ff584076e07b5a4460005155" # noqa: E501 ), nonce=0, - address=Address(0xA3A709FECE04184D06401D32D39F133EA3B800A8), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -71,7 +67,6 @@ def test_random_statetest4( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest42.py b/tests/ported_static/stRandom/test_random_statetest42.py index 2b0cfe85bae..7e67db9f820 100644 --- a/tests/ported_static/stRandom/test_random_statetest42.py +++ b/tests/ported_static/stRandom/test_random_statetest42.py @@ -47,6 +47,7 @@ def test_random_statetest42( gas_limit=9223372036854775807, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: raw # 0x7f000000000000000000000000000000000000000000000000000000000000c3507f000000000000000000000000000000000000000000000000000000000000c3507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000c3505a7f00000000000000000000000100000000000000000000000000000000000000007f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000c350356436f0f119011a5560005155 # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -84,7 +85,6 @@ def test_random_statetest42( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest45.py b/tests/ported_static/stRandom/test_random_statetest45.py index 668669b4dcf..c3e26575f14 100644 --- a/tests/ported_static/stRandom/test_random_statetest45.py +++ b/tests/ported_static/stRandom/test_random_statetest45.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest45( ) -> None: """Test_random_statetest45.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,15 +43,6 @@ def test_random_statetest45( gas_limit=9223372036854775807, ) - # Source: raw - # 0x7f000000000000000000000000317fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000010000000000000000000000000000000000000000417ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe43147256a3130255 # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=bytes.fromhex( - "7f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e79317fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000010000000000000000000000000000000000000000417ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe43147256a3130255" # noqa: E501 - ), - nonce=0, - address=Address(0x868A35CB88C48251A7470E4FB638C4CB395BA4DA), # noqa: E501 - ) # Source: raw # 0x6000355415600957005b60203560003555 coinbase = pre.deploy_contract( # noqa: F841 @@ -71,7 +59,14 @@ def test_random_statetest45( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: raw + # 0x7f000000000000000000000000317fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000010000000000000000000000000000000000000000417ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe43147256a3130255 # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=bytes.fromhex( + "7f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e79317fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000010000000000000000000000000000000000000000417ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe43147256a3130255" # noqa: E501 + ), + nonce=0, + ) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest48.py b/tests/ported_static/stRandom/test_random_statetest48.py index 694b50aa389..f6dbb6131eb 100644 --- a/tests/ported_static/stRandom/test_random_statetest48.py +++ b/tests/ported_static/stRandom/test_random_statetest48.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,9 +33,7 @@ def test_random_statetest48( ) -> None: """Test_random_statetest48.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -47,6 +44,22 @@ def test_random_statetest48( gas_limit=9223372036854775807, ) + # Source: raw + # 0x6000355415600957005b60203560003555 + coinbase = pre.deploy_contract( # noqa: F841 + code=Op.JUMPI( + pc=0x9, + condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), + ) + + Op.STOP + + Op.JUMPDEST + + Op.SSTORE( + key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) + ), + balance=46, + nonce=0, + address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 + ) # Source: raw # 0x38785231d8e75db11d6da7040cee1a12ebf739e5022caa60f92d51636060b6d96d698fc0e9ced2f6a0087344559c43612f0561a73ba3600a600d6014600963186262c1736370f82d9ff1604166f49ef1fea120af77ba4cce3f35bc52ca5c40bf14c77e95ea92e69520143ff9c7827bcfe760aee06d241e31a0773476da22f7ce8131475838c23b59f7a3c46b2b99c0955e169ee3527ca9f7674467bdf2c0eebf6f60129232 # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -80,23 +93,6 @@ def test_random_statetest48( nonce=0, address=Address(0x292E762689B448DEBE7899ADE7ACB27A84A85C44), # noqa: E501 ) - # Source: raw - # 0x6000355415600957005b60203560003555 - coinbase = pre.deploy_contract( # noqa: F841 - code=Op.JUMPI( - pc=0x9, - condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), - ) - + Op.STOP - + Op.JUMPDEST - + Op.SSTORE( - key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) - ), - balance=46, - nonce=0, - address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest5.py b/tests/ported_static/stRandom/test_random_statetest5.py index 508ff230dba..8d3e1597827 100644 --- a/tests/ported_static/stRandom/test_random_statetest5.py +++ b/tests/ported_static/stRandom/test_random_statetest5.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest5( ) -> None: """Test_random_statetest5.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,6 +43,22 @@ def test_random_statetest5( gas_limit=9223372036854775807, ) + # Source: raw + # 0x6000355415600957005b60203560003555 + coinbase = pre.deploy_contract( # noqa: F841 + code=Op.JUMPI( + pc=0x9, + condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), + ) + + Op.STOP + + Op.JUMPDEST + + Op.SSTORE( + key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) + ), + balance=46, + nonce=0, + address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 + ) # Source: raw # 0x427f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000007f000000000000000000000000000000000000000000000000000000000000c3507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff0960005155 # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -65,25 +78,7 @@ def test_random_statetest5( ), ), nonce=0, - address=Address(0x5A9F935F66941EC08A862F860B76B49E4A9D90EC), # noqa: E501 - ) - # Source: raw - # 0x6000355415600957005b60203560003555 - coinbase = pre.deploy_contract( # noqa: F841 - code=Op.JUMPI( - pc=0x9, - condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), - ) - + Op.STOP - + Op.JUMPDEST - + Op.SSTORE( - key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) - ), - balance=46, - nonce=0, - address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest51.py b/tests/ported_static/stRandom/test_random_statetest51.py index d5b60a12e6d..bde53ad9ac1 100644 --- a/tests/ported_static/stRandom/test_random_statetest51.py +++ b/tests/ported_static/stRandom/test_random_statetest51.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest51( ) -> None: """Test_random_statetest51.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -53,7 +50,6 @@ def test_random_statetest51( "7f0000000000000000000000000000000000000000000000000000000000000001757f000000000000000000000000945304eb96065b2a98b57a48a06ae28d285a71b57a7f000000000000000000000000945304eb96065b2a98b57a48a06ae28d285a71b57f000000000000000000000000945304eb96065b2a98b57a48a06ae28d285a71b5447ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe83189b60005155" # noqa: E501 ), nonce=0, - address=Address(0x53AF81E2A686427DE42E7B8B55A0C6C66C8C6051), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -71,7 +67,6 @@ def test_random_statetest51( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest53.py b/tests/ported_static/stRandom/test_random_statetest53.py index 7f193b5e221..c943d93f166 100644 --- a/tests/ported_static/stRandom/test_random_statetest53.py +++ b/tests/ported_static/stRandom/test_random_statetest53.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest53( ) -> None: """Test_random_statetest53.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,23 +43,6 @@ def test_random_statetest53( gas_limit=9223372036854775807, ) - # Source: raw - # 0x427f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000017f0000000000000000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff583481f36a85646d53671639175b940860005155 # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.TIMESTAMP - + Op.PUSH32[0x0] - + Op.PUSH32[0x1] - + Op.PUSH32[0x4F3F701464972E74606D6EA82D4D3080599A0E79] - + Op.PUSH32[ - 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE - ] - + Op.PUSH32[0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF] * 2 - + Op.PC - + Op.RETURN(offset=Op.DUP2, size=Op.CALLVALUE) - + Op.SSTORE(key=Op.MLOAD(offset=0x0), value=0x85646D53671639175B9408), - nonce=0, - address=Address(0xB2DA1F608A7E0626E721677FA30FC46D2D99C655), # noqa: E501 - ) # Source: raw # 0x6000355415600957005b60203560003555 coinbase = pre.deploy_contract( # noqa: F841 @@ -79,7 +59,22 @@ def test_random_statetest53( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: raw + # 0x427f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000017f0000000000000000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff583481f36a85646d53671639175b940860005155 # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.TIMESTAMP + + Op.PUSH32[0x0] + + Op.PUSH32[0x1] + + Op.PUSH32[0x4F3F701464972E74606D6EA82D4D3080599A0E79] + + Op.PUSH32[ + 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE + ] + + Op.PUSH32[0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF] * 2 + + Op.PC + + Op.RETURN(offset=Op.DUP2, size=Op.CALLVALUE) + + Op.SSTORE(key=Op.MLOAD(offset=0x0), value=0x85646D53671639175B9408), + nonce=0, + ) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest54.py b/tests/ported_static/stRandom/test_random_statetest54.py index 666e82893c5..0a34d31110b 100644 --- a/tests/ported_static/stRandom/test_random_statetest54.py +++ b/tests/ported_static/stRandom/test_random_statetest54.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest54( ) -> None: """Test_random_statetest54.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,15 +43,6 @@ def test_random_statetest54( gas_limit=9223372036854775807, ) - # Source: raw - # 0x7f0000000000000000000000007f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000100000000000000000000000000000000000000007f00000000000000000000000100000000000000000000000000000000000000007f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f0000000000000000000000000000000000000000000000000000000000000001c9206e3b8f9d858f438a # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=bytes.fromhex( - "7f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e797f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000100000000000000000000000000000000000000007f00000000000000000000000100000000000000000000000000000000000000007f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f0000000000000000000000000000000000000000000000000000000000000001c9206e3b8f9d858f438a" # noqa: E501 - ), - nonce=0, - address=Address(0x9D6DE455BE29A83C61E3E6E4B8895B579BBB938B), # noqa: E501 - ) # Source: raw # 0x6000355415600957005b60203560003555 coinbase = pre.deploy_contract( # noqa: F841 @@ -71,7 +59,14 @@ def test_random_statetest54( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: raw + # 0x7f0000000000000000000000007f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000100000000000000000000000000000000000000007f00000000000000000000000100000000000000000000000000000000000000007f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f0000000000000000000000000000000000000000000000000000000000000001c9206e3b8f9d858f438a # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=bytes.fromhex( + "7f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e797f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000100000000000000000000000000000000000000007f00000000000000000000000100000000000000000000000000000000000000007f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f0000000000000000000000000000000000000000000000000000000000000001c9206e3b8f9d858f438a" # noqa: E501 + ), + nonce=0, + ) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest55.py b/tests/ported_static/stRandom/test_random_statetest55.py index 727b77cd3f6..32bfe5576e6 100644 --- a/tests/ported_static/stRandom/test_random_statetest55.py +++ b/tests/ported_static/stRandom/test_random_statetest55.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest55( ) -> None: """Test_random_statetest55.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,15 +43,6 @@ def test_random_statetest55( gas_limit=9223372036854775807, ) - # Source: raw - # 0x7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000084967f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff137ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016f3a5b594088a2f238089b71 # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=bytes.fromhex( - "7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e797f000000000000000000000000000000000000000000000000000000000000000084967f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff137ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016f3a5b594088a2f238089b71" # noqa: E501 - ), - nonce=0, - address=Address(0xB5111BFE81B8D7566E584C3D02429543652DD051), # noqa: E501 - ) # Source: raw # 0x6000355415600957005b60203560003555 coinbase = pre.deploy_contract( # noqa: F841 @@ -71,7 +59,14 @@ def test_random_statetest55( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: raw + # 0x7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000084967f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff137ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016f3a5b594088a2f238089b71 # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=bytes.fromhex( + "7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e797f000000000000000000000000000000000000000000000000000000000000000084967f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff137ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016f3a5b594088a2f238089b71" # noqa: E501 + ), + nonce=0, + ) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest57.py b/tests/ported_static/stRandom/test_random_statetest57.py index 65b539a24c7..98e81b8ccb1 100644 --- a/tests/ported_static/stRandom/test_random_statetest57.py +++ b/tests/ported_static/stRandom/test_random_statetest57.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest57( ) -> None: """Test_random_statetest57.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -62,7 +59,6 @@ def test_random_statetest57( + Op.SWAP1 + Op.SSTORE, nonce=0, - address=Address(0x8EAEDCBE884499A7F8D284384C1DF38AA6ED68AD), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -80,7 +76,6 @@ def test_random_statetest57( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest72.py b/tests/ported_static/stRandom/test_random_statetest72.py index 79ac93f7fb8..60430872c5f 100644 --- a/tests/ported_static/stRandom/test_random_statetest72.py +++ b/tests/ported_static/stRandom/test_random_statetest72.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest72( ) -> None: """Test_random_statetest72.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,6 +43,22 @@ def test_random_statetest72( gas_limit=9223372036854775807, ) + # Source: raw + # 0x6000355415600957005b60203560003555 + coinbase = pre.deploy_contract( # noqa: F841 + code=Op.JUMPI( + pc=0x9, + condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), + ) + + Op.STOP + + Op.JUMPDEST + + Op.SSTORE( + key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) + ), + balance=46, + nonce=0, + address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 + ) # Source: raw # 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff417f0000000000000000000000007f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe65688dff579830091304 # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -65,25 +78,7 @@ def test_random_statetest72( Op.COINBASE, ), nonce=0, - address=Address(0xD8AE0334E34CE6256B4C50A0E7D74FFE2FCAB7E8), # noqa: E501 - ) - # Source: raw - # 0x6000355415600957005b60203560003555 - coinbase = pre.deploy_contract( # noqa: F841 - code=Op.JUMPI( - pc=0x9, - condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), - ) - + Op.STOP - + Op.JUMPDEST - + Op.SSTORE( - key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) - ), - balance=46, - nonce=0, - address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest78.py b/tests/ported_static/stRandom/test_random_statetest78.py index 6c338566d55..cb714aeed87 100644 --- a/tests/ported_static/stRandom/test_random_statetest78.py +++ b/tests/ported_static/stRandom/test_random_statetest78.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest78( ) -> None: """Test_random_statetest78.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,15 +43,6 @@ def test_random_statetest78( gas_limit=9223372036854775807, ) - # Source: raw - # 0x7f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000437f000000000000000000000000000000000000000000000000000000000000c3507f00000000000000000000000000000000000000000000000000000000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1174648789aa349e0915aa5911 # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=bytes.fromhex( - "7f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e79437f000000000000000000000000000000000000000000000000000000000000c3507f00000000000000000000000000000000000000000000000000000000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1174648789aa349e0915aa5911" # noqa: E501 - ), - nonce=0, - address=Address(0xC0CF981B416DB73110AAC9D4DBE6D1358CF4E6DB), # noqa: E501 - ) # Source: raw # 0x6000355415600957005b60203560003555 coinbase = pre.deploy_contract( # noqa: F841 @@ -71,7 +59,14 @@ def test_random_statetest78( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: raw + # 0x7f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000437f000000000000000000000000000000000000000000000000000000000000c3507f00000000000000000000000000000000000000000000000000000000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1174648789aa349e0915aa5911 # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=bytes.fromhex( + "7f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e79437f000000000000000000000000000000000000000000000000000000000000c3507f00000000000000000000000000000000000000000000000000000000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1174648789aa349e0915aa5911" # noqa: E501 + ), + nonce=0, + ) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest82.py b/tests/ported_static/stRandom/test_random_statetest82.py index 899fa717632..f91cbb5aacb 100644 --- a/tests/ported_static/stRandom/test_random_statetest82.py +++ b/tests/ported_static/stRandom/test_random_statetest82.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest82( ) -> None: """Test_random_statetest82.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -65,7 +62,6 @@ def test_random_statetest82( ), ), nonce=0, - address=Address(0x3D8EEF1923018C3CAE225F836AB9821321D39496), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -83,7 +79,6 @@ def test_random_statetest82( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest84.py b/tests/ported_static/stRandom/test_random_statetest84.py index 4657f38fa27..8a7e5edfb71 100644 --- a/tests/ported_static/stRandom/test_random_statetest84.py +++ b/tests/ported_static/stRandom/test_random_statetest84.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest84( ) -> None: """Test_random_statetest84.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -61,7 +58,6 @@ def test_random_statetest84( ) + Op.SSTORE(key=Op.MSIZE, value=Op.ISZERO), nonce=0, - address=Address(0x08E8BE5786DB8A32DF25C732DEA4A9F3E1B16E1B), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -79,7 +75,6 @@ def test_random_statetest84( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom/test_random_statetest97.py b/tests/ported_static/stRandom/test_random_statetest97.py index 6c8499b4c5f..ba81619ccf4 100644 --- a/tests/ported_static/stRandom/test_random_statetest97.py +++ b/tests/ported_static/stRandom/test_random_statetest97.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest97( ) -> None: """Test_random_statetest97.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,6 +43,22 @@ def test_random_statetest97( gas_limit=9223372036854775807, ) + # Source: raw + # 0x6000355415600957005b60203560003555 + coinbase = pre.deploy_contract( # noqa: F841 + code=Op.JUMPI( + pc=0x9, + condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), + ) + + Op.STOP + + Op.JUMPDEST + + Op.SSTORE( + key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) + ), + balance=46, + nonce=0, + address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 + ) # Source: raw # 0x7f000000000000000000000000587f0000000000000000000000000000000000000000000000000000000000000001957f0000000000000000000000000000000000000000000000000000000000000000407f00000000000000000000000000000000000000000000000000000000000000017f000000000000000000000000000000000000000000000000000000000000c3509781040107338b35071887a186 # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -66,25 +79,7 @@ def test_random_statetest97( ) + Op.DUP7, nonce=0, - address=Address(0x987A2BCE4EB6B8B9B42B371C1229B8BC73F029FC), # noqa: E501 - ) - # Source: raw - # 0x6000355415600957005b60203560003555 - coinbase = pre.deploy_contract( # noqa: F841 - code=Op.JUMPI( - pc=0x9, - condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), - ) - + Op.STOP - + Op.JUMPDEST - + Op.SSTORE( - key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) - ), - balance=46, - nonce=0, - address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom2/test_random_statetest387.py b/tests/ported_static/stRandom2/test_random_statetest387.py index 98149c6facf..6e5ca17b57a 100644 --- a/tests/ported_static/stRandom2/test_random_statetest387.py +++ b/tests/ported_static/stRandom2/test_random_statetest387.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest387( ) -> None: """Test_random_statetest387.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -53,7 +50,6 @@ def test_random_statetest387( "7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000100000000000000000000000000000000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f00000000000000000000000100000000000000000000000000000000000000007f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000c350617e7608617c95f3ff584076e07b5a4460005155" # noqa: E501 ), nonce=0, - address=Address(0xA3A709FECE04184D06401D32D39F133EA3B800A8), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -71,7 +67,6 @@ def test_random_statetest387( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom2/test_random_statetest393.py b/tests/ported_static/stRandom2/test_random_statetest393.py index 2a26c42383e..ce1924283af 100644 --- a/tests/ported_static/stRandom2/test_random_statetest393.py +++ b/tests/ported_static/stRandom2/test_random_statetest393.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest393( ) -> None: """Test_random_statetest393.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,15 +43,6 @@ def test_random_statetest393( gas_limit=9223372036854775807, ) - # Source: raw - # 0x7f00000000000000000000000100000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000007f000000000000000000000000000000000000000000000000000000000000c3507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff20b39838f628b96846cff0455 # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=bytes.fromhex( - "7f00000000000000000000000100000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e797fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e797f000000000000000000000000000000000000000000000000000000000000c3507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff20b39838f628b96846cff0455" # noqa: E501 - ), - nonce=0, - address=Address(0x64114B073F76ABEBB752B7A08BBD288BCE55A63B), # noqa: E501 - ) # Source: raw # 0x6000355415600957005b60203560003555 coinbase = pre.deploy_contract( # noqa: F841 @@ -71,7 +59,14 @@ def test_random_statetest393( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: raw + # 0x7f00000000000000000000000100000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000007f000000000000000000000000000000000000000000000000000000000000c3507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff20b39838f628b96846cff0455 # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=bytes.fromhex( + "7f00000000000000000000000100000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e797fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e797f000000000000000000000000000000000000000000000000000000000000c3507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff20b39838f628b96846cff0455" # noqa: E501 + ), + nonce=0, + ) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom2/test_random_statetest396.py b/tests/ported_static/stRandom2/test_random_statetest396.py index 8774dd9deff..8a1b2677128 100644 --- a/tests/ported_static/stRandom2/test_random_statetest396.py +++ b/tests/ported_static/stRandom2/test_random_statetest396.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest396( ) -> None: """Test_random_statetest396.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,15 +43,6 @@ def test_random_statetest396( gas_limit=9223372036854775807, ) - # Source: raw - # 0x7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f0000000000000000000000007f0000000000000000000000007f0000000000000000000000007f0000000000000000000000007f0000000000000000000000007f000000000000000000000000000000000000000000000000000000000000c3507f0000000000000000000000000000000000000000000000000000000000000001719f197c5560005155 # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=bytes.fromhex( - "7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e797f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e797f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e797f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e797f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e797f000000000000000000000000000000000000000000000000000000000000c3507f0000000000000000000000000000000000000000000000000000000000000001719f197c5560005155" # noqa: E501 - ), - nonce=0, - address=Address(0x69A358C1F8B2F5139037E6E391189E45334CCCC4), # noqa: E501 - ) # Source: raw # 0x6000355415600957005b60203560003555 coinbase = pre.deploy_contract( # noqa: F841 @@ -71,7 +59,14 @@ def test_random_statetest396( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: raw + # 0x7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f0000000000000000000000007f0000000000000000000000007f0000000000000000000000007f0000000000000000000000007f0000000000000000000000007f000000000000000000000000000000000000000000000000000000000000c3507f0000000000000000000000000000000000000000000000000000000000000001719f197c5560005155 # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=bytes.fromhex( + "7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e797f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e797f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e797f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e797f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e797f000000000000000000000000000000000000000000000000000000000000c3507f0000000000000000000000000000000000000000000000000000000000000001719f197c5560005155" # noqa: E501 + ), + nonce=0, + ) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom2/test_random_statetest397.py b/tests/ported_static/stRandom2/test_random_statetest397.py index e25d83e12f5..8b4aec81bd5 100644 --- a/tests/ported_static/stRandom2/test_random_statetest397.py +++ b/tests/ported_static/stRandom2/test_random_statetest397.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest397( ) -> None: """Test_random_statetest397.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -52,7 +49,6 @@ def test_random_statetest397( code=bytes.fromhex("413443f3404242433389ff723810"), balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x42C6DF39ABD3D7DE1C64C50B0D8BB0E6085FB6AF), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -70,7 +66,6 @@ def test_random_statetest397( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom2/test_random_statetest401.py b/tests/ported_static/stRandom2/test_random_statetest401.py index 18fadca3bee..97cd69f2b1f 100644 --- a/tests/ported_static/stRandom2/test_random_statetest401.py +++ b/tests/ported_static/stRandom2/test_random_statetest401.py @@ -46,6 +46,23 @@ def test_random_statetest401( gas_limit=9223372036854775807, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: raw + # 0x6000355415600957005b60203560003555 + coinbase = pre.deploy_contract( # noqa: F841 + code=Op.JUMPI( + pc=0x9, + condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), + ) + + Op.STOP + + Op.JUMPDEST + + Op.SSTORE( + key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) + ), + balance=46, + nonce=0, + address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 + ) # Source: raw # 0x7f00000000000000000000000100000000000000000000000000000000000000007f0000000000000000000000007f000000000000000000000000000000000000000000000000000000000000c3507f0000000000000000000000007f000000000000000000000000000000000000000000000000000000000000c35044427f000000000000000000000000ff60005155 # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -64,23 +81,6 @@ def test_random_statetest401( nonce=0, address=Address(0x88643BC22681E376675775EAAA381D0BA45054DE), # noqa: E501 ) - # Source: raw - # 0x6000355415600957005b60203560003555 - coinbase = pre.deploy_contract( # noqa: F841 - code=Op.JUMPI( - pc=0x9, - condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), - ) - + Op.STOP - + Op.JUMPDEST - + Op.SSTORE( - key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) - ), - balance=46, - nonce=0, - address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom2/test_random_statetest404.py b/tests/ported_static/stRandom2/test_random_statetest404.py index 1b8ee9042f3..b9caca651f7 100644 --- a/tests/ported_static/stRandom2/test_random_statetest404.py +++ b/tests/ported_static/stRandom2/test_random_statetest404.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest404( ) -> None: """Test_random_statetest404.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -53,7 +50,6 @@ def test_random_statetest404( "7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe6a7f0000000000000000000000000000000000000000000000000000000000000000907f00000000000000000000000000000000000000000000000000000000000000017ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff906606425655" # noqa: E501 ), nonce=0, - address=Address(0xFD0CF74E622C5C2B33C88CDF3A3E12FF25D0E090), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -71,7 +67,6 @@ def test_random_statetest404( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom2/test_random_statetest410.py b/tests/ported_static/stRandom2/test_random_statetest410.py index 3c371209e91..5c931cd5883 100644 --- a/tests/ported_static/stRandom2/test_random_statetest410.py +++ b/tests/ported_static/stRandom2/test_random_statetest410.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest410( ) -> None: """Test_random_statetest410.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,6 +43,22 @@ def test_random_statetest410( gas_limit=9223372036854775807, ) + # Source: raw + # 0x6000355415600957005b60203560003555 + coinbase = pre.deploy_contract( # noqa: F841 + code=Op.JUMPI( + pc=0x9, + condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), + ) + + Op.STOP + + Op.JUMPDEST + + Op.SSTORE( + key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) + ), + balance=46, + nonce=0, + address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 + ) # Source: raw # 0x7f000000000000000000000000417f00000000000000000000000000000000000000000000000000000000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f000000000000000000000000000000000000000000000000000000000000c3507f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000045086201771880f35560005155 # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -63,25 +76,7 @@ def test_random_statetest410( + Op.MLOAD(offset=0x0) + Op.SSTORE, nonce=0, - address=Address(0x99E6F87CBA9C1737F49965828C1BADEC51A91DFD), # noqa: E501 - ) - # Source: raw - # 0x6000355415600957005b60203560003555 - coinbase = pre.deploy_contract( # noqa: F841 - code=Op.JUMPI( - pc=0x9, - condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), - ) - + Op.STOP - + Op.JUMPDEST - + Op.SSTORE( - key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) - ), - balance=46, - nonce=0, - address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom2/test_random_statetest414.py b/tests/ported_static/stRandom2/test_random_statetest414.py index 4eb0afe1afe..40ef090a01c 100644 --- a/tests/ported_static/stRandom2/test_random_statetest414.py +++ b/tests/ported_static/stRandom2/test_random_statetest414.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest414( ) -> None: """Test_random_statetest414.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -64,7 +61,6 @@ def test_random_statetest414( ), ), nonce=0, - address=Address(0x16000B6B36A20D3093A8B71A9FD8292C8A641002), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -82,7 +78,6 @@ def test_random_statetest414( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom2/test_random_statetest415.py b/tests/ported_static/stRandom2/test_random_statetest415.py index 6254bf00454..5a4d886f054 100644 --- a/tests/ported_static/stRandom2/test_random_statetest415.py +++ b/tests/ported_static/stRandom2/test_random_statetest415.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest415( ) -> None: """Test_random_statetest415.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,15 +43,6 @@ def test_random_statetest415( gas_limit=9223372036854775807, ) - # Source: raw - # 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff437f000000000000000000000000000000000000000000000000000000000000000142427f000000000000000000000000357f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff62010a8c8794a17e8ea4f260005155 # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=bytes.fromhex( - "7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff437f000000000000000000000000000000000000000000000000000000000000000142427f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e79357f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff62010a8c8794a17e8ea4f260005155" # noqa: E501 - ), - nonce=0, - address=Address(0xCFEB1138E487C3084750A899713B20307D5B4217), # noqa: E501 - ) # Source: raw # 0x6000355415600957005b60203560003555 coinbase = pre.deploy_contract( # noqa: F841 @@ -71,7 +59,14 @@ def test_random_statetest415( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: raw + # 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff437f000000000000000000000000000000000000000000000000000000000000000142427f000000000000000000000000357f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff62010a8c8794a17e8ea4f260005155 # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=bytes.fromhex( + "7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff437f000000000000000000000000000000000000000000000000000000000000000142427f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e79357f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff62010a8c8794a17e8ea4f260005155" # noqa: E501 + ), + nonce=0, + ) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom2/test_random_statetest417.py b/tests/ported_static/stRandom2/test_random_statetest417.py index bf6db38c013..5f93c560673 100644 --- a/tests/ported_static/stRandom2/test_random_statetest417.py +++ b/tests/ported_static/stRandom2/test_random_statetest417.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest417( ) -> None: """Test_random_statetest417.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -52,7 +49,6 @@ def test_random_statetest417( code=bytes.fromhex("4343424344444242f26d69"), balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x632AD35D6E1A733FBBCF49749FD63D526EBDAEA1), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -70,7 +66,6 @@ def test_random_statetest417( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom2/test_random_statetest418.py b/tests/ported_static/stRandom2/test_random_statetest418.py index c950e6c1062..d9365524831 100644 --- a/tests/ported_static/stRandom2/test_random_statetest418.py +++ b/tests/ported_static/stRandom2/test_random_statetest418.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,9 +33,7 @@ def test_random_statetest418( ) -> None: """Test_random_statetest418.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -47,6 +44,22 @@ def test_random_statetest418( gas_limit=9223372036854775807, ) + # Source: raw + # 0x6000355415600957005b60203560003555 + coinbase = pre.deploy_contract( # noqa: F841 + code=Op.JUMPI( + pc=0x9, + condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), + ) + + Op.STOP + + Op.JUMPDEST + + Op.SSTORE( + key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) + ), + balance=46, + nonce=0, + address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 + ) # Source: raw # 0x7f0000000000000000000000000000000000000000000000000000000000000000437f00000000000000000000000000000000000000000000000000000000000000017f0000000000000000000000007f000000000000000000000000000000000000000000000000000000000000c3507f0000000000000000000000000000000000000000000000000000000000000000417fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff12a36234970658a03160005155 # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -65,25 +78,7 @@ def test_random_statetest418( + Op.LOG0(offset=Op.PC, size=0x349706) + Op.SSTORE(key=Op.MLOAD(offset=0x0), value=Op.BALANCE), nonce=0, - address=Address(0xB3CEB9E1CE94D2E429039525E57315F4BD255F06), # noqa: E501 - ) - # Source: raw - # 0x6000355415600957005b60203560003555 - coinbase = pre.deploy_contract( # noqa: F841 - code=Op.JUMPI( - pc=0x9, - condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), - ) - + Op.STOP - + Op.JUMPDEST - + Op.SSTORE( - key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) - ), - balance=46, - nonce=0, - address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom2/test_random_statetest420.py b/tests/ported_static/stRandom2/test_random_statetest420.py index 7a894d11c0d..7dce7d0ee0a 100644 --- a/tests/ported_static/stRandom2/test_random_statetest420.py +++ b/tests/ported_static/stRandom2/test_random_statetest420.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest420( ) -> None: """Test_random_statetest420.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,15 +43,6 @@ def test_random_statetest420( gas_limit=9223372036854775807, ) - # Source: raw - # 0x7f00000000000000000000000000000000000000000000000000000000000000017f0000000000000000000000003a7f00000000000000000000000000000000000000000000000000000000000000017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000017f0000000000000000000000000000000000000000000000000000000000000001817d7b8956970660129f5015fe0a355560005155 # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=bytes.fromhex( - "7f00000000000000000000000000000000000000000000000000000000000000017f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e793a7f00000000000000000000000000000000000000000000000000000000000000017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000017f0000000000000000000000000000000000000000000000000000000000000001817d7b8956970660129f5015fe0a355560005155" # noqa: E501 - ), - nonce=0, - address=Address(0x0F48FA271D166C58E40759BE208471B6BC233332), # noqa: E501 - ) # Source: raw # 0x6000355415600957005b60203560003555 coinbase = pre.deploy_contract( # noqa: F841 @@ -71,7 +59,14 @@ def test_random_statetest420( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: raw + # 0x7f00000000000000000000000000000000000000000000000000000000000000017f0000000000000000000000003a7f00000000000000000000000000000000000000000000000000000000000000017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000017f0000000000000000000000000000000000000000000000000000000000000001817d7b8956970660129f5015fe0a355560005155 # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=bytes.fromhex( + "7f00000000000000000000000000000000000000000000000000000000000000017f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e793a7f00000000000000000000000000000000000000000000000000000000000000017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000017f0000000000000000000000000000000000000000000000000000000000000001817d7b8956970660129f5015fe0a355560005155" # noqa: E501 + ), + nonce=0, + ) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom2/test_random_statetest422.py b/tests/ported_static/stRandom2/test_random_statetest422.py index 95b2dee5a2a..b8c339de059 100644 --- a/tests/ported_static/stRandom2/test_random_statetest422.py +++ b/tests/ported_static/stRandom2/test_random_statetest422.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest422( ) -> None: """Test_random_statetest422.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,23 +43,6 @@ def test_random_statetest422( gas_limit=9223372036854775807, ) - # Source: raw - # 0x7f000000000000000000000000000000000000000000000000000000000000c3507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f00000000000000000000000100000000000000000000000000000000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe527f00000000000000000000000000000000000000000000000000000000000000017f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000 # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.PUSH32[0xC350] - + Op.PUSH32[ - 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE - ] - + Op.MSTORE( - offset=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE, # noqa: E501 - value=Op.PUSH32[0x10000000000000000000000000000000000000000], - ) - + Op.PUSH32[0x1] - + Op.PUSH32[0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF] - + Op.PUSH32[0x4F3F701464972E74606D6EA82D4D3080599A0E79], - nonce=0, - address=Address(0x3D1B9833BEB5E086AACD5155322683351C26AF63), # noqa: E501 - ) # Source: raw # 0x6000355415600957005b60203560003555 coinbase = pre.deploy_contract( # noqa: F841 @@ -79,7 +59,22 @@ def test_random_statetest422( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: raw + # 0x7f000000000000000000000000000000000000000000000000000000000000c3507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f00000000000000000000000100000000000000000000000000000000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe527f00000000000000000000000000000000000000000000000000000000000000017f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000 # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.PUSH32[0xC350] + + Op.PUSH32[ + 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE + ] + + Op.MSTORE( + offset=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE, # noqa: E501 + value=Op.PUSH32[0x10000000000000000000000000000000000000000], + ) + + Op.PUSH32[0x1] + + Op.PUSH32[0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF] + + Op.PUSH32[0x4F3F701464972E74606D6EA82D4D3080599A0E79], + nonce=0, + ) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom2/test_random_statetest428.py b/tests/ported_static/stRandom2/test_random_statetest428.py index 67ebfcbee73..5cf0d72ce61 100644 --- a/tests/ported_static/stRandom2/test_random_statetest428.py +++ b/tests/ported_static/stRandom2/test_random_statetest428.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest428( ) -> None: """Test_random_statetest428.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -52,7 +49,6 @@ def test_random_statetest428( code=bytes.fromhex("4244417b4542404409523b200283"), balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x8C822B21830B172651BCD2C2FEC3016423769AFA), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -70,7 +66,6 @@ def test_random_statetest428( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom2/test_random_statetest433.py b/tests/ported_static/stRandom2/test_random_statetest433.py index 5e4c30b8cec..3b4a65f8041 100644 --- a/tests/ported_static/stRandom2/test_random_statetest433.py +++ b/tests/ported_static/stRandom2/test_random_statetest433.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest433( ) -> None: """Test_random_statetest433.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,15 +43,6 @@ def test_random_statetest433( gas_limit=9223372036854775807, ) - # Source: raw - # 0x7f000000000000000000000000000000000000000000000000000000000000c3507f000000000000000000000000000000000000000000000000000000000000c3507f00000000000000000000000000000000000000000000000000000000000000017f00000000000000000000000000000000000000000000000000000000000000017ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f0000000000000000000000007f000000000000000000000000000000000000000000000000000000000000c3507f000000000000000000000000000000000000000000000000000000000000c350a3f305205bf156207259573055 # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=bytes.fromhex( - "7f000000000000000000000000000000000000000000000000000000000000c3507f000000000000000000000000000000000000000000000000000000000000c3507f00000000000000000000000000000000000000000000000000000000000000017f00000000000000000000000000000000000000000000000000000000000000017ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e797f000000000000000000000000000000000000000000000000000000000000c3507f000000000000000000000000000000000000000000000000000000000000c350a3f305205bf156207259573055" # noqa: E501 - ), - nonce=0, - address=Address(0x76AD89792A42A92B922C9BE589A0C02B14E7E928), # noqa: E501 - ) # Source: raw # 0x6000355415600957005b60203560003555 coinbase = pre.deploy_contract( # noqa: F841 @@ -71,7 +59,14 @@ def test_random_statetest433( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: raw + # 0x7f000000000000000000000000000000000000000000000000000000000000c3507f000000000000000000000000000000000000000000000000000000000000c3507f00000000000000000000000000000000000000000000000000000000000000017f00000000000000000000000000000000000000000000000000000000000000017ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f0000000000000000000000007f000000000000000000000000000000000000000000000000000000000000c3507f000000000000000000000000000000000000000000000000000000000000c350a3f305205bf156207259573055 # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=bytes.fromhex( + "7f000000000000000000000000000000000000000000000000000000000000c3507f000000000000000000000000000000000000000000000000000000000000c3507f00000000000000000000000000000000000000000000000000000000000000017f00000000000000000000000000000000000000000000000000000000000000017ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e797f000000000000000000000000000000000000000000000000000000000000c3507f000000000000000000000000000000000000000000000000000000000000c350a3f305205bf156207259573055" # noqa: E501 + ), + nonce=0, + ) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom2/test_random_statetest443.py b/tests/ported_static/stRandom2/test_random_statetest443.py index b66a51151e7..12dca394e25 100644 --- a/tests/ported_static/stRandom2/test_random_statetest443.py +++ b/tests/ported_static/stRandom2/test_random_statetest443.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest443( ) -> None: """Test_random_statetest443.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,6 +43,22 @@ def test_random_statetest443( gas_limit=9223372036854775807, ) + # Source: raw + # 0x6000355415600957005b60203560003555 + coinbase = pre.deploy_contract( # noqa: F841 + code=Op.JUMPI( + pc=0x9, + condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), + ) + + Op.STOP + + Op.JUMPDEST + + Op.SSTORE( + key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) + ), + balance=46, + nonce=0, + address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 + ) # Source: raw # 0x7f0000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000017f00000000000000000000000100000000000000000000000000000000000000007f0000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001155933704 # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -67,25 +80,7 @@ def test_random_statetest443( + Op.CALLDATACOPY + Op.DIV, nonce=0, - address=Address(0x692A3C1272CA7FF11550AF64D7C6CAFFFBE467F8), # noqa: E501 - ) - # Source: raw - # 0x6000355415600957005b60203560003555 - coinbase = pre.deploy_contract( # noqa: F841 - code=Op.JUMPI( - pc=0x9, - condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), - ) - + Op.STOP - + Op.JUMPDEST - + Op.SSTORE( - key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) - ), - balance=46, - nonce=0, - address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom2/test_random_statetest444.py b/tests/ported_static/stRandom2/test_random_statetest444.py index c7ea0c7c351..65c27cc519b 100644 --- a/tests/ported_static/stRandom2/test_random_statetest444.py +++ b/tests/ported_static/stRandom2/test_random_statetest444.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest444( ) -> None: """Test_random_statetest444.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -53,7 +50,6 @@ def test_random_statetest444( "7f0000000000000000000000010000000000000000000000000000000000000000607f000000000000000000000000000000000000000000000000000000000000c3507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000017ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff661392843555" # noqa: E501 ), nonce=0, - address=Address(0x3630F8AC14310E923A9B6F57148A873829B27144), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -71,7 +67,6 @@ def test_random_statetest444( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom2/test_random_statetest445.py b/tests/ported_static/stRandom2/test_random_statetest445.py index fcf7d51f873..1e429145745 100644 --- a/tests/ported_static/stRandom2/test_random_statetest445.py +++ b/tests/ported_static/stRandom2/test_random_statetest445.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest445( ) -> None: """Test_random_statetest445.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,15 +43,6 @@ def test_random_statetest445( gas_limit=9223372036854775807, ) - # Source: raw - # 0x7f00000000000000000000000000000000000000000000000000000000000000017f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000c3507f0000000000000000000000007f0000000000000000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008756993365a1376155 # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=bytes.fromhex( - "7f00000000000000000000000000000000000000000000000000000000000000017f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000c3507f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e797f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e797ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008756993365a1376155" # noqa: E501 - ), - nonce=0, - address=Address(0xDF00487753FAFB7D8AC061B9F2FBE3488F0D83D7), # noqa: E501 - ) # Source: raw # 0x6000355415600957005b60203560003555 coinbase = pre.deploy_contract( # noqa: F841 @@ -71,7 +59,14 @@ def test_random_statetest445( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: raw + # 0x7f00000000000000000000000000000000000000000000000000000000000000017f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000c3507f0000000000000000000000007f0000000000000000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008756993365a1376155 # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=bytes.fromhex( + "7f00000000000000000000000000000000000000000000000000000000000000017f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000c3507f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e797f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e797ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008756993365a1376155" # noqa: E501 + ), + nonce=0, + ) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom2/test_random_statetest448.py b/tests/ported_static/stRandom2/test_random_statetest448.py index 93d833f5681..84cf86ec705 100644 --- a/tests/ported_static/stRandom2/test_random_statetest448.py +++ b/tests/ported_static/stRandom2/test_random_statetest448.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest448( ) -> None: """Test_random_statetest448.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,23 +43,6 @@ def test_random_statetest448( gas_limit=9223372036854775807, ) - # Source: raw - # 0x427f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000017f0000000000000000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff583481f36a85646d53671639175b940860005155 # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.TIMESTAMP - + Op.PUSH32[0x0] - + Op.PUSH32[0x1] - + Op.PUSH32[0x4F3F701464972E74606D6EA82D4D3080599A0E79] - + Op.PUSH32[ - 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE - ] - + Op.PUSH32[0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF] * 2 - + Op.PC - + Op.RETURN(offset=Op.DUP2, size=Op.CALLVALUE) - + Op.SSTORE(key=Op.MLOAD(offset=0x0), value=0x85646D53671639175B9408), - nonce=0, - address=Address(0xB2DA1F608A7E0626E721677FA30FC46D2D99C655), # noqa: E501 - ) # Source: raw # 0x6000355415600957005b60203560003555 coinbase = pre.deploy_contract( # noqa: F841 @@ -79,7 +59,22 @@ def test_random_statetest448( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: raw + # 0x427f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000017f0000000000000000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff583481f36a85646d53671639175b940860005155 # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.TIMESTAMP + + Op.PUSH32[0x0] + + Op.PUSH32[0x1] + + Op.PUSH32[0x4F3F701464972E74606D6EA82D4D3080599A0E79] + + Op.PUSH32[ + 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE + ] + + Op.PUSH32[0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF] * 2 + + Op.PC + + Op.RETURN(offset=Op.DUP2, size=Op.CALLVALUE) + + Op.SSTORE(key=Op.MLOAD(offset=0x0), value=0x85646D53671639175B9408), + nonce=0, + ) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom2/test_random_statetest449.py b/tests/ported_static/stRandom2/test_random_statetest449.py index b8b10a9afc1..d098fe1bf57 100644 --- a/tests/ported_static/stRandom2/test_random_statetest449.py +++ b/tests/ported_static/stRandom2/test_random_statetest449.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest449( ) -> None: """Test_random_statetest449.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,6 +43,22 @@ def test_random_statetest449( gas_limit=9223372036854775807, ) + # Source: raw + # 0x6000355415600957005b60203560003555 + coinbase = pre.deploy_contract( # noqa: F841 + code=Op.JUMPI( + pc=0x9, + condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), + ) + + Op.STOP + + Op.JUMPDEST + + Op.SSTORE( + key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) + ), + balance=46, + nonce=0, + address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 + ) # Source: raw # 0x197f000000000000000000000000000000000000000000000000000000000000c3507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000008b66e4ff65a056f39b529f # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -64,25 +77,7 @@ def test_random_statetest449( + Op.MSTORE(offset=0xE4FF65A056F39B, value=Op.DUP12) + Op.SWAP16, nonce=0, - address=Address(0xA744E6FA67E6F6717D1AF2356F4679AE961CAD1E), # noqa: E501 - ) - # Source: raw - # 0x6000355415600957005b60203560003555 - coinbase = pre.deploy_contract( # noqa: F841 - code=Op.JUMPI( - pc=0x9, - condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), - ) - + Op.STOP - + Op.JUMPDEST - + Op.SSTORE( - key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) - ), - balance=46, - nonce=0, - address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom2/test_random_statetest454.py b/tests/ported_static/stRandom2/test_random_statetest454.py index 8fbfba7003e..8602d2c5dc3 100644 --- a/tests/ported_static/stRandom2/test_random_statetest454.py +++ b/tests/ported_static/stRandom2/test_random_statetest454.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest454( ) -> None: """Test_random_statetest454.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,6 +43,22 @@ def test_random_statetest454( gas_limit=9223372036854775807, ) + # Source: raw + # 0x6000355415600957005b60203560003555 + coinbase = pre.deploy_contract( # noqa: F841 + code=Op.JUMPI( + pc=0x9, + condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), + ) + + Op.STOP + + Op.JUMPDEST + + Op.SSTORE( + key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) + ), + balance=46, + nonce=0, + address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 + ) # Source: raw # 0x7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f0000000000000000000000000000000000000000000000000000000000000000557f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000557f0000000000000000000000000a84339188646595668352a061855560005155 # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -62,25 +75,7 @@ def test_random_statetest454( + Op.LOG0(offset=0x6595668352, size=Op.DUP9) + Op.SSTORE(key=Op.MLOAD(offset=0x0), value=0x8555), nonce=0, - address=Address(0x0089D9313F6C18F62805E3A145739544EE1459A7), # noqa: E501 - ) - # Source: raw - # 0x6000355415600957005b60203560003555 - coinbase = pre.deploy_contract( # noqa: F841 - code=Op.JUMPI( - pc=0x9, - condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), - ) - + Op.STOP - + Op.JUMPDEST - + Op.SSTORE( - key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) - ), - balance=46, - nonce=0, - address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom2/test_random_statetest456.py b/tests/ported_static/stRandom2/test_random_statetest456.py index 12994399809..c280a649e02 100644 --- a/tests/ported_static/stRandom2/test_random_statetest456.py +++ b/tests/ported_static/stRandom2/test_random_statetest456.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest456( ) -> None: """Test_random_statetest456.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -52,7 +49,6 @@ def test_random_statetest456( code=bytes.fromhex("41424143445a42f35b10773574016c9f"), balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x832214236B4DC7829A505AFAFB05B91D152F9FF4), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -70,7 +66,6 @@ def test_random_statetest456( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom2/test_random_statetest458.py b/tests/ported_static/stRandom2/test_random_statetest458.py index 9f678875984..04a0977cb90 100644 --- a/tests/ported_static/stRandom2/test_random_statetest458.py +++ b/tests/ported_static/stRandom2/test_random_statetest458.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,9 +33,7 @@ def test_random_statetest458( ) -> None: """Test_random_statetest458.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -47,6 +44,22 @@ def test_random_statetest458( gas_limit=9223372036854775807, ) + # Source: raw + # 0x6000355415600957005b60203560003555 + coinbase = pre.deploy_contract( # noqa: F841 + code=Op.JUMPI( + pc=0x9, + condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), + ) + + Op.STOP + + Op.JUMPDEST + + Op.SSTORE( + key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) + ), + balance=46, + nonce=0, + address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 + ) # Source: raw # 0x7689747fb3520231748bbe5eb9617666e630019e3e84ce7179c5d83b7e36050e5c05623956e599f54eb56213e4f96f69f402cd73e13c366095a3fe56bdd6a815d9ba23f3a9729bc462385c697ed9f24192c949e33ff7ed256c84979d70148b8fd8a62438ca053de2642271456dde46ce78cf7c6d1d2cc48eee658a73ad9f9ca1e550720490e2d0769e0a429773e42fc965ea1030f6c0787b4e7bc4915150a99fc758d3373561d8917c4c7d605f0cd8d2203f4d69606198437429e2f2d2bf742b28760a9c0ab51203d0c5d5b9e16d74ce0428945aaff2d0f99240a901d3233bd04e366c367ab93ecea0c206fbf01084254636df9c1f308c7d6875d5d5d37f3ce27989e39048f175f0d2dc49eaa86530def7ab70553f5d3904c843b5736025e321e7e2ab92af570e5b3bef4014c54e65316bb546eb8906f155f7b9405326740104d8f5d98dc97ac374ad0c58f4385e086891b9b2657e982eb15a367eab6683b51ea9f219abae5ca39f669a1a88a82e14efd4192a3edbe04a12d35679cf6338130d67f37c324464d16cc866be846b0304ef9fd3c6611e6cdf1277d65f6b2a58ffb61ba979740b8df72816602071e979e6029c9307d718ffdc70f37ea0019353c06b0fb56d8e3738dfdb18418e952092e8625b51749f276cc6ae416a85bd070c61e65240d8c2719c76b0420f84ece41c9be0f93d4f30581c28f69768395163937f95b86da30fa76b6937870245d9250e06b6e07dffea8f849a37647378dd59ac8365a37dd908eea26be2f53375e1dbee32ecaa7e957eace8c6f0883e4ef830485bd43b2b7851a0b11497f752d3ee4560e312a7a91b7b2a88c109737c92feb7807d481ac3fd823f038c4ba82df40a60982a7c7a6f6ba2cb95233c257b30e1c9d3c84aa37b6f4268fec34fb9eef1f8602e6a7bf1ebfa162680b57af09f7a7fc584055ff32d68a92e59ddaf20bcaaaa70d5970fd71c04cdbab46cf86e566e870664b6df2c6861347b2a3886788bbebbd03cbb51ed29357f699c8b974c61528a0423f67a837bfab83afa78a0bff70a653ea0f398f73632d5e3bea0a31115d65486fb6d667110448e0208264a3f76f35972666e7aa7339f23b08e6028616337a0366016601d6014600b630e6db38e73635706352bf1695bb9e53d5ad3ba1191ea65ae1880d46c687605148e427a09d40172dbdd5fc72fffb1443080a39a0ee77feed9ddc9050affce41d68c34ad97c484f204a987bcfaf46b9fa4a9ed2dad3738771a3cf86b43f303a8db8cde3ed8a40ae35574b9084f4cab88701d150e628d9b2a33e71c8f9fb0ce9e72866257691776f999b7ddf64f22532351bd34743e08facd1acc94b0d6b56bf97491d5ed9d726af684d1a47abcb243b7c29d12a315e939f70af8d2617df63567c3bc56c16609a27871af77631fe1ccaa0d15f8da9bd9a712a544abb92b925b1d7561fced60b09b6b22f2121b105a65a209e151b76b31be481d57353d10a1d968ca7a185495a8a2935571a0d17443a327bf11cb421baca9064bc4e4497c7d4c486c40082cc2d01b3f6023b726de95ac2ad53ae0b731d741676338181e66c8ac8daf0d54776827987e79d9f617c51f6f4b87cf8fee734c99e5e3fc2e37f17e626cbfd1195157215d10fa39b4b0947c3339139b280c0b042da7ec93a24416d5c52e0ba21ec9d39d6fbcd3d74266580eef6ca9bb9d76bb4dc441f3d6d0cf38307b505251deea82ab39f9ccd17a6507bf16b38640679c22f2134e8258f79b # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -151,23 +164,6 @@ def test_random_statetest458( nonce=0, address=Address(0x4F391713BDCA6E610DEA121DF82FF743D96D33B6), # noqa: E501 ) - # Source: raw - # 0x6000355415600957005b60203560003555 - coinbase = pre.deploy_contract( # noqa: F841 - code=Op.JUMPI( - pc=0x9, - condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), - ) - + Op.STOP - + Op.JUMPDEST - + Op.SSTORE( - key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) - ), - balance=46, - nonce=0, - address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom2/test_random_statetest467.py b/tests/ported_static/stRandom2/test_random_statetest467.py index c19f585f025..14eb143ce07 100644 --- a/tests/ported_static/stRandom2/test_random_statetest467.py +++ b/tests/ported_static/stRandom2/test_random_statetest467.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,9 +33,7 @@ def test_random_statetest467( ) -> None: """Test_random_statetest467.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -47,6 +44,22 @@ def test_random_statetest467( gas_limit=9223372036854775807, ) + # Source: raw + # 0x6000355415600957005b60203560003555 + coinbase = pre.deploy_contract( # noqa: F841 + code=Op.JUMPI( + pc=0x9, + condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), + ) + + Op.STOP + + Op.JUMPDEST + + Op.SSTORE( + key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) + ), + balance=46, + nonce=0, + address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 + ) # Source: raw # 0x700ab6605e03171122aeebd20b63699a72d454628639346ffaf92bcd1855c6dde5c90ba78a966a256c777ce8880c23f90f4a2ecc999a6cd42da7121d5e1fde1c9c340f9660b571a71e20a5753bc4e291adbd41a228289a0be175a606bc44dd2079ece46a2cba498bee0d80a41673d8016e7232f97a66b29954364570f6e2d08b6d429c6a75f737c594aca21580bc0d60e67c38a50ce1ddf0ce9963fd79da8a590429f5fcfb6e7fd9ee2d27201f95707235ce3dbc5997e44baa174111977f51dc6b333a9a63483e6a3d6f423ed5778057702664b65d4af9aab14d773a787d60bd24c439b29533c6b172278b6a78e64f8e319fbd6b45eeca466afd1eb2eecbaeed773da8711c4c65787e0a0a1297f525b7418f49fbc1b2446a847d74bb0a66e3b06ef70d8a8aa09a910a6be623c6a8239960381512da962eb868a21f99d90741128fcb711e029cff42f4f8f5d35947c4a7b39cff7fd46f916cc8612b146bbf52db1cd36e6c2fce7cd9ed232e21946081d78d87e61bc42fce313fa32b458d1e898e52cc2e607570a7e1d2ae3b5b7d58e0a70396bcfaae0789cd9202876488bb595d457a45bc48e190f5d56b34be6d244070ffe02107ceaf9313db08d9a1809b366fc956e6c5567da1d8a656406871eb0dd46268b5127366225cb464667bd081c949847a95e2821f589dad60c061ef2fa36b9e17c2b3a94181a8f8a89b486734ca1a8a0c86c26d076004601160066012635e0d738673636158e2e1f166e10de5d590572335 # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -106,23 +119,6 @@ def test_random_statetest467( nonce=0, address=Address(0x79940E2F1225EBA4FAB3405B111535075C733270), # noqa: E501 ) - # Source: raw - # 0x6000355415600957005b60203560003555 - coinbase = pre.deploy_contract( # noqa: F841 - code=Op.JUMPI( - pc=0x9, - condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), - ) - + Op.STOP - + Op.JUMPDEST - + Op.SSTORE( - key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) - ), - balance=46, - nonce=0, - address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom2/test_random_statetest469.py b/tests/ported_static/stRandom2/test_random_statetest469.py index 976fc3df018..5a99fa3f9b4 100644 --- a/tests/ported_static/stRandom2/test_random_statetest469.py +++ b/tests/ported_static/stRandom2/test_random_statetest469.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest469( ) -> None: """Test_random_statetest469.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -60,7 +57,6 @@ def test_random_statetest469( + Op.JUMP(pc=0x413B) + Op.SSTORE(key=Op.ADDMOD, value=Op.CALLCODE), nonce=0, - address=Address(0x912E90647207810A8FA1F685D7CD4A5BAA06E85D), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -78,7 +74,6 @@ def test_random_statetest469( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom2/test_random_statetest472.py b/tests/ported_static/stRandom2/test_random_statetest472.py index b135610ea3c..a2790261184 100644 --- a/tests/ported_static/stRandom2/test_random_statetest472.py +++ b/tests/ported_static/stRandom2/test_random_statetest472.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest472( ) -> None: """Test_random_statetest472.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,6 +43,22 @@ def test_random_statetest472( gas_limit=9223372036854775807, ) + # Source: raw + # 0x6000355415600957005b60203560003555 + coinbase = pre.deploy_contract( # noqa: F841 + code=Op.JUMPI( + pc=0x9, + condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), + ) + + Op.STOP + + Op.JUMPDEST + + Op.SSTORE( + key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) + ), + balance=46, + nonce=0, + address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 + ) # Source: raw # 0x7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000041437ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff090a60005155 # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -65,25 +78,7 @@ def test_random_statetest472( ), ), nonce=0, - address=Address(0x5B9EFB31B8BE05E6E52F6921F9EE79769A6792D0), # noqa: E501 - ) - # Source: raw - # 0x6000355415600957005b60203560003555 - coinbase = pre.deploy_contract( # noqa: F841 - code=Op.JUMPI( - pc=0x9, - condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), - ) - + Op.STOP - + Op.JUMPDEST - + Op.SSTORE( - key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) - ), - balance=46, - nonce=0, - address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom2/test_random_statetest476.py b/tests/ported_static/stRandom2/test_random_statetest476.py index d6c0f36122b..4478cded4e6 100644 --- a/tests/ported_static/stRandom2/test_random_statetest476.py +++ b/tests/ported_static/stRandom2/test_random_statetest476.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,9 +33,7 @@ def test_random_statetest476( ) -> None: """Test_random_statetest476.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -72,7 +69,6 @@ def test_random_statetest476( + Op.MLOAD(offset=0x0) + Op.SSTORE, nonce=0, - address=Address(0xAD6FFFED2E41E6D57F10DEBDF91B1DC35758B7AD), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -90,7 +86,6 @@ def test_random_statetest476( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom2/test_random_statetest478.py b/tests/ported_static/stRandom2/test_random_statetest478.py index 5ce01792554..6780cc9c185 100644 --- a/tests/ported_static/stRandom2/test_random_statetest478.py +++ b/tests/ported_static/stRandom2/test_random_statetest478.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest478( ) -> None: """Test_random_statetest478.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -53,7 +50,6 @@ def test_random_statetest478( "7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f00000000000000000000000000000000000000000000000000000000000000017f0000000000000000000000000000000000000000000000000000000000000001447f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000100000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000c3507f000000000000000000000000000000000000000000000000000000000000c3507f1606588a909558021569" # noqa: E501 ), nonce=0, - address=Address(0xCFBDED6C35B6AEFFC2AFE1C21FC42D489AD4E002), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -71,7 +67,6 @@ def test_random_statetest478( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom2/test_random_statetest481.py b/tests/ported_static/stRandom2/test_random_statetest481.py index d63f80b9b65..f63abbb04b3 100644 --- a/tests/ported_static/stRandom2/test_random_statetest481.py +++ b/tests/ported_static/stRandom2/test_random_statetest481.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest481( ) -> None: """Test_random_statetest481.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -53,7 +50,6 @@ def test_random_statetest481( "447f00000000000000000000000000000000000000000000000000000000000000017f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff09437f0000000000000000000000010000000000000000000000000000000000000000a2695a7d52064361127350" # noqa: E501 ), nonce=0, - address=Address(0x6566EB05C057CAD2FD88C1FEC362190264DDE517), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -71,7 +67,6 @@ def test_random_statetest481( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom2/test_random_statetest484.py b/tests/ported_static/stRandom2/test_random_statetest484.py index 4731b266e5b..2c67f679087 100644 --- a/tests/ported_static/stRandom2/test_random_statetest484.py +++ b/tests/ported_static/stRandom2/test_random_statetest484.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest484( ) -> None: """Test_random_statetest484.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,15 +43,6 @@ def test_random_statetest484( gas_limit=9223372036854775807, ) - # Source: raw - # 0x7f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff35427ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f000000000000000000000000000000000000000000000000000000000000c3507f000000000000000000000000595584a2558493a25b5a6a60005155 # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=bytes.fromhex( - "7f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff35427ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f000000000000000000000000000000000000000000000000000000000000c3507f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e79595584a2558493a25b5a6a60005155" # noqa: E501 - ), - nonce=0, - address=Address(0x55CFF4F5475D77A24015AB0F01029B182814B37B), # noqa: E501 - ) # Source: raw # 0x6000355415600957005b60203560003555 coinbase = pre.deploy_contract( # noqa: F841 @@ -71,7 +59,14 @@ def test_random_statetest484( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: raw + # 0x7f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff35427ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f000000000000000000000000000000000000000000000000000000000000c3507f000000000000000000000000595584a2558493a25b5a6a60005155 # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=bytes.fromhex( + "7f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff35427ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f000000000000000000000000000000000000000000000000000000000000c3507f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e79595584a2558493a25b5a6a60005155" # noqa: E501 + ), + nonce=0, + ) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom2/test_random_statetest485.py b/tests/ported_static/stRandom2/test_random_statetest485.py index 20fd3919473..8a8a0cceb40 100644 --- a/tests/ported_static/stRandom2/test_random_statetest485.py +++ b/tests/ported_static/stRandom2/test_random_statetest485.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest485( ) -> None: """Test_random_statetest485.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -53,7 +50,6 @@ def test_random_statetest485( "7f00000000000000000000000000000000000000000000000000000000000000017f00000000000000000000000000000000000000000000000000000000000000017f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000017f00000000000000000000000100000000000000000000000000000000000000008e447f00000000000000000000000100000000000000000000000000000000000000003a1a7e" # noqa: E501 ), nonce=0, - address=Address(0x91A7CC63F8BB623D64FE789D8CC49C06427BB9C2), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -71,7 +67,6 @@ def test_random_statetest485( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom2/test_random_statetest494.py b/tests/ported_static/stRandom2/test_random_statetest494.py index fd948b351b8..e4f6950cd24 100644 --- a/tests/ported_static/stRandom2/test_random_statetest494.py +++ b/tests/ported_static/stRandom2/test_random_statetest494.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest494( ) -> None: """Test_random_statetest494.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -53,7 +50,6 @@ def test_random_statetest494( "847f000000000000000000000000000000000000000000000000000000000000c35043657f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4362f03c897f50f073f219105455" # noqa: E501 ), nonce=0, - address=Address(0x38B239AB7D6AAF0165C4AD27921248D64F77A368), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -71,7 +67,6 @@ def test_random_statetest494( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom2/test_random_statetest496.py b/tests/ported_static/stRandom2/test_random_statetest496.py index 05b427a8f2b..6026a342b94 100644 --- a/tests/ported_static/stRandom2/test_random_statetest496.py +++ b/tests/ported_static/stRandom2/test_random_statetest496.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest496( ) -> None: """Test_random_statetest496.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -62,7 +59,6 @@ def test_random_statetest496( + Op.MLOAD(offset=0x0) + Op.SSTORE, nonce=0, - address=Address(0x3CD8F98E1691532041C91DF7D39EBF449B04CB9D), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -80,7 +76,6 @@ def test_random_statetest496( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom2/test_random_statetest498.py b/tests/ported_static/stRandom2/test_random_statetest498.py index 4f2ac888eba..97cfbdbd7ac 100644 --- a/tests/ported_static/stRandom2/test_random_statetest498.py +++ b/tests/ported_static/stRandom2/test_random_statetest498.py @@ -47,6 +47,23 @@ def test_random_statetest498( gas_limit=9223372036854775807, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: raw + # 0x6000355415600957005b60203560003555 + coinbase = pre.deploy_contract( # noqa: F841 + code=Op.JUMPI( + pc=0x9, + condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), + ) + + Op.STOP + + Op.JUMPDEST + + Op.SSTORE( + key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) + ), + balance=46, + nonce=0, + address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 + ) # Source: raw # 0x6bd243dbcfdc6982733e4cd6261574fc6cdec93282ff50ef24d8be05d58be29301ddb00d7547f6b65997e73d232b76d6484c11eb15c87b01f89e2779c427711ba193e4e163967efd1b9315187c3227f67b9282fc7524692fbf851cb370d396d53f7a86353aacecc5c1eadeddbb3925522f935fc5ed03568fbf40261c056a124f1334cc9fa8eea2bdbf68f04c10cc08b6babcbb6ee8d3fb88dd42d06d445b5eab34cb5d64408cf652fd7568acaa81b573f66fa8781e83185438e42796631ae9a9987f714d986f94fc6354921a9367bb6b9e555f24107cb814557f8bd87547ad612c3e726f9f495b0ac9e37fbe5f23014c68d8d032bfae779a5213c33778af679417d77733645f87b6042be92c553dbb6d85a2c56b21a53c0e612ae0a8d78d60f162b52efea464ebb0472b3e7794198cdb286cd2f21f06659320130750e7aa2c83ceb2801555785c9f02455252560846587006e90cbffc955445d9ef1f55eeb07011c02cee02df12dc35b36702539873e4b766e4ae9e829a442460dd7f845cd37dc08f93bef98a4d5b53ecd4cf4dd1a5c416f92116160f0fb673c30b7873b85a2ff6331a5d371f3d109f5794d712e03493b17fc562ac7589411127e654ce32d273f8300cc8544e7bd782aa7828b543958dadf872d7f13401a51b13835cc8a36be87cc7347cdf0f7aa2df420bb03e925c117d4befbc7e69472fd75f01f3f6c966de818174aba3b7a43014c3dd39414fb3d239d72e06852ae48e6203c60a7e844d6fd61c5b519d43780d383d103989f9bfce5ed122804cba183c188f5ce47c348a96973eca904f096aed4fb77d40ca9139447527f267a028eae5e3706e1975fc3e38327505e81d0e8c9fab1f60ec7ece71cc87510f308984ebdcb8ab84e1905dfdc0a19ee3c5f37e88dc3a9f26497c51427da28f6d777d9585b4ec790722bacaa179b1dc5b086d945623f9d29f6013600c60096019634f4421eb73631ac754faf17506f9cc63229e7fe309b7a2f1acf074a43aa4dd2b75bf6dadf21aadb9a3e239a9592f576c9265eebd2420e2626d2b2f1f7ee7a56725d7d4fe23da45725e8b709d2976703147ef66a8fc9a6c1225df7b79eec95ddda5e91c6e19bbc55baf9d6c440cc805f0d229738d17a76f95e329f94d5bc48cc5964933f9597fb57a6f7290649722d68a72fa2d081c4547943b3bbca2edc5f4032c5c916e585fa6abd1b209e2b6fb64498a37b9796c95da3fdb8013c13ef99ed49b29282ae55458c651fdb8598b527024d2da1e8a7015f65ee4ab0178b68ab8c877d55f3c89a7f1f7bc6c0d86bc69688cbcc252972693993bf766aac4efb2b65b216cca2e721dea3f3b3df3abbbfb7b8d # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -131,23 +148,6 @@ def test_random_statetest498( nonce=0, address=Address(0x1A819DD2E8CEC87D7E886DF4843E21775F6672A4), # noqa: E501 ) - # Source: raw - # 0x6000355415600957005b60203560003555 - coinbase = pre.deploy_contract( # noqa: F841 - code=Op.JUMPI( - pc=0x9, - condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), - ) - + Op.STOP - + Op.JUMPDEST - + Op.SSTORE( - key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) - ), - balance=46, - nonce=0, - address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom2/test_random_statetest499.py b/tests/ported_static/stRandom2/test_random_statetest499.py index c86a08df6b5..ef12fccaec7 100644 --- a/tests/ported_static/stRandom2/test_random_statetest499.py +++ b/tests/ported_static/stRandom2/test_random_statetest499.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest499( ) -> None: """Test_random_statetest499.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -68,7 +65,6 @@ def test_random_statetest499( + Op.CALLER + Op.SSTORE(key=Op.MLOAD(offset=0x0), value=Op.CODESIZE), nonce=0, - address=Address(0x3E92E47A39045FB9403EE960C8567D343DD24997), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -86,7 +82,6 @@ def test_random_statetest499( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom2/test_random_statetest504.py b/tests/ported_static/stRandom2/test_random_statetest504.py index 0a3f6789056..6fed29c3e1c 100644 --- a/tests/ported_static/stRandom2/test_random_statetest504.py +++ b/tests/ported_static/stRandom2/test_random_statetest504.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest504( ) -> None: """Test_random_statetest504.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,15 +43,6 @@ def test_random_statetest504( gas_limit=9223372036854775807, ) - # Source: raw - # 0x7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f0000000000000000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe457f0000000000000000000000000000000000000000000000000000000000000001e37f0000000000000000000000007f000000000000000000000000000000000000000000000000000000000000c35001589a84106d9c60005155 # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=bytes.fromhex( - "7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e797ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe457f0000000000000000000000000000000000000000000000000000000000000001e37f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e797f000000000000000000000000000000000000000000000000000000000000c35001589a84106d9c60005155" # noqa: E501 - ), - nonce=0, - address=Address(0x2505F255CAEC67DD060D15A5D7A77EFB5612B8B2), # noqa: E501 - ) # Source: raw # 0x6000355415600957005b60203560003555 coinbase = pre.deploy_contract( # noqa: F841 @@ -71,7 +59,14 @@ def test_random_statetest504( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: raw + # 0x7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f0000000000000000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe457f0000000000000000000000000000000000000000000000000000000000000001e37f0000000000000000000000007f000000000000000000000000000000000000000000000000000000000000c35001589a84106d9c60005155 # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=bytes.fromhex( + "7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e797ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe457f0000000000000000000000000000000000000000000000000000000000000001e37f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e797f000000000000000000000000000000000000000000000000000000000000c35001589a84106d9c60005155" # noqa: E501 + ), + nonce=0, + ) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom2/test_random_statetest507.py b/tests/ported_static/stRandom2/test_random_statetest507.py index 00c96ea5327..a2b16f06bd5 100644 --- a/tests/ported_static/stRandom2/test_random_statetest507.py +++ b/tests/ported_static/stRandom2/test_random_statetest507.py @@ -47,6 +47,23 @@ def test_random_statetest507( gas_limit=9223372036854775807, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: raw + # 0x6000355415600957005b60203560003555 + coinbase = pre.deploy_contract( # noqa: F841 + code=Op.JUMPI( + pc=0x9, + condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), + ) + + Op.STOP + + Op.JUMPDEST + + Op.SSTORE( + key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) + ), + balance=46, + nonce=0, + address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 + ) # Source: raw # 0x5a7f0000000000000000000000010000000000000000000000000000000000000000327f00000000000000000000000000000000000000000000000000000000000000017f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f0000000000000000000000006f99a4527612a199a06d1a348b02563a9b60005155 # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -65,23 +82,6 @@ def test_random_statetest507( nonce=0, address=Address(0xDA04E91DAE336F3095911CE42A208D591605593E), # noqa: E501 ) - # Source: raw - # 0x6000355415600957005b60203560003555 - coinbase = pre.deploy_contract( # noqa: F841 - code=Op.JUMPI( - pc=0x9, - condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), - ) - + Op.STOP - + Op.JUMPDEST - + Op.SSTORE( - key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) - ), - balance=46, - nonce=0, - address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom2/test_random_statetest508.py b/tests/ported_static/stRandom2/test_random_statetest508.py index e7d3533fc2c..526b840b681 100644 --- a/tests/ported_static/stRandom2/test_random_statetest508.py +++ b/tests/ported_static/stRandom2/test_random_statetest508.py @@ -46,6 +46,7 @@ def test_random_statetest508( gas_limit=9223372036854775807, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: raw # 0x41414444424143448231537241317f55 target = pre.deploy_contract( # noqa: F841 @@ -70,7 +71,6 @@ def test_random_statetest508( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom2/test_random_statetest509.py b/tests/ported_static/stRandom2/test_random_statetest509.py index df596f05e0b..ddc305bab70 100644 --- a/tests/ported_static/stRandom2/test_random_statetest509.py +++ b/tests/ported_static/stRandom2/test_random_statetest509.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest509( ) -> None: """Test_random_statetest509.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -52,7 +49,6 @@ def test_random_statetest509( code=Op.GASLIMIT + Op.TIMESTAMP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xBE28CDE0901EDA46D09A636150C7577A6CBA7D0F), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -70,7 +66,6 @@ def test_random_statetest509( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom2/test_random_statetest510.py b/tests/ported_static/stRandom2/test_random_statetest510.py index 5687c6349da..38e7ac14b97 100644 --- a/tests/ported_static/stRandom2/test_random_statetest510.py +++ b/tests/ported_static/stRandom2/test_random_statetest510.py @@ -47,6 +47,23 @@ def test_random_statetest510( gas_limit=9223372036854775807, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: raw + # 0x6000355415600957005b60203560003555 + coinbase = pre.deploy_contract( # noqa: F841 + code=Op.JUMPI( + pc=0x9, + condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), + ) + + Op.STOP + + Op.JUMPDEST + + Op.SSTORE( + key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) + ), + balance=46, + nonce=0, + address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 + ) # Source: raw # 0x7f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000017f00000000000000000000000100000000000000000000000000000000000000007f000000000000000000000000447f00000000000000000000000000000000000000000000000000000000000000005a456ff23a88535564545969f162615b93325560005155 # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -64,23 +81,6 @@ def test_random_statetest510( nonce=0, address=Address(0xABDD1DD76E15AE75FF51BD7F2B12571004CDD8BA), # noqa: E501 ) - # Source: raw - # 0x6000355415600957005b60203560003555 - coinbase = pre.deploy_contract( # noqa: F841 - code=Op.JUMPI( - pc=0x9, - condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), - ) - + Op.STOP - + Op.JUMPDEST - + Op.SSTORE( - key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) - ), - balance=46, - nonce=0, - address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom2/test_random_statetest513.py b/tests/ported_static/stRandom2/test_random_statetest513.py index 01c5d6eaaef..fb1baafd951 100644 --- a/tests/ported_static/stRandom2/test_random_statetest513.py +++ b/tests/ported_static/stRandom2/test_random_statetest513.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest513( ) -> None: """Test_random_statetest513.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -53,7 +50,6 @@ def test_random_statetest513( "7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff3b437ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f0000000000000000000000000000000000000000000000000000000000000001982046817382a13afa3760088d55" # noqa: E501 ), nonce=0, - address=Address(0x7254B47942E53D7BEB2E156F9239A7690AF65736), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -71,7 +67,6 @@ def test_random_statetest513( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom2/test_random_statetest523.py b/tests/ported_static/stRandom2/test_random_statetest523.py index 91e030fc3c5..5873c25cd21 100644 --- a/tests/ported_static/stRandom2/test_random_statetest523.py +++ b/tests/ported_static/stRandom2/test_random_statetest523.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest523( ) -> None: """Test_random_statetest523.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -62,7 +59,6 @@ def test_random_statetest523( + Op.MLOAD(offset=0x0) + Op.SSTORE, nonce=0, - address=Address(0x78E06DD6F641C103CEEF456E564348A48A6F0BEF), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -80,7 +76,6 @@ def test_random_statetest523( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom2/test_random_statetest524.py b/tests/ported_static/stRandom2/test_random_statetest524.py index 82e51bb75c4..39bd39c5f56 100644 --- a/tests/ported_static/stRandom2/test_random_statetest524.py +++ b/tests/ported_static/stRandom2/test_random_statetest524.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest524( ) -> None: """Test_random_statetest524.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -66,7 +63,6 @@ def test_random_statetest524( + Op.MLOAD(offset=0x0) + Op.SSTORE, nonce=0, - address=Address(0xAA56EE356B0DD8022AD49A794FB5A37C554B32AA), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -84,7 +80,6 @@ def test_random_statetest524( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom2/test_random_statetest525.py b/tests/ported_static/stRandom2/test_random_statetest525.py index db99b8a01dd..7e84b7db303 100644 --- a/tests/ported_static/stRandom2/test_random_statetest525.py +++ b/tests/ported_static/stRandom2/test_random_statetest525.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest525( ) -> None: """Test_random_statetest525.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -53,7 +50,6 @@ def test_random_statetest525( "7f00000000000000000000000100000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000c3507f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff097ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe02207160005155" # noqa: E501 ), nonce=0, - address=Address(0x2A83E67B69429CFB983B8ED79B7E8A53E6824092), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -71,7 +67,6 @@ def test_random_statetest525( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom2/test_random_statetest527.py b/tests/ported_static/stRandom2/test_random_statetest527.py index 1b0dfbde10b..13bf5da4e70 100644 --- a/tests/ported_static/stRandom2/test_random_statetest527.py +++ b/tests/ported_static/stRandom2/test_random_statetest527.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest527( ) -> None: """Test_random_statetest527.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,6 +43,22 @@ def test_random_statetest527( gas_limit=9223372036854775807, ) + # Source: raw + # 0x6000355415600957005b60203560003555 + coinbase = pre.deploy_contract( # noqa: F841 + code=Op.JUMPI( + pc=0x9, + condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), + ) + + Op.STOP + + Op.JUMPDEST + + Op.SSTORE( + key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) + ), + balance=46, + nonce=0, + address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 + ) # Source: raw # 0x347f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff447f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000017f0000000000000000000000007f000000000000000000000000000000000000000000000000000000000000c3507f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff80a160005155 # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -63,25 +76,7 @@ def test_random_statetest527( + Op.MLOAD(offset=0x0) + Op.SSTORE, nonce=0, - address=Address(0x490584E08E20CA97487089106B76679F5986D234), # noqa: E501 - ) - # Source: raw - # 0x6000355415600957005b60203560003555 - coinbase = pre.deploy_contract( # noqa: F841 - code=Op.JUMPI( - pc=0x9, - condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), - ) - + Op.STOP - + Op.JUMPDEST - + Op.SSTORE( - key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) - ), - balance=46, - nonce=0, - address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom2/test_random_statetest528.py b/tests/ported_static/stRandom2/test_random_statetest528.py index 1bc46774fd7..fb7c2eed010 100644 --- a/tests/ported_static/stRandom2/test_random_statetest528.py +++ b/tests/ported_static/stRandom2/test_random_statetest528.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest528( ) -> None: """Test_random_statetest528.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -70,7 +67,6 @@ def test_random_statetest528( + Op.DUP13 + Op.SSTORE(key=Op.DUP5, value=Op.DUP6), nonce=0, - address=Address(0xE95BB71003200148E7E9559EC3ECF538802C42BF), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -88,7 +84,6 @@ def test_random_statetest528( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom2/test_random_statetest531.py b/tests/ported_static/stRandom2/test_random_statetest531.py index e05e6588fd3..0b97e16c02a 100644 --- a/tests/ported_static/stRandom2/test_random_statetest531.py +++ b/tests/ported_static/stRandom2/test_random_statetest531.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest531( ) -> None: """Test_random_statetest531.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -52,7 +49,6 @@ def test_random_statetest531( code=bytes.fromhex("41414143434344456a12c140f3933655"), balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x83C3FD438BEC2A4BB605AE688641469341532D9F), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -70,7 +66,6 @@ def test_random_statetest531( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom2/test_random_statetest536.py b/tests/ported_static/stRandom2/test_random_statetest536.py index e1fd50f5ad9..99167111ed0 100644 --- a/tests/ported_static/stRandom2/test_random_statetest536.py +++ b/tests/ported_static/stRandom2/test_random_statetest536.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest536( ) -> None: """Test_random_statetest536.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -53,7 +50,6 @@ def test_random_statetest536( "7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f000000000000000000000000000000000000000000000000000000000000c3507f000000000000000000000000000000000000000000000000000000000000c350537f000000000000000000000000000000000000000000000000000000000000c3507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9309f3999c7d92795a947a6f317f55" # noqa: E501 ), nonce=0, - address=Address(0x85E66F40EB86A2D63DF2DC248B3D6F4FC138B003), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -71,7 +67,6 @@ def test_random_statetest536( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom2/test_random_statetest543.py b/tests/ported_static/stRandom2/test_random_statetest543.py index 99a861f4bf7..da90447e74e 100644 --- a/tests/ported_static/stRandom2/test_random_statetest543.py +++ b/tests/ported_static/stRandom2/test_random_statetest543.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest543( ) -> None: """Test_random_statetest543.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -62,7 +59,6 @@ def test_random_statetest543( + Op.GASLIMIT + Op.DUP7, nonce=0, - address=Address(0xB04D75CC292C99077DA7BC4149CEAFB239447F01), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -80,7 +76,6 @@ def test_random_statetest543( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom2/test_random_statetest547.py b/tests/ported_static/stRandom2/test_random_statetest547.py index 743047f764d..162adbf1b50 100644 --- a/tests/ported_static/stRandom2/test_random_statetest547.py +++ b/tests/ported_static/stRandom2/test_random_statetest547.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,9 +33,7 @@ def test_random_statetest547( ) -> None: """Test_random_statetest547.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -54,7 +51,6 @@ def test_random_statetest547( "7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000001417fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000c35014623971943854a009768255" # noqa: E501 ), nonce=0, - address=Address(0x63D5E8A1C6E9BB983F0C2249ADB82C045A7510A7), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -72,7 +68,6 @@ def test_random_statetest547( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom2/test_random_statetest554.py b/tests/ported_static/stRandom2/test_random_statetest554.py index 667fb3c5175..5a4435ea941 100644 --- a/tests/ported_static/stRandom2/test_random_statetest554.py +++ b/tests/ported_static/stRandom2/test_random_statetest554.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,9 +33,7 @@ def test_random_statetest554( ) -> None: """Test_random_statetest554.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -47,6 +44,22 @@ def test_random_statetest554( gas_limit=9223372036854775807, ) + # Source: raw + # 0x6000355415600957005b60203560003555 + coinbase = pre.deploy_contract( # noqa: F841 + code=Op.JUMPI( + pc=0x9, + condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), + ) + + Op.STOP + + Op.JUMPDEST + + Op.SSTORE( + key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) + ), + balance=46, + nonce=0, + address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 + ) # Source: raw # 0x601460dca06029728b67ba4c2fc8c63c46f19bb45a4be3f678b30669ba571e944074c21b140a7a65d14a921ec804a45ecf4d952aa923fb23a0574acd8ef9f82c7db17e157f651bbeb520203bd398160345137b0419a395630fce1a7ed24c0cccfd91766140e0682f6bd571db701b4616b567f215faf42fb37d2a7c43c05a634612322eda99f09cc2907a6cba01bb6869b7d24b897ec43b9b63a8747a897af14c1f4c0b186c6311d36de86b8c8172aa43c3dfe3ea16503380877fa7f32deb9f60254d124338105942b4b5b88c443351de5ebf14c2380f4a91327d68a0da66abd627db75739942675f5855728fd677646cafec536e37d0da8122cf8681bc106013601b600360086307efe33a7363176fe819f16566b603cccf387c5f10e5cdb2ba1b456d2a0386ee72ddf3ff65b33a551afa423f8af05e347b5c50b6fe69c77f0682ef890d8ed8ab3833f128389f6407911fb20590642c9765e97c7f31dfa251377a47ca45b72ce5c1896a697990d60a01cabaf5e4d8f55f11fd37427351d1f8e89810c7aeec6482fd03d7e7ca58fbaae361e3936936543d6dacb1f97f19c3721866491bad73f32faea37b4a8c273668e04dff8863a542e11775a693c3b4bcd4fc1a87ddb6450f8f6c2f1ba807aaffb67e62af22cd93175b5ffb428ee9116dad4a695aa514b8ca4d615fd728a61c124c796554a98241320ac2d6b9f16ee1c203dbba537a211142df4c2e626e4108f87ab6d5b8e9ce86f92aba50a47acc60d734e7a066131d99dad149451b386120eed210723bd8304caa61048c67512ca417ae8857a46ad24ca1f2cb75f75ef86a927152bd86981a216d8147f49ead4be46967dd10751491f9f1ac2f50fd5dad394b7838a9eb89b372698362647bddbb90586e4e921a8cc96ea0c50d07da472b3e6360a39c # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -114,23 +127,6 @@ def test_random_statetest554( nonce=0, address=Address(0xD4932C914A13BD1791675290FDD56965C3FCBD03), # noqa: E501 ) - # Source: raw - # 0x6000355415600957005b60203560003555 - coinbase = pre.deploy_contract( # noqa: F841 - code=Op.JUMPI( - pc=0x9, - condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), - ) - + Op.STOP - + Op.JUMPDEST - + Op.SSTORE( - key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) - ), - balance=46, - nonce=0, - address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom2/test_random_statetest558.py b/tests/ported_static/stRandom2/test_random_statetest558.py index ff4ba1b42bc..d3ada857876 100644 --- a/tests/ported_static/stRandom2/test_random_statetest558.py +++ b/tests/ported_static/stRandom2/test_random_statetest558.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest558( ) -> None: """Test_random_statetest558.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -52,7 +49,6 @@ def test_random_statetest558( code=bytes.fromhex("43767855"), balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xFEA0FD6F8E6416AF47AB5057D310ED005855772A), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -70,7 +66,6 @@ def test_random_statetest558( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom2/test_random_statetest560.py b/tests/ported_static/stRandom2/test_random_statetest560.py index 44eeabf0f7b..cb807ff1815 100644 --- a/tests/ported_static/stRandom2/test_random_statetest560.py +++ b/tests/ported_static/stRandom2/test_random_statetest560.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest560( ) -> None: """Test_random_statetest560.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -53,7 +50,6 @@ def test_random_statetest560( "7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000c3507f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000c35059a17f0000000000000000000000000000000000000000000000000000000000000001f38f07bf60005155" # noqa: E501 ), nonce=0, - address=Address(0xC9EDD4CF792E9FEFFEE7968E9A49A0BD81A7BA40), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -71,7 +67,6 @@ def test_random_statetest560( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom2/test_random_statetest562.py b/tests/ported_static/stRandom2/test_random_statetest562.py index c099274d4b0..fdecc6b3f61 100644 --- a/tests/ported_static/stRandom2/test_random_statetest562.py +++ b/tests/ported_static/stRandom2/test_random_statetest562.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest562( ) -> None: """Test_random_statetest562.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -67,7 +64,6 @@ def test_random_statetest562( + Op.DUP8 + Op.PREVRANDAO, nonce=0, - address=Address(0x86E63B3928D89817589609C1E2180E22939D6A62), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -85,7 +81,6 @@ def test_random_statetest562( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom2/test_random_statetest563.py b/tests/ported_static/stRandom2/test_random_statetest563.py index 09ed06b301c..48692f9193b 100644 --- a/tests/ported_static/stRandom2/test_random_statetest563.py +++ b/tests/ported_static/stRandom2/test_random_statetest563.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest563( ) -> None: """Test_random_statetest563.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,15 +43,6 @@ def test_random_statetest563( gas_limit=9223372036854775807, ) - # Source: raw - # 0x7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f00000000000000000000000000000000000000000000000000000000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe418b7f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000461098038315ba267 # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=bytes.fromhex( - "7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f00000000000000000000000000000000000000000000000000000000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe418b7f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e790461098038315ba267" # noqa: E501 - ), - nonce=0, - address=Address(0x2F5F042C5D61DA63B8AFA98D3502FF4B4950C22B), # noqa: E501 - ) # Source: raw # 0x6000355415600957005b60203560003555 coinbase = pre.deploy_contract( # noqa: F841 @@ -71,7 +59,14 @@ def test_random_statetest563( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: raw + # 0x7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f00000000000000000000000000000000000000000000000000000000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe418b7f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000461098038315ba267 # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=bytes.fromhex( + "7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f00000000000000000000000000000000000000000000000000000000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe418b7f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e790461098038315ba267" # noqa: E501 + ), + nonce=0, + ) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom2/test_random_statetest566.py b/tests/ported_static/stRandom2/test_random_statetest566.py index b2b6f020b69..88158c925a3 100644 --- a/tests/ported_static/stRandom2/test_random_statetest566.py +++ b/tests/ported_static/stRandom2/test_random_statetest566.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest566( ) -> None: """Test_random_statetest566.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,6 +43,22 @@ def test_random_statetest566( gas_limit=9223372036854775807, ) + # Source: raw + # 0x6000355415600957005b60203560003555 + coinbase = pre.deploy_contract( # noqa: F841 + code=Op.JUMPI( + pc=0x9, + condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), + ) + + Op.STOP + + Op.JUMPDEST + + Op.SSTORE( + key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) + ), + balance=46, + nonce=0, + address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 + ) # Source: raw # 0x9a7f000000000000000000000000000000000000000000000000000000000000c3507f0000000000000000000000000000000000000000000000000000000000000000117f00000000000000000000000100000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff427f00000000000000000000000093963332578665734360005155 # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -63,25 +76,7 @@ def test_random_statetest566( + Op.DUP7 + Op.PUSH6[0x734360005155], nonce=0, - address=Address(0xE8FDA25222733F9C226C2E5B6DCA729EB71076FD), # noqa: E501 - ) - # Source: raw - # 0x6000355415600957005b60203560003555 - coinbase = pre.deploy_contract( # noqa: F841 - code=Op.JUMPI( - pc=0x9, - condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), - ) - + Op.STOP - + Op.JUMPDEST - + Op.SSTORE( - key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) - ), - balance=46, - nonce=0, - address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom2/test_random_statetest567.py b/tests/ported_static/stRandom2/test_random_statetest567.py index 4146843bf4d..0359dcba008 100644 --- a/tests/ported_static/stRandom2/test_random_statetest567.py +++ b/tests/ported_static/stRandom2/test_random_statetest567.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest567( ) -> None: """Test_random_statetest567.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -53,7 +50,6 @@ def test_random_statetest567( "7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f000000000000000000000000000000000000000000000000000000000000c3507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000100000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000017e7f00000000000000000000000000000000000000000000000000000000000000017ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe906697998df1160b" # noqa: E501 ), nonce=0, - address=Address(0x4860849F881F7ECBB6A4C146EEF8F95F52F462BB), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -71,7 +67,6 @@ def test_random_statetest567( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom2/test_random_statetest569.py b/tests/ported_static/stRandom2/test_random_statetest569.py index 8be41c17132..22705f10709 100644 --- a/tests/ported_static/stRandom2/test_random_statetest569.py +++ b/tests/ported_static/stRandom2/test_random_statetest569.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest569( ) -> None: """Test_random_statetest569.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,15 +43,6 @@ def test_random_statetest569( gas_limit=9223372036854775807, ) - # Source: raw - # 0x7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe427f000000000000000000000000097f00000000000000000000000000000000000000000000000000000000000000017ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe8e0781816fff31986c0a773c9b014460005155 # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=bytes.fromhex( - "7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe427f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e79097f00000000000000000000000000000000000000000000000000000000000000017ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe8e0781816fff31986c0a773c9b014460005155" # noqa: E501 - ), - nonce=0, - address=Address(0xA3FC9ABF6758B048BB28CEE4C8F4F9722C90AFE2), # noqa: E501 - ) # Source: raw # 0x6000355415600957005b60203560003555 coinbase = pre.deploy_contract( # noqa: F841 @@ -71,7 +59,14 @@ def test_random_statetest569( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: raw + # 0x7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe427f000000000000000000000000097f00000000000000000000000000000000000000000000000000000000000000017ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe8e0781816fff31986c0a773c9b014460005155 # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=bytes.fromhex( + "7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe427f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e79097f00000000000000000000000000000000000000000000000000000000000000017ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe8e0781816fff31986c0a773c9b014460005155" # noqa: E501 + ), + nonce=0, + ) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom2/test_random_statetest572.py b/tests/ported_static/stRandom2/test_random_statetest572.py index b3520e74675..0cc16d4916d 100644 --- a/tests/ported_static/stRandom2/test_random_statetest572.py +++ b/tests/ported_static/stRandom2/test_random_statetest572.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest572( ) -> None: """Test_random_statetest572.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,6 +43,22 @@ def test_random_statetest572( gas_limit=9223372036854775807, ) + # Source: raw + # 0x6000355415600957005b60203560003555 + coinbase = pre.deploy_contract( # noqa: F841 + code=Op.JUMPI( + pc=0x9, + condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), + ) + + Op.STOP + + Op.JUMPDEST + + Op.SSTORE( + key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) + ), + balance=46, + nonce=0, + address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 + ) # Source: raw # 0x457f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe097f000000000000000000000000440ba13b38 # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -65,25 +78,7 @@ def test_random_statetest572( + Op.EXTCODESIZE + Op.CODESIZE, nonce=0, - address=Address(0x78F04949EEF09FC73B40744730BE09013E89F197), # noqa: E501 - ) - # Source: raw - # 0x6000355415600957005b60203560003555 - coinbase = pre.deploy_contract( # noqa: F841 - code=Op.JUMPI( - pc=0x9, - condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), - ) - + Op.STOP - + Op.JUMPDEST - + Op.SSTORE( - key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) - ), - balance=46, - nonce=0, - address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom2/test_random_statetest575.py b/tests/ported_static/stRandom2/test_random_statetest575.py index d734d409077..a741736b223 100644 --- a/tests/ported_static/stRandom2/test_random_statetest575.py +++ b/tests/ported_static/stRandom2/test_random_statetest575.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest575( ) -> None: """Test_random_statetest575.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,6 +43,22 @@ def test_random_statetest575( gas_limit=9223372036854775807, ) + # Source: raw + # 0x6000355415600957005b60203560003555 + coinbase = pre.deploy_contract( # noqa: F841 + code=Op.JUMPI( + pc=0x9, + condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), + ) + + Op.STOP + + Op.JUMPDEST + + Op.SSTORE( + key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) + ), + balance=46, + nonce=0, + address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 + ) # Source: raw # 0x7f00000000000000000000000000000000000000000000000000000000000000017f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000c3507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000095949655558f6771c7798d047d7b5560005155 # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -68,25 +81,7 @@ def test_random_statetest575( + Op.DUP16 + Op.SSTORE(key=Op.MLOAD(offset=0x0), value=0x71C7798D047D7B55), nonce=0, - address=Address(0xB14048581095A497D29ABD14EA870A27E1BCDC77), # noqa: E501 - ) - # Source: raw - # 0x6000355415600957005b60203560003555 - coinbase = pre.deploy_contract( # noqa: F841 - code=Op.JUMPI( - pc=0x9, - condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), - ) - + Op.STOP - + Op.JUMPDEST - + Op.SSTORE( - key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) - ), - balance=46, - nonce=0, - address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom2/test_random_statetest576.py b/tests/ported_static/stRandom2/test_random_statetest576.py index e2fc5041966..c1b5f771703 100644 --- a/tests/ported_static/stRandom2/test_random_statetest576.py +++ b/tests/ported_static/stRandom2/test_random_statetest576.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest576( ) -> None: """Test_random_statetest576.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,15 +43,6 @@ def test_random_statetest576( gas_limit=9223372036854775807, ) - # Source: raw - # 0x7f0000000000000000000000000000000000000000000000000000000000000000447f000000000000000000000000000000000000000000000000000000000000c3507f00000000000000000000000000000000000000000000000000000000000000017f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000c3507f0000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000086053a0b43890710810651116e1555 # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=bytes.fromhex( - "7f0000000000000000000000000000000000000000000000000000000000000000447f000000000000000000000000000000000000000000000000000000000000c3507f00000000000000000000000000000000000000000000000000000000000000017f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000c3507f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e797f000000000000000000000000000000000000000000000000000000000000000086053a0b43890710810651116e1555" # noqa: E501 - ), - nonce=0, - address=Address(0x447D08ABED1518B3B0D1ADEE769AF4E010F53737), # noqa: E501 - ) # Source: raw # 0x6000355415600957005b60203560003555 coinbase = pre.deploy_contract( # noqa: F841 @@ -71,7 +59,14 @@ def test_random_statetest576( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: raw + # 0x7f0000000000000000000000000000000000000000000000000000000000000000447f000000000000000000000000000000000000000000000000000000000000c3507f00000000000000000000000000000000000000000000000000000000000000017f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000c3507f0000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000086053a0b43890710810651116e1555 # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=bytes.fromhex( + "7f0000000000000000000000000000000000000000000000000000000000000000447f000000000000000000000000000000000000000000000000000000000000c3507f00000000000000000000000000000000000000000000000000000000000000017f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000c3507f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e797f000000000000000000000000000000000000000000000000000000000000000086053a0b43890710810651116e1555" # noqa: E501 + ), + nonce=0, + ) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom2/test_random_statetest579.py b/tests/ported_static/stRandom2/test_random_statetest579.py index 69d435af74c..7ab0ddf9106 100644 --- a/tests/ported_static/stRandom2/test_random_statetest579.py +++ b/tests/ported_static/stRandom2/test_random_statetest579.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest579( ) -> None: """Test_random_statetest579.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -53,7 +50,6 @@ def test_random_statetest579( "7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000017f000000000000000000000000000000000000000000000000000000000000c3507f000000000000000000000000000000000000000000000000000000000000c3507f000000000000000000000000000000000000000000000000000000000000c3507f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000017f000000000000000000000000000000000000000000000000000000000000c350f2075b67c755" # noqa: E501 ), nonce=0, - address=Address(0x78442C2F07F963337C3CEF742D2A1BA66986A918), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -71,7 +67,6 @@ def test_random_statetest579( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom2/test_random_statetest582.py b/tests/ported_static/stRandom2/test_random_statetest582.py index 35043f6656e..62bc7a401ca 100644 --- a/tests/ported_static/stRandom2/test_random_statetest582.py +++ b/tests/ported_static/stRandom2/test_random_statetest582.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest582( ) -> None: """Test_random_statetest582.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,6 +43,22 @@ def test_random_statetest582( gas_limit=9223372036854775807, ) + # Source: raw + # 0x6000355415600957005b60203560003555 + coinbase = pre.deploy_contract( # noqa: F841 + code=Op.JUMPI( + pc=0x9, + condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), + ) + + Op.STOP + + Op.JUMPDEST + + Op.SSTORE( + key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) + ), + balance=46, + nonce=0, + address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 + ) # Source: raw # 0x7f000000000000000000000000417f00000000000000000000000000000000000000000000000000000000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f000000000000000000000000000000000000000000000000000000000000c3507f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000045086201771880f35560005155 # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -63,25 +76,7 @@ def test_random_statetest582( + Op.MLOAD(offset=0x0) + Op.SSTORE, nonce=0, - address=Address(0x99E6F87CBA9C1737F49965828C1BADEC51A91DFD), # noqa: E501 - ) - # Source: raw - # 0x6000355415600957005b60203560003555 - coinbase = pre.deploy_contract( # noqa: F841 - code=Op.JUMPI( - pc=0x9, - condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), - ) - + Op.STOP - + Op.JUMPDEST - + Op.SSTORE( - key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) - ), - balance=46, - nonce=0, - address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom2/test_random_statetest583.py b/tests/ported_static/stRandom2/test_random_statetest583.py index dd7f390a1cf..b564ad40a77 100644 --- a/tests/ported_static/stRandom2/test_random_statetest583.py +++ b/tests/ported_static/stRandom2/test_random_statetest583.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,9 +33,7 @@ def test_random_statetest583( ) -> None: """Test_random_statetest583.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -47,6 +44,22 @@ def test_random_statetest583( gas_limit=9223372036854775807, ) + # Source: raw + # 0x6000355415600957005b60203560003555 + coinbase = pre.deploy_contract( # noqa: F841 + code=Op.JUMPI( + pc=0x9, + condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), + ) + + Op.STOP + + Op.JUMPDEST + + Op.SSTORE( + key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) + ), + balance=46, + nonce=0, + address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 + ) # Source: raw # 0x7f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000017ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000007f000000000000000000000000425162327c5536a36af3809c3a8f396660005155 # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -68,25 +81,7 @@ def test_random_statetest583( ) + Op.PUSH11[0xF3809C3A8F396660005155], nonce=0, - address=Address(0x5ED77238CFAC99CEDF0D4438DDADFE34ED439D7F), # noqa: E501 - ) - # Source: raw - # 0x6000355415600957005b60203560003555 - coinbase = pre.deploy_contract( # noqa: F841 - code=Op.JUMPI( - pc=0x9, - condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), - ) - + Op.STOP - + Op.JUMPDEST - + Op.SSTORE( - key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) - ), - balance=46, - nonce=0, - address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom2/test_random_statetest589.py b/tests/ported_static/stRandom2/test_random_statetest589.py index 09fd635981d..9843c5030ad 100644 --- a/tests/ported_static/stRandom2/test_random_statetest589.py +++ b/tests/ported_static/stRandom2/test_random_statetest589.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest589( ) -> None: """Test_random_statetest589.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,23 +43,6 @@ def test_random_statetest589( gas_limit=9223372036854775807, ) - # Source: raw - # 0x427f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000017f0000000000000000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff583481f36a85646d53671639175b940860005155 # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.TIMESTAMP - + Op.PUSH32[0x0] - + Op.PUSH32[0x1] - + Op.PUSH32[0x4F3F701464972E74606D6EA82D4D3080599A0E79] - + Op.PUSH32[ - 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE - ] - + Op.PUSH32[0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF] * 2 - + Op.PC - + Op.RETURN(offset=Op.DUP2, size=Op.CALLVALUE) - + Op.SSTORE(key=Op.MLOAD(offset=0x0), value=0x85646D53671639175B9408), - nonce=0, - address=Address(0xB2DA1F608A7E0626E721677FA30FC46D2D99C655), # noqa: E501 - ) # Source: raw # 0x6000355415600957005b60203560003555 coinbase = pre.deploy_contract( # noqa: F841 @@ -79,7 +59,22 @@ def test_random_statetest589( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: raw + # 0x427f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000017f0000000000000000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff583481f36a85646d53671639175b940860005155 # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.TIMESTAMP + + Op.PUSH32[0x0] + + Op.PUSH32[0x1] + + Op.PUSH32[0x4F3F701464972E74606D6EA82D4D3080599A0E79] + + Op.PUSH32[ + 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE + ] + + Op.PUSH32[0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF] * 2 + + Op.PC + + Op.RETURN(offset=Op.DUP2, size=Op.CALLVALUE) + + Op.SSTORE(key=Op.MLOAD(offset=0x0), value=0x85646D53671639175B9408), + nonce=0, + ) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom2/test_random_statetest597.py b/tests/ported_static/stRandom2/test_random_statetest597.py index 7060a11d36a..56d8fd21a72 100644 --- a/tests/ported_static/stRandom2/test_random_statetest597.py +++ b/tests/ported_static/stRandom2/test_random_statetest597.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest597( ) -> None: """Test_random_statetest597.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,15 +43,6 @@ def test_random_statetest597( gas_limit=9223372036854775807, ) - # Source: raw - # 0x7f00000000000000000000000100000000000000000000000000000000000000007f000000000000000000000000967f0000000000000000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3a7e737d40070a156482930a0875 # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=bytes.fromhex( - "7f00000000000000000000000100000000000000000000000000000000000000007f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e79967f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e797ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3a7e737d40070a156482930a0875" # noqa: E501 - ), - nonce=0, - address=Address(0x2F021DA657FB4D77FBCC8556101F287DDC7E44DB), # noqa: E501 - ) # Source: raw # 0x6000355415600957005b60203560003555 coinbase = pre.deploy_contract( # noqa: F841 @@ -71,7 +59,14 @@ def test_random_statetest597( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: raw + # 0x7f00000000000000000000000100000000000000000000000000000000000000007f000000000000000000000000967f0000000000000000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3a7e737d40070a156482930a0875 # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=bytes.fromhex( + "7f00000000000000000000000100000000000000000000000000000000000000007f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e79967f0000000000000000000000004f3f701464972e74606d6ea82d4d3080599a0e797ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3a7e737d40070a156482930a0875" # noqa: E501 + ), + nonce=0, + ) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom2/test_random_statetest601.py b/tests/ported_static/stRandom2/test_random_statetest601.py index 63caca6e3fd..045e18c7ec7 100644 --- a/tests/ported_static/stRandom2/test_random_statetest601.py +++ b/tests/ported_static/stRandom2/test_random_statetest601.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest601( ) -> None: """Test_random_statetest601.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -53,7 +50,6 @@ def test_random_statetest601( "7f000000000000000000000000ffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f000000000000000000000000945304eb96065b2a98b57a48a06ae28d285a71b57f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000c350377f000000000000000000000000000000000000000000000000000000000000c3507f00000000000000000000000100000000000000000000000000000000000000000b3a09785b1084418866100af0868a3455" # noqa: E501 ), nonce=0, - address=Address(0x287D3F26FEBB148710A503235EBF7AC1F1B75838), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -71,7 +67,6 @@ def test_random_statetest601( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom2/test_random_statetest604.py b/tests/ported_static/stRandom2/test_random_statetest604.py index be96f4eadd2..389d4667196 100644 --- a/tests/ported_static/stRandom2/test_random_statetest604.py +++ b/tests/ported_static/stRandom2/test_random_statetest604.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest604( ) -> None: """Test_random_statetest604.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -69,7 +66,6 @@ def test_random_statetest604( ) + Op.MOD(Op.GAS, Op.MOD), nonce=0, - address=Address(0x7619F7A13BA66BB3E74B1D609BC4C979FDFDA283), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -87,7 +83,6 @@ def test_random_statetest604( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom2/test_random_statetest609.py b/tests/ported_static/stRandom2/test_random_statetest609.py index ba6ee4afcf1..a47e6b355e1 100644 --- a/tests/ported_static/stRandom2/test_random_statetest609.py +++ b/tests/ported_static/stRandom2/test_random_statetest609.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest609( ) -> None: """Test_random_statetest609.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -53,7 +50,6 @@ def test_random_statetest609( "7f00000000000000000000000100000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000017ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7f00000000000000000000000000000000000000000000000000000000000000001a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000100000000000000000000000000000000000000001a736e628f796436739660005155" # noqa: E501 ), nonce=0, - address=Address(0xD9B6A1D9A0741C62DC96E8D37A972BE5ADB708E8), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -71,7 +67,6 @@ def test_random_statetest609( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom2/test_random_statetest611.py b/tests/ported_static/stRandom2/test_random_statetest611.py index 76d7452a4a4..9ae93c6cade 100644 --- a/tests/ported_static/stRandom2/test_random_statetest611.py +++ b/tests/ported_static/stRandom2/test_random_statetest611.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest611( ) -> None: """Test_random_statetest611.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -61,7 +58,6 @@ def test_random_statetest611( + Op.MLOAD(offset=0x0) + Op.SSTORE, nonce=0, - address=Address(0x54F36E7E44CEAB6D23E4D7EBD547858553649B64), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -79,7 +75,6 @@ def test_random_statetest611( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom2/test_random_statetest618.py b/tests/ported_static/stRandom2/test_random_statetest618.py index 7ad782f88aa..1db1b9752e6 100644 --- a/tests/ported_static/stRandom2/test_random_statetest618.py +++ b/tests/ported_static/stRandom2/test_random_statetest618.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,9 +33,7 @@ def test_random_statetest618( ) -> None: """Test_random_statetest618.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -47,6 +44,22 @@ def test_random_statetest618( gas_limit=9223372036854775807, ) + # Source: raw + # 0x6000355415600957005b60203560003555 + coinbase = pre.deploy_contract( # noqa: F841 + code=Op.JUMPI( + pc=0x9, + condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), + ) + + Op.STOP + + Op.JUMPDEST + + Op.SSTORE( + key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) + ), + balance=46, + nonce=0, + address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 + ) # Source: raw # 0x7f0000000000000000000000007f000000000000000000000000000000000000000000000000000000000000c3507f0000000000000000000000000000000000000000000000000000000000000000427f000000000000000000000000000000000000000000000000000000000000c3507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff437f00000000000000000000000100000000000000000000000000000000000000003bf1135a3a58 # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -70,25 +83,7 @@ def test_random_statetest618( + Op.GASPRICE + Op.PC, nonce=0, - address=Address(0xCE2DE07F0AF237ED58F6F7E008C3A9D82EB1769A), # noqa: E501 - ) - # Source: raw - # 0x6000355415600957005b60203560003555 - coinbase = pre.deploy_contract( # noqa: F841 - code=Op.JUMPI( - pc=0x9, - condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), - ) - + Op.STOP - + Op.JUMPDEST - + Op.SSTORE( - key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) - ), - balance=46, - nonce=0, - address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom2/test_random_statetest624.py b/tests/ported_static/stRandom2/test_random_statetest624.py index b89093a8f1f..0354e149a84 100644 --- a/tests/ported_static/stRandom2/test_random_statetest624.py +++ b/tests/ported_static/stRandom2/test_random_statetest624.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest624( ) -> None: """Test_random_statetest624.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -52,7 +49,6 @@ def test_random_statetest624( code=bytes.fromhex("43424244457943455409635939"), balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x5ED2AE8463A1745023951E424FA0BF024F04FA55), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -70,7 +66,6 @@ def test_random_statetest624( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom2/test_random_statetest625.py b/tests/ported_static/stRandom2/test_random_statetest625.py index 1af091857f7..9bf9d9ad615 100644 --- a/tests/ported_static/stRandom2/test_random_statetest625.py +++ b/tests/ported_static/stRandom2/test_random_statetest625.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest625( ) -> None: """Test_random_statetest625.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -64,7 +61,6 @@ def test_random_statetest625( + Op.MLOAD(offset=0x0) + Op.SSTORE, nonce=0, - address=Address(0x2C7C249FD8A5BF9D65B5F5E62E5F093202F0E4AC), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -82,7 +78,6 @@ def test_random_statetest625( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom2/test_random_statetest626.py b/tests/ported_static/stRandom2/test_random_statetest626.py index 0e3c822052a..b482213562f 100644 --- a/tests/ported_static/stRandom2/test_random_statetest626.py +++ b/tests/ported_static/stRandom2/test_random_statetest626.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest626( ) -> None: """Test_random_statetest626.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,6 +43,22 @@ def test_random_statetest626( gas_limit=9223372036854775807, ) + # Source: raw + # 0x6000355415600957005b60203560003555 + coinbase = pre.deploy_contract( # noqa: F841 + code=Op.JUMPI( + pc=0x9, + condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), + ) + + Op.STOP + + Op.JUMPDEST + + Op.SSTORE( + key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) + ), + balance=46, + nonce=0, + address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 + ) # Source: raw # 0x7f00000000000000000000000100000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000c3507f00000000000000000000000000000000000000000000000000000000000000017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000017f0000000000000000000000007f000000000000000000000000000000000000000000000000000000000000c350f4fd94058f06a255 # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -66,25 +79,7 @@ def test_random_statetest626( + Op.LOG2 + Op.SSTORE, nonce=0, - address=Address(0xF55F25B074CBF8502ED5A9D1E2AAB4D351B67AF2), # noqa: E501 - ) - # Source: raw - # 0x6000355415600957005b60203560003555 - coinbase = pre.deploy_contract( # noqa: F841 - code=Op.JUMPI( - pc=0x9, - condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), - ) - + Op.STOP - + Op.JUMPDEST - + Op.SSTORE( - key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) - ), - balance=46, - nonce=0, - address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom2/test_random_statetest632.py b/tests/ported_static/stRandom2/test_random_statetest632.py index f56c65bd5e9..b79f0ab6d8f 100644 --- a/tests/ported_static/stRandom2/test_random_statetest632.py +++ b/tests/ported_static/stRandom2/test_random_statetest632.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest632( ) -> None: """Test_random_statetest632.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -58,7 +55,6 @@ def test_random_statetest632( + Op.EXP(Op.CALLCODE, Op.EQ(Op.CALLDATASIZE, Op.ADDRESS)), balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xDE14E9D6C6F9145C355FDF3100FE961632D4CF85), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -76,7 +72,6 @@ def test_random_statetest632( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom2/test_random_statetest636.py b/tests/ported_static/stRandom2/test_random_statetest636.py index f69cad28738..28817f7fd00 100644 --- a/tests/ported_static/stRandom2/test_random_statetest636.py +++ b/tests/ported_static/stRandom2/test_random_statetest636.py @@ -47,6 +47,23 @@ def test_random_statetest636( gas_limit=9223372036854775807, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: raw + # 0x6000355415600957005b60203560003555 + coinbase = pre.deploy_contract( # noqa: F841 + code=Op.JUMPI( + pc=0x9, + condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), + ) + + Op.STOP + + Op.JUMPDEST + + Op.SSTORE( + key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) + ), + balance=46, + nonce=0, + address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 + ) # Source: raw # 0x74619921c0750ac3268e7a6703ca2bf6c43308e6fc36607561af1ca16db843f7a2e05bfc2e46afc179930b7a8724a04f9f561bdc65bba0ad5797dde0a28d5e8aca56e1510b724f676a6d33dee473d74664561e49e3d86338c8dcf260f06cbfa6283966d2d0f2591f54088e6f36545c0d90fcdea10d5629629ffb1b16626c339f6490829f1b1675f0f2f62b0b7c9d3f070fafd53f99f90f31e19e81d3db688929213e34affc41116e6ae6f54ad5c2062b27a9fbec78a52f7a26c6347408631a6c0efcf33fe576953a4043e846b686471403f38a615a0a8e601d600a600e60146301019a517363314bc0fef1600c7eb69785d3593d3a8552018a4faba5b591975e8b8056ebc01f5ce5f5f7c04eca9062b458a835649be8fbaa906f3c4d8f92f8c27517f0addd45e050bfcf55792d8bf87c39d39ed9b1ef6c8c070d8da4a624ce548b37d03ae8107ca6da49be4adffc9f5ae896c52b936a18bed4bd9fcbae531274706e9e9b9030619a40714bb4b22e7bef8cf7b01551327188ee4bb6247118d0e95549a92f7dd9305484cc054e5f206d70d008699a85896061427b05ae2a7f16230f66ab4dd548e03b0972010f5afff39a4f9a90e55e91584e86629f3e8775f53da16fceedd834103a50dbe72a6634e4dbf374c70e6bd041628dc8b30de3c3d7aa0e7bb48df927c78ed30b286e249c2cbe79fb55956f492e413e771d0cd63f7357ab1e9a38026a4ba9278427812728699a2c747189 # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -107,23 +124,6 @@ def test_random_statetest636( nonce=0, address=Address(0xBDC4B8AF0F40B0EC2256166F7145B81CD824A868), # noqa: E501 ) - # Source: raw - # 0x6000355415600957005b60203560003555 - coinbase = pre.deploy_contract( # noqa: F841 - code=Op.JUMPI( - pc=0x9, - condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), - ) - + Op.STOP - + Op.JUMPDEST - + Op.SSTORE( - key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) - ), - balance=46, - nonce=0, - address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom2/test_random_statetest639.py b/tests/ported_static/stRandom2/test_random_statetest639.py index 7fabc96e3bc..65239f95c60 100644 --- a/tests/ported_static/stRandom2/test_random_statetest639.py +++ b/tests/ported_static/stRandom2/test_random_statetest639.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,9 +33,7 @@ def test_random_statetest639( ) -> None: """Test_random_statetest639.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -47,6 +44,22 @@ def test_random_statetest639( gas_limit=9223372036854775807, ) + # Source: raw + # 0x6000355415600957005b60203560003555 + coinbase = pre.deploy_contract( # noqa: F841 + code=Op.JUMPI( + pc=0x9, + condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), + ) + + Op.STOP + + Op.JUMPDEST + + Op.SSTORE( + key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) + ), + balance=46, + nonce=0, + address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 + ) # Source: raw # 0x6e993d78e80807a0d34bdbfa4e0afa9d7eab95e6f8772a548229700e2dcc612ac9ceeb898af8436680a2e1074df8ced0137964d71c8fe8a10fb58f8706ea3ee1b54a0848e742ca357e3d023460c161b1f5a17c48da2ae1e6987c52223414746fab0e39130693d15a48d39b5130096a7c1570c4fb89343ef5d10e912decba682bf205de79e84c573c9e2b0ffbd4d6117e40046b4c2d77156ada28960d9bb97f56d243429aa245c32e1f800a686ebe298dd08349d864486d7a1569b5aae495776bb5e71206cd09f54d1cd713966557567542184c74b95cc0d8ac3d0e05d0264b8d42a3563826123fc0d964521b61b86374591a821818672ef0dea05d259bc4f98c34418d9e7a677173b211649c07df7670aca688053842de6157c4fb5e678adc0611fcc20a1d836ec69b9370d09b83f1b0293a1b102d6d73978584b14fb2ab517001867e6545dd2dc3438f9c7828f6d3c6e4da98113ce2486c1ad028dc9947b28590071b977e651d352b078cb96b27f9ff7252c9f3ce9e5151ae7af1064ab8a5d92ed543b9d59c341f85bb22aa2fa7d7ee7310ac8f519e66da165b9efe3663657b1e28f4eb3e7338391339af5346d12c14bbc0863c26d7e999776c7939cefac542ed69f518bbef5461c0df385004f5411c3faaa65c7b6abf900ca1ef1f40bb938f727695a1ca14012ba07cc01548f3df75544b11bb52b7693bed7e2fc1537b2f8d63c4db4c3d8fc72b6f5f7e7b4d1ec8c1ac89230936975d19626788f03504a8c9acf66437d6d885607778bee6fe54742ddc9a7d8373dbfe2e21aacf8816944c02ef983260156009600960186329ec801e736356837182f175259fc2ea2df7d720fb0914ed44bcb12b8ff15e712ef67d868fe7fba6b46fac671a45bcace82fa83b87b8744835ac63d2b6cf3d157d7526909f9c4d1efbf68d780af1c0f2dabbfc53d2c71dc461bf7f788e3a9c48cd1df8d146a7df97125985162ecd37b059204323d066cb4709a3a1715f7c4a9fb905c26ba87933ef2499d3447d5cd4df27a6205c8a1ce06719c3e065e66ab80222ff7ed1f72f533a1160330dbd8dcd0489ec2dac84d7522a4d8732c5ae9e08d9a251682fb33fa08ecc05197d897a1d5f28328caa78ca6cd6b86fd08a1748fa959665861d18c25a3cae79732fe4fb3ad8b48c17c8efeeb5ec22be8b20ec4eae2955d65b9a6c1415c23047aa8f2c29aeddd78765c1bc3eda63416d84cdb9b8d7942020db3b1ed861a966475eb6ef9f9920692a879ee6bf9d0a1dd9d386 # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -132,23 +145,6 @@ def test_random_statetest639( nonce=0, address=Address(0x9FECB32D9AE49C08DA1E2551BA9257BE9A181E76), # noqa: E501 ) - # Source: raw - # 0x6000355415600957005b60203560003555 - coinbase = pre.deploy_contract( # noqa: F841 - code=Op.JUMPI( - pc=0x9, - condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), - ) - + Op.STOP - + Op.JUMPDEST - + Op.SSTORE( - key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) - ), - balance=46, - nonce=0, - address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom2/test_random_statetest640.py b/tests/ported_static/stRandom2/test_random_statetest640.py index fdd132094ba..fa10463591f 100644 --- a/tests/ported_static/stRandom2/test_random_statetest640.py +++ b/tests/ported_static/stRandom2/test_random_statetest640.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest640( ) -> None: """Test_random_statetest640.""" coinbase = Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -62,7 +59,6 @@ def test_random_statetest640( + Op.MLOAD(offset=0x0) + Op.SSTORE, nonce=0, - address=Address(0x63EA2AA7FCD26F2C76102BE53BCB49AFFE48AEDA), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -80,7 +76,6 @@ def test_random_statetest640( nonce=0, address=Address(0x4F3F701464972E74606D6EA82D4D3080599A0E79), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom2/test_random_statetest642.py b/tests/ported_static/stRandom2/test_random_statetest642.py index 6ed885da421..64930192d13 100644 --- a/tests/ported_static/stRandom2/test_random_statetest642.py +++ b/tests/ported_static/stRandom2/test_random_statetest642.py @@ -47,6 +47,7 @@ def test_random_statetest642( ) pre[sender] = Account(balance=0x26551A696CACB206) + pre[addr_2] = Account(balance=0x11BAE0BB79D6A164, nonce=163) # Source: raw # 0x62f46a4f547b169c9edf92f4b39273fe47accc75d1209ae58463c2585607ce051ff6714c4f0fbf6de0659784434fb240652ff52d08576408f168a43a6651f765a4788a05537086290691d5a3239db43eefea96b0012ea26534e99e4ba9ee7f92f37fa731707f800683bafb70815757d861ad8cc6804154ce5b9de3146b58cd53 # noqa: E501 addr = pre.deploy_contract( # noqa: F841 @@ -65,7 +66,6 @@ def test_random_statetest642( nonce=112, address=Address(0x88F8BB676EB054B4F4788ABF1200CB51361038CF), # noqa: E501 ) - pre[addr_2] = Account(balance=0x11BAE0BB79D6A164, nonce=163) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom2/test_random_statetest645.py b/tests/ported_static/stRandom2/test_random_statetest645.py index 34e478b5292..fb3fae390ae 100644 --- a/tests/ported_static/stRandom2/test_random_statetest645.py +++ b/tests/ported_static/stRandom2/test_random_statetest645.py @@ -69,6 +69,8 @@ def test_random_statetest645( gas_limit=13175566155172316, ) + pre[sender] = Account(balance=0x6F1F70FEA641F30A) + pre[addr_2] = Account(balance=0xB3508C0F8A22F8A1, nonce=28) # Source: raw # 0x58679b8e24022d8c28f3620b55a06384bc2f83136515b61916f0f579ea3e9d28799d45aa77bf1fc1a84edf0193dea2d610209eaaf9c814 # noqa: E501 addr = pre.deploy_contract( # noqa: F841 @@ -83,7 +85,6 @@ def test_random_statetest645( nonce=29, address=Address(0x322C72DEDAD1A81092AB9BA908FBEC8779CE1C32), # noqa: E501 ) - pre[sender] = Account(balance=0x6F1F70FEA641F30A) # Source: raw # 0x63cbb01282621d72de5268022948f746c938a0cb7c01ef17f23ed237d9f3262c4eb1b95112820595b127c516074df06223db7e0c396eb18074f148d96fd766dda35b6cc250661b5f83f0ed625ba68a5ff49aa1 # noqa: E501 coinbase = pre.deploy_contract( # noqa: F841 @@ -97,7 +98,6 @@ def test_random_statetest645( nonce=175, address=Address(0xAA0103980A7C3113D3A8F81478B0281492EB3D38), # noqa: E501 ) - pre[addr_2] = Account(balance=0xB3508C0F8A22F8A1, nonce=28) tx_data = [ Bytes( diff --git a/tests/ported_static/stRandom2/test_random_statetest647.py b/tests/ported_static/stRandom2/test_random_statetest647.py index 6e369d401fd..04b997bddbd 100644 --- a/tests/ported_static/stRandom2/test_random_statetest647.py +++ b/tests/ported_static/stRandom2/test_random_statetest647.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -26,16 +25,13 @@ ["state_tests/stRandom2/randomStatetest647Filler.json"], ) @pytest.mark.valid_from("Cancun") -@pytest.mark.pre_alloc_mutable def test_random_statetest647( state_test: StateTestFiller, pre: Alloc, ) -> None: """Malicious bytecode found by fuzztest tool: returndatacopy(0,-1).""" coinbase = Address(0xD94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) - sender = EOA( - key=0x5B7B8EFB6D003CD481E408D8759A25ADC79955092F1A380D8F8B57346C1D1342 - ) + sender = pre.fund_eoa(amount=0x174876E800) env = Environment( fee_recipient=coinbase, @@ -46,7 +42,6 @@ def test_random_statetest647( gas_limit=18857228215205537, ) - pre[sender] = Account(balance=0x174876E800) # Source: raw # 0x6001600160000360003e00 target = pre.deploy_contract( # noqa: F841 @@ -55,7 +50,6 @@ def test_random_statetest647( ) + Op.STOP, nonce=7, - address=Address(0x782B7C65205E1C08192DF7357E2FE778C81256A9), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stRandom2/test_random_statetest648.py b/tests/ported_static/stRandom2/test_random_statetest648.py index 5a22cb04b9d..e08661220fa 100644 --- a/tests/ported_static/stRandom2/test_random_statetest648.py +++ b/tests/ported_static/stRandom2/test_random_statetest648.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_random_statetest648( ) -> None: """Consensus issue test produced by fuzz testing team...""" coinbase = Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) - sender = EOA( - key=0xFF348633B687EC0F553647F4DDEED7590E90C7EA65B87C5BD399F4C869B9C9FC - ) + sender = pre.fund_eoa(amount=0xFFFFFFFF) env = Environment( fee_recipient=coinbase, @@ -64,16 +61,13 @@ def test_random_statetest648( + Op.SELFDESTRUCT(address=0xF5) + Op.REVERT, nonce=0, - address=Address(0xCA5C69FA03B9DFF4D059971AC17EDAC7EF758725), # noqa: E501 ) # Source: raw # 0x600050 addr = pre.deploy_contract( # noqa: F841 code=Op.POP(0x0), nonce=0, - address=Address(0xA828265D4B2DB08E65A1C68D2878F15368B5AE75), # noqa: E501 ) - pre[sender] = Account(balance=0xFFFFFFFF) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom2/test_random_statetest649.py b/tests/ported_static/stRandom2/test_random_statetest649.py index 9a4305bee5c..72333b88ceb 100644 --- a/tests/ported_static/stRandom2/test_random_statetest649.py +++ b/tests/ported_static/stRandom2/test_random_statetest649.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,9 +33,7 @@ def test_random_statetest649( ) -> None: """Consensus issue test produced by fuzz testing team...""" coinbase = Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) - sender = EOA( - key=0x61EC5E5029A151E121E39AE4D7546D549EA4B130F645F6F650CEEC0416FE27F4 - ) + sender = pre.fund_eoa(amount=0x3FFFFFFFFFFFFFFF) env = Environment( fee_recipient=coinbase, @@ -152,9 +149,7 @@ def test_random_statetest649( + Op.PUSH2[0x365C] + Op.STOP, nonce=0, - address=Address(0x39AB27391D04D35CAE13DCDF2FACABA711F0588F), # noqa: E501 ) - pre[sender] = Account(balance=0x3FFFFFFFFFFFFFFF) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRandom2/test_random_statetest650.py b/tests/ported_static/stRandom2/test_random_statetest650.py index c84cfc8e8eb..383d82978cc 100644 --- a/tests/ported_static/stRandom2/test_random_statetest650.py +++ b/tests/ported_static/stRandom2/test_random_statetest650.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,9 +33,7 @@ def test_random_statetest650( ) -> None: """Consensus issue test produced by fuzz testing team...""" coinbase = Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) - sender = EOA( - key=0x61EC5E5029A151E121E39AE4D7546D549EA4B130F645F6F650CEEC0416FE27F4 - ) + sender = pre.fund_eoa(amount=0x3FFFFFFFFFFFFFFF) env = Environment( fee_recipient=coinbase, @@ -3303,9 +3300,7 @@ def test_random_statetest650( ret_size=0x20, ), nonce=0, - address=Address(0x9D258197DE5279A844B4BE3D23547CA4233A70BC), # noqa: E501 ) - pre[sender] = Account(balance=0x3FFFFFFFFFFFFFFF) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRecursiveCreate/test_recursive_create.py b/tests/ported_static/stRecursiveCreate/test_recursive_create.py index 7bfcde15d6e..80d5901bc12 100644 --- a/tests/ported_static/stRecursiveCreate/test_recursive_create.py +++ b/tests/ported_static/stRecursiveCreate/test_recursive_create.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_recursive_create( """Test_recursive_create.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) contract_0 = Address(0x095E7BAEA6A6C7C4C2DFEB977EFAC326AF552D87) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -56,9 +53,7 @@ def test_recursive_create( + Op.STOP, balance=0x1312D00, nonce=0, - address=Address(0x095E7BAEA6A6C7C4C2DFEB977EFAC326AF552D87), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRecursiveCreate/test_recursive_create_return_value.py b/tests/ported_static/stRecursiveCreate/test_recursive_create_return_value.py index ac0d8780754..041f86ff498 100644 --- a/tests/ported_static/stRecursiveCreate/test_recursive_create_return_value.py +++ b/tests/ported_static/stRecursiveCreate/test_recursive_create_return_value.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -36,9 +35,7 @@ def test_recursive_create_return_value( """Test_recursive_create_return_value.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) contract_0 = Address(0x095E7BAEA6A6C7C4C2DFEB977EFAC326AF552D87) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -60,9 +57,7 @@ def test_recursive_create_return_value( + Op.STOP, balance=0x1312D00, nonce=0, - address=Address(0x095E7BAEA6A6C7C4C2DFEB977EFAC326AF552D87), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRefundTest/test_refund50_1.py b/tests/ported_static/stRefundTest/test_refund50_1.py index 4c3dc22599e..1135b777d09 100644 --- a/tests/ported_static/stRefundTest/test_refund50_1.py +++ b/tests/ported_static/stRefundTest/test_refund50_1.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_refund50_1( ) -> None: """Test_refund50_1.""" coinbase = Address(0xEB201D2887816E041F6E807E804F64F3A7A226FE) - sender = EOA( - key=0xDC4EFA209AECDD4C2D5201A419EA27506151B4EC687F14A613229E310932491B - ) + sender = pre.fund_eoa(amount=0x989680) env = Environment( fee_recipient=coinbase, @@ -59,9 +56,7 @@ def test_refund50_1( storage={1: 1, 2: 1, 3: 1, 4: 1, 5: 1}, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x6737EAC10F0B6FF19A1C903CAFC30B26752A5AF4), # noqa: E501 ) - pre[sender] = Account(balance=0x989680) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRefundTest/test_refund50_2.py b/tests/ported_static/stRefundTest/test_refund50_2.py index ed6f0dddafc..4d471f24074 100644 --- a/tests/ported_static/stRefundTest/test_refund50_2.py +++ b/tests/ported_static/stRefundTest/test_refund50_2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_refund50_2( ) -> None: """Test_refund50_2.""" coinbase = Address(0xEB201D2887816E041F6E807E804F64F3A7A226FE) - sender = EOA( - key=0xDC4EFA209AECDD4C2D5201A419EA27506151B4EC687F14A613229E310932491B - ) + sender = pre.fund_eoa(amount=0x989680) env = Environment( fee_recipient=coinbase, @@ -61,9 +58,7 @@ def test_refund50_2( storage={1: 1, 2: 1, 3: 1, 4: 1, 5: 1}, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xDD9BC2AEC4F69625B8F1D9D0FACB81C72E9A4D59), # noqa: E501 ) - pre[sender] = Account(balance=0x989680) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRefundTest/test_refund50percent_cap.py b/tests/ported_static/stRefundTest/test_refund50percent_cap.py index 8aac98451c8..d92a991123c 100644 --- a/tests/ported_static/stRefundTest/test_refund50percent_cap.py +++ b/tests/ported_static/stRefundTest/test_refund50percent_cap.py @@ -47,6 +47,7 @@ def test_refund50percent_cap( ) pre[coinbase] = Account(balance=0, nonce=1) + pre[sender] = Account(balance=0x989680) # Source: lll # { @@1 @@2 [[ 10 ]] (EXP 2 0xff) [[ 11 ]] (BALANCE (ADDRESS)) [[ 1 ]] 0 [[ 2 ]] 0 [[ 3 ]] 0 [[ 4 ]] 0 [[ 5 ]] 0 [[ 6 ]] 0 } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -66,7 +67,6 @@ def test_refund50percent_cap( nonce=0, address=Address(0xEF67F354C8505E1056889970C3D9B5E0FE65D1E2), # noqa: E501 ) - pre[sender] = Account(balance=0x989680) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRefundTest/test_refund600.py b/tests/ported_static/stRefundTest/test_refund600.py index 64d950e48f0..cce448a08c4 100644 --- a/tests/ported_static/stRefundTest/test_refund600.py +++ b/tests/ported_static/stRefundTest/test_refund600.py @@ -47,6 +47,7 @@ def test_refund600( ) pre[coinbase] = Account(balance=0, nonce=1) + pre[sender] = Account(balance=0x989680) # Source: lll # { @@1 @@2 [[ 10 ]] (EXP 2 0xffff) [[ 11 ]] (BALANCE (ADDRESS)) [[ 1 ]] 0 [[ 2 ]] 0 [[ 3 ]] 0 [[ 4 ]] 0 [[ 5 ]] 0 [[ 6 ]] 0 } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -66,7 +67,6 @@ def test_refund600( nonce=0, address=Address(0xC09923E2275E4EE7822A1FEB5EEE1C18143575C7), # noqa: E501 ) - pre[sender] = Account(balance=0x989680) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRefundTest/test_refund_call_a.py b/tests/ported_static/stRefundTest/test_refund_call_a.py index f78495153f9..bc745f449be 100644 --- a/tests/ported_static/stRefundTest/test_refund_call_a.py +++ b/tests/ported_static/stRefundTest/test_refund_call_a.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_refund_call_a( ) -> None: """Test_refund_call_a.""" coinbase = Address(0xEB201D2887816E041F6E807E804F64F3A7A226FE) - sender = EOA( - key=0x752660E61324E901F7231DFAE39984F4D433A241D533838E4700925F477814FD - ) + sender = pre.fund_eoa(amount=0x1312D00) env = Environment( fee_recipient=coinbase, @@ -48,13 +45,21 @@ def test_refund_call_a( pre[coinbase] = Account(balance=0, nonce=1) # Source: lll + # { [[ 1 ]] 0 } + addr = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x1, value=0x0) + Op.STOP, + storage={1: 1}, + balance=0xDE0B6B3A7640000, + nonce=0, + ) + # Source: lll # { [[ 0 ]] (CALL 5500 0 0 0 0 0 )} # noqa: E501 target = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( key=0x0, value=Op.CALL( gas=0x157C, - address=0xF4C9FC42FAEDA49049E3B8E2B97A17CC2FE95718, + address=addr, value=0x0, args_offset=0x0, args_size=0x0, @@ -66,17 +71,6 @@ def test_refund_call_a( storage={1: 1}, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x3D72F604B4D56320853A5ECE45772DBBF419F315), # noqa: E501 - ) - pre[sender] = Account(balance=0x1312D00) - # Source: lll - # { [[ 1 ]] 0 } - addr = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x1, value=0x0) + Op.STOP, - storage={1: 1}, - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0xF4C9FC42FAEDA49049E3B8E2B97A17CC2FE95718), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stRefundTest/test_refund_call_a_not_enough_gas_in_call.py b/tests/ported_static/stRefundTest/test_refund_call_a_not_enough_gas_in_call.py index 9a31197d1a1..def38bc9f7b 100644 --- a/tests/ported_static/stRefundTest/test_refund_call_a_not_enough_gas_in_call.py +++ b/tests/ported_static/stRefundTest/test_refund_call_a_not_enough_gas_in_call.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_refund_call_a_not_enough_gas_in_call( ) -> None: """Test_refund_call_a_not_enough_gas_in_call.""" coinbase = Address(0xEB201D2887816E041F6E807E804F64F3A7A226FE) - sender = EOA( - key=0x7C857D62C76CE09F2E8EC3FA9277578C67B69C6547364568FDDB841071E5BD7 - ) + sender = pre.fund_eoa(amount=0xF4240) env = Environment( fee_recipient=coinbase, @@ -48,13 +45,21 @@ def test_refund_call_a_not_enough_gas_in_call( pre[coinbase] = Account(balance=0, nonce=1) # Source: lll + # { [[ 1 ]] 0 } + addr = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x1, value=0x0) + Op.STOP, + storage={1: 1}, + balance=0xDE0B6B3A7640000, + nonce=0, + ) + # Source: lll # { [[ 0 ]] (CALL 5005 0 0 0 0 0 )} # noqa: E501 target = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( key=0x0, value=Op.CALL( gas=0x138D, - address=0xF4C9FC42FAEDA49049E3B8E2B97A17CC2FE95718, + address=addr, value=0x0, args_offset=0x0, args_size=0x0, @@ -66,17 +71,6 @@ def test_refund_call_a_not_enough_gas_in_call( storage={1: 1}, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x8329332CCFB6AE9DF0412E842619FB1C989FBF48), # noqa: E501 - ) - pre[sender] = Account(balance=0xF4240) - # Source: lll - # { [[ 1 ]] 0 } - addr = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x1, value=0x0) + Op.STOP, - storage={1: 1}, - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0xF4C9FC42FAEDA49049E3B8E2B97A17CC2FE95718), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stRefundTest/test_refund_call_a_oog.py b/tests/ported_static/stRefundTest/test_refund_call_a_oog.py index aca7b380114..b9b0bda841c 100644 --- a/tests/ported_static/stRefundTest/test_refund_call_a_oog.py +++ b/tests/ported_static/stRefundTest/test_refund_call_a_oog.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_refund_call_a_oog( ) -> None: """Test_refund_call_a_oog.""" coinbase = Address(0xEB201D2887816E041F6E807E804F64F3A7A226FE) - sender = EOA( - key=0x27B48AAA30A609C11C7ABA1CB67FC191B5B59F9FF876930F0085D5FAEF4A4824 - ) + sender = pre.fund_eoa(amount=0x2DC6C0) env = Environment( fee_recipient=coinbase, @@ -48,13 +45,21 @@ def test_refund_call_a_oog( pre[coinbase] = Account(balance=0, nonce=1) # Source: lll + # { [[ 1 ]] 0 } + addr = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x1, value=0x0) + Op.STOP, + storage={1: 1}, + balance=0xDE0B6B3A7640000, + nonce=0, + ) + # Source: lll # { [[ 0 ]] (CALL 6000 0 0 0 0 0 )} # noqa: E501 target = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( key=0x0, value=Op.CALL( gas=0x1770, - address=0xF4C9FC42FAEDA49049E3B8E2B97A17CC2FE95718, + address=addr, value=0x0, args_offset=0x0, args_size=0x0, @@ -66,17 +71,6 @@ def test_refund_call_a_oog( storage={1: 1}, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x1B98D6B82E06B90C71C779925AE5B84E28401256), # noqa: E501 - ) - pre[sender] = Account(balance=0x2DC6C0) - # Source: lll - # { [[ 1 ]] 0 } - addr = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x1, value=0x0) + Op.STOP, - storage={1: 1}, - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0xF4C9FC42FAEDA49049E3B8E2B97A17CC2FE95718), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stRefundTest/test_refund_call_to_suicide_no_storage.py b/tests/ported_static/stRefundTest/test_refund_call_to_suicide_no_storage.py index e5b4113c10d..a374d190c0b 100644 --- a/tests/ported_static/stRefundTest/test_refund_call_to_suicide_no_storage.py +++ b/tests/ported_static/stRefundTest/test_refund_call_to_suicide_no_storage.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -58,9 +57,7 @@ def test_refund_call_to_suicide_no_storage( ) -> None: """Test_refund_call_to_suicide_no_storage.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x6F0117D3E9C684C7D6E1E6B79DC3880DA2BEBE77C765B171C062FDFFD38A673F - ) + sender = pre.fund_eoa(amount=0x2540BE400) env = Environment( fee_recipient=coinbase, @@ -92,7 +89,6 @@ def test_refund_call_to_suicide_no_storage( nonce=0, address=Address(0x5BE4B33890F720EFF72BE0019B122E0FF75CB937), # noqa: E501 ) - pre[sender] = Account(balance=0x2540BE400) # Source: lll # { (SELFDESTRUCT ) } # noqa: E501 addr = pre.deploy_contract( # noqa: F841 diff --git a/tests/ported_static/stRefundTest/test_refund_call_to_suicide_storage.py b/tests/ported_static/stRefundTest/test_refund_call_to_suicide_storage.py index d9d88b0c1df..ebc41bce622 100644 --- a/tests/ported_static/stRefundTest/test_refund_call_to_suicide_storage.py +++ b/tests/ported_static/stRefundTest/test_refund_call_to_suicide_storage.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -58,9 +57,7 @@ def test_refund_call_to_suicide_storage( ) -> None: """Test_refund_call_to_suicide_storage.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x6F0117D3E9C684C7D6E1E6B79DC3880DA2BEBE77C765B171C062FDFFD38A673F - ) + sender = pre.fund_eoa(amount=0x2540BE400) env = Environment( fee_recipient=coinbase, @@ -92,7 +89,6 @@ def test_refund_call_to_suicide_storage( nonce=0, address=Address(0x5BE4B33890F720EFF72BE0019B122E0FF75CB937), # noqa: E501 ) - pre[sender] = Account(balance=0x2540BE400) # Source: lll # { (SELFDESTRUCT ) } # noqa: E501 addr = pre.deploy_contract( # noqa: F841 diff --git a/tests/ported_static/stRefundTest/test_refund_call_to_suicide_twice.py b/tests/ported_static/stRefundTest/test_refund_call_to_suicide_twice.py index 817d9990510..bbcce3a6ed0 100644 --- a/tests/ported_static/stRefundTest/test_refund_call_to_suicide_twice.py +++ b/tests/ported_static/stRefundTest/test_refund_call_to_suicide_twice.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -58,9 +57,7 @@ def test_refund_call_to_suicide_twice( ) -> None: """Test_refund_call_to_suicide_twice.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x6F0117D3E9C684C7D6E1E6B79DC3880DA2BEBE77C765B171C062FDFFD38A673F - ) + sender = pre.fund_eoa(amount=0x2540BE400) env = Environment( fee_recipient=coinbase, @@ -101,7 +98,6 @@ def test_refund_call_to_suicide_twice( nonce=0, address=Address(0x81BDBAA560B5AD52B0F9857CF4CA40B74D4B6996), # noqa: E501 ) - pre[sender] = Account(balance=0x2540BE400) # Source: lll # { (SELFDESTRUCT ) } # noqa: E501 addr = pre.deploy_contract( # noqa: F841 diff --git a/tests/ported_static/stRefundTest/test_refund_change_non_zero_storage.py b/tests/ported_static/stRefundTest/test_refund_change_non_zero_storage.py index 6a8453af941..b82dcefae41 100644 --- a/tests/ported_static/stRefundTest/test_refund_change_non_zero_storage.py +++ b/tests/ported_static/stRefundTest/test_refund_change_non_zero_storage.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_refund_change_non_zero_storage( ) -> None: """Test_refund_change_non_zero_storage.""" coinbase = Address(0xEB201D2887816E041F6E807E804F64F3A7A226FE) - sender = EOA( - key=0x4D9FC6FDF95098986741EE78843AC52BEED77C8C801DC87BD3F04CD6BBF1A3EB - ) + sender = pre.fund_eoa(amount=0x3C336080) env = Environment( fee_recipient=coinbase, @@ -54,9 +51,7 @@ def test_refund_change_non_zero_storage( storage={1: 1}, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x904261B07D3A5F213BBD6FB9F3BB66F4FB65C7EB), # noqa: E501 ) - pre[sender] = Account(balance=0x3C336080) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRefundTest/test_refund_ff.py b/tests/ported_static/stRefundTest/test_refund_ff.py index e6da1b6192c..06c1e9435f2 100644 --- a/tests/ported_static/stRefundTest/test_refund_ff.py +++ b/tests/ported_static/stRefundTest/test_refund_ff.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,10 +32,7 @@ def test_refund_ff( ) -> None: """Ori Pomerantz qbzzt1@gmail.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - addr = Address(0x7704D8A022A1BA8F3539FC82C7D7FB065ABC0DF3) - sender = EOA( - key=0xD6B0676AFDE099A078F9D00F24D2C1CB4278546E1734927015023DB0980A92C5 - ) + sender = pre.fund_eoa(amount=0xE8D6599218, nonce=1) env = Environment( fee_recipient=coinbase, @@ -47,20 +43,16 @@ def test_refund_ff( gas_limit=16777216, ) + addr = pre.fund_eoa(amount=0) # noqa: F841 # Source: yul # berlin # { # selfdestruct() # } target = pre.deploy_contract( # noqa: F841 - code=Op.SELFDESTRUCT( - address=0x7704D8A022A1BA8F3539FC82C7D7FB065ABC0DF3 - ), + code=Op.SELFDESTRUCT(address=addr), nonce=1, - address=Address(0xA45B53C7B70ADF8EA2E910D0E826DF8D895B2B49), # noqa: E501 ) - pre[addr] = Account(balance=0, nonce=1) - pre[sender] = Account(balance=0xE8D6599218, nonce=1) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRefundTest/test_refund_get_ether_back.py b/tests/ported_static/stRefundTest/test_refund_get_ether_back.py index 97d15c97dd6..81633765711 100644 --- a/tests/ported_static/stRefundTest/test_refund_get_ether_back.py +++ b/tests/ported_static/stRefundTest/test_refund_get_ether_back.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_refund_get_ether_back( ) -> None: """Test_refund_get_ether_back.""" coinbase = Address(0xEB201D2887816E041F6E807E804F64F3A7A226FE) - sender = EOA( - key=0x29268B0C3308094249E9A06C02739F688D492D6325CA24B36EF949E5FC20AF27 - ) + sender = pre.fund_eoa(amount=0x3CF773D0) env = Environment( fee_recipient=coinbase, @@ -54,9 +51,7 @@ def test_refund_get_ether_back( storage={1: 1}, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xF4C9FC42FAEDA49049E3B8E2B97A17CC2FE95718), # noqa: E501 ) - pre[sender] = Account(balance=0x3CF773D0) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRefundTest/test_refund_max.py b/tests/ported_static/stRefundTest/test_refund_max.py index 211468231e7..4924bc77fa2 100644 --- a/tests/ported_static/stRefundTest/test_refund_max.py +++ b/tests/ported_static/stRefundTest/test_refund_max.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_refund_max( ) -> None: """Ori Pomerantz qbzzt1@gmail.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xB5555C6F8171A6EB3C0A84ED8F01AF5CE65A85A096A824A60EE5E2C2C2E076D1 - ) + sender = pre.fund_eoa(amount=0xE8D848C3A0, nonce=1) env = Environment( fee_recipient=coinbase, @@ -86,9 +83,7 @@ def test_refund_max( }, balance=0xDE0B6B3A7640000, nonce=1, - address=Address(0x7E9D1FF50F8EB9591A0434ABFE3230054A934124), # noqa: E501 ) - pre[sender] = Account(balance=0xE8D848C3A0, nonce=1) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRefundTest/test_refund_multimple_suicide.py b/tests/ported_static/stRefundTest/test_refund_multimple_suicide.py index 5b88df85551..015e02e5d2a 100644 --- a/tests/ported_static/stRefundTest/test_refund_multimple_suicide.py +++ b/tests/ported_static/stRefundTest/test_refund_multimple_suicide.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_refund_multimple_suicide( ) -> None: """Test_refund_multimple_suicide.""" coinbase = Address(0xEB201D2887816E041F6E807E804F64F3A7A226FE) - sender = EOA( - key=0xC69694690A07D1418B0AADFD424A00EA9F25D84B94FECEF12943DE9CD38EDE14 - ) + sender = pre.fund_eoa(amount=0x623A7C0) env = Environment( fee_recipient=coinbase, @@ -145,9 +142,7 @@ def test_refund_multimple_suicide( + Op.JUMP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x8B9574E5049501F581886404ADF7037002276E78), # noqa: E501 ) - pre[sender] = Account(balance=0x623A7C0) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRefundTest/test_refund_no_oog_1.py b/tests/ported_static/stRefundTest/test_refund_no_oog_1.py index 17b04e13d68..79eb43dc804 100644 --- a/tests/ported_static/stRefundTest/test_refund_no_oog_1.py +++ b/tests/ported_static/stRefundTest/test_refund_no_oog_1.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_refund_no_oog_1( ) -> None: """Test_refund_no_oog_1.""" coinbase = Address(0xEB201D2887816E041F6E807E804F64F3A7A226FE) - sender = EOA( - key=0x791307ECE6DFD40DF62DC66EFBC482096DD34650382AEB5D46DBEEDED66508F7 - ) + sender = pre.fund_eoa(amount=0xA03F70) env = Environment( fee_recipient=coinbase, @@ -54,9 +51,7 @@ def test_refund_no_oog_1( storage={1: 1}, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xF4C9FC42FAEDA49049E3B8E2B97A17CC2FE95718), # noqa: E501 ) - pre[sender] = Account(balance=0xA03F70) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRefundTest/test_refund_oog.py b/tests/ported_static/stRefundTest/test_refund_oog.py index c5f1f3d0a7a..1054df57c65 100644 --- a/tests/ported_static/stRefundTest/test_refund_oog.py +++ b/tests/ported_static/stRefundTest/test_refund_oog.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_refund_oog( ) -> None: """Test_refund_oog.""" coinbase = Address(0xEB201D2887816E041F6E807E804F64F3A7A226FE) - sender = EOA( - key=0x8518C6B13163F88376ADBDE956B3D6C1E4E027E25E20994C1AD0D78B8FD7FAC9 - ) + sender = pre.fund_eoa(amount=0x7A120) env = Environment( fee_recipient=coinbase, @@ -54,9 +51,7 @@ def test_refund_oog( storage={1: 1}, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xF4C9FC42FAEDA49049E3B8E2B97A17CC2FE95718), # noqa: E501 ) - pre[sender] = Account(balance=0x7A120) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRefundTest/test_refund_single_suicide.py b/tests/ported_static/stRefundTest/test_refund_single_suicide.py index 2896869cb47..4cee829af0d 100644 --- a/tests/ported_static/stRefundTest/test_refund_single_suicide.py +++ b/tests/ported_static/stRefundTest/test_refund_single_suicide.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_refund_single_suicide( ) -> None: """Test_refund_single_suicide.""" coinbase = Address(0xEB201D2887816E041F6E807E804F64F3A7A226FE) - sender = EOA( - key=0x2B75D0C814EB07C075FCCBDD9A036FAF651D9C46D7477D6C4F30772CFCA90D38 - ) + sender = pre.fund_eoa(amount=0x1C9C380) env = Environment( fee_recipient=coinbase, @@ -120,9 +117,7 @@ def test_refund_single_suicide( + Op.JUMP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xFC2C9403120F755B844FD30D99C231483E701631), # noqa: E501 ) - pre[sender] = Account(balance=0x1C9C380) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRefundTest/test_refund_sstore.py b/tests/ported_static/stRefundTest/test_refund_sstore.py index 70bd9105a19..9a8cd6f7ddc 100644 --- a/tests/ported_static/stRefundTest/test_refund_sstore.py +++ b/tests/ported_static/stRefundTest/test_refund_sstore.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_refund_sstore( ) -> None: """Ori Pomerantz qbzzt1@gmail.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x8C45B94DCA330650C0392398FB2097BB64764E973720A845EE67605FFABF0C7C - ) + sender = pre.fund_eoa(amount=0xE8D631F190, nonce=1) env = Environment( fee_recipient=coinbase, @@ -56,9 +53,7 @@ def test_refund_sstore( storage={0: 24743}, balance=0xDE0B6B3A7640000, nonce=1, - address=Address(0xF5F86B947FC07A75E19106A6B7E4953D431AD57F), # noqa: E501 ) - pre[sender] = Account(balance=0xE8D631F190, nonce=1) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRefundTest/test_refund_suicide50procent_cap.py b/tests/ported_static/stRefundTest/test_refund_suicide50procent_cap.py index 2a5b94d69dd..2fc32dac534 100644 --- a/tests/ported_static/stRefundTest/test_refund_suicide50procent_cap.py +++ b/tests/ported_static/stRefundTest/test_refund_suicide50procent_cap.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -58,9 +57,7 @@ def test_refund_suicide50procent_cap( ) -> None: """Test_refund_suicide50procent_cap.""" coinbase = Address(0xEB201D2887816E041F6E807E804F64F3A7A226FE) - sender = EOA( - key=0xF79127A3004ABDE26A4CBD80C428CB10F829FA11B54D36E7B326F4F4A5927ACF - ) + sender = pre.fund_eoa(amount=0x3B9ACA00) env = Environment( fee_recipient=coinbase, @@ -104,7 +101,6 @@ def test_refund_suicide50procent_cap( nonce=0, address=Address(0xA6CC2CA5611255D50118601AA8ECE6F124FC4C45), # noqa: E501 ) - pre[sender] = Account(balance=0x3B9ACA00) # Source: lll # { (SELFDESTRUCT ) } # noqa: E501 addr = pre.deploy_contract( # noqa: F841 diff --git a/tests/ported_static/stRefundTest/test_refund_tx_to_suicide_oog.py b/tests/ported_static/stRefundTest/test_refund_tx_to_suicide_oog.py index ea7b0792815..a1bc150ca20 100644 --- a/tests/ported_static/stRefundTest/test_refund_tx_to_suicide_oog.py +++ b/tests/ported_static/stRefundTest/test_refund_tx_to_suicide_oog.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_refund_tx_to_suicide_oog( ) -> None: """Test_refund_tx_to_suicide_oog.""" coinbase = Address(0xEB201D2887816E041F6E807E804F64F3A7A226FE) - sender = EOA( - key=0xA2333EEF5630066B928DEA5FD85A239F511B5B067D1441EE7AC290D0122B917B - ) + sender = pre.fund_eoa(amount=0x5F5E100) env = Environment( fee_recipient=coinbase, @@ -47,7 +44,6 @@ def test_refund_tx_to_suicide_oog( ) pre[coinbase] = Account(balance=0, nonce=1) - pre[sender] = Account(balance=0x5F5E100) # Source: lll # { (SELFDESTRUCT 0x095e7baea6a6c7c4c2dfeb977efac326af552d87) } target = pre.deploy_contract( # noqa: F841 @@ -56,7 +52,6 @@ def test_refund_tx_to_suicide_oog( storage={1: 1}, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x2BC33A472F0FBA1E30BF2317D07910367908C7F6), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stReturnDataTest/test_call_ecrec_success_empty_then_returndatasize.py b/tests/ported_static/stReturnDataTest/test_call_ecrec_success_empty_then_returndatasize.py index ed27bb9acc7..d08d9d790c3 100644 --- a/tests/ported_static/stReturnDataTest/test_call_ecrec_success_empty_then_returndatasize.py +++ b/tests/ported_static/stReturnDataTest/test_call_ecrec_success_empty_then_returndatasize.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_call_ecrec_success_empty_then_returndatasize( ) -> None: """Test_call_ecrec_success_empty_then_returndatasize.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x834185262E53584684BF2B72C64E510013C235D0F45E462DB65900455DF45A35 - ) + sender = pre.fund_eoa(amount=0x6400000000) env = Environment( fee_recipient=coinbase, @@ -66,9 +63,7 @@ def test_call_ecrec_success_empty_then_returndatasize( + Op.STOP, storage={0: 24743}, nonce=0, - address=Address(0x77E2F61794BCFD86B1C2380C34AAB5FB7C25E95E), # noqa: E501 ) - pre[sender] = Account(balance=0x6400000000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stReturnDataTest/test_call_then_call_value_fail_then_returndatasize.py b/tests/ported_static/stReturnDataTest/test_call_then_call_value_fail_then_returndatasize.py index bcea45321de..884719f7a4d 100644 --- a/tests/ported_static/stReturnDataTest/test_call_then_call_value_fail_then_returndatasize.py +++ b/tests/ported_static/stReturnDataTest/test_call_then_call_value_fail_then_returndatasize.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_call_then_call_value_fail_then_returndatasize( ) -> None: """Test_call_then_call_value_fail_then_returndatasize.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x834185262E53584684BF2B72C64E510013C235D0F45E462DB65900455DF45A35 - ) + sender = pre.fund_eoa(amount=0x6400000000) env = Environment( fee_recipient=coinbase, @@ -58,7 +55,6 @@ def test_call_then_call_value_fail_then_returndatasize( + Op.RETURN(offset=0x0, size=0x20) + Op.STOP, nonce=0, - address=Address(0x9898DD5E5C526B55EC49B1047E298705C13279F1), # noqa: E501 ) # Source: lll # { (seq (CALL 0x0900000000 0 0 0 0 0x20) (CALL 0x0900000000 0xffffffffffff 0 0 0 0x20) (SSTORE 0 (RETURNDATASIZE)) )} # noqa: E501 @@ -66,7 +62,7 @@ def test_call_then_call_value_fail_then_returndatasize( code=Op.POP( Op.CALL( gas=0x900000000, - address=0x9898DD5E5C526B55EC49B1047E298705C13279F1, + address=addr, value=0x0, args_offset=0x0, args_size=0x0, @@ -77,7 +73,7 @@ def test_call_then_call_value_fail_then_returndatasize( + Op.POP( Op.CALL( gas=0x900000000, - address=0x9898DD5E5C526B55EC49B1047E298705C13279F1, + address=addr, value=0xFFFFFFFFFFFF, args_offset=0x0, args_size=0x0, @@ -89,9 +85,7 @@ def test_call_then_call_value_fail_then_returndatasize( + Op.STOP, storage={0: 1}, nonce=0, - address=Address(0x0E496B29AD2F0E55ADF292C08A6A9289CB163835), # noqa: E501 ) - pre[sender] = Account(balance=0x6400000000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stReturnDataTest/test_clear_return_buffer.py b/tests/ported_static/stReturnDataTest/test_clear_return_buffer.py index 254e8928038..dbe6e759b27 100644 --- a/tests/ported_static/stReturnDataTest/test_clear_return_buffer.py +++ b/tests/ported_static/stReturnDataTest/test_clear_return_buffer.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -1061,9 +1060,7 @@ def test_clear_return_buffer( ) -> None: """Ori Pomerantz qbzzt1@gmail.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x48DC5A9F099CAAAA557742CA3A990A94BE45B9969126A1BC74E5E8BE5A2B5B47 - ) + sender = pre.fund_eoa(amount=0xBA1A9CE0BA1A9CE, nonce=1) env = Environment( fee_recipient=coinbase, @@ -1089,7 +1086,6 @@ def test_clear_return_buffer( + Op.RETURN, balance=0xBA1A9CE0BA1A9CE, nonce=1, - address=Address(0xBD0BB2600F59ACDEE19A917DB4F3F7B00C9C9759), # noqa: E501 ) # Source: yul # berlin @@ -1106,7 +1102,6 @@ def test_clear_return_buffer( + Op.REVERT, balance=0xBA1A9CE0BA1A9CE, nonce=1, - address=Address(0x4C24D17E84F86907F0A33776F83C754D52E46D13), # noqa: E501 ) # Source: yul # berlin @@ -1135,7 +1130,6 @@ def test_clear_return_buffer( + Op.STOP, balance=0xBA1A9CE0BA1A9CE, nonce=1, - address=Address(0x4940BB1DE279F6B55DC0BF40ED1FDEF517D8C2E9), # noqa: E501 ) # Source: yul # berlin @@ -1164,7 +1158,6 @@ def test_clear_return_buffer( + Op.STOP, balance=0xBA1A9CE0BA1A9CE, nonce=1, - address=Address(0x0FABE6F4DFA10093ECD1C05DF08EE0B199F2F36D), # noqa: E501 ) # Source: yul # berlin @@ -1182,7 +1175,6 @@ def test_clear_return_buffer( code=bytes.fromhex("602060008181808035833582525af1503078464500"), balance=0xBA1A9CE0BA1A9CE, nonce=1, - address=Address(0x421AB4BF2FF9BD61E45075062AEC737A6F1B726D), # noqa: E501 ) # Source: yul # berlin @@ -1460,9 +1452,7 @@ def test_clear_return_buffer( storage={0: 24743}, balance=0xBA1A9CE0BA1A9CE, nonce=1, - address=Address(0x48DB33B0A06DD1E98DF44D8BEF0DA3F1D948571D), # noqa: E501 ) - pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE, nonce=1) tx_data = [ Bytes("048071d3") + Hash(0x11F0) + Hash(0xF3F3) + Hash(0x20), diff --git a/tests/ported_static/stReturnDataTest/test_returndatacopy_after_failing_callcode.py b/tests/ported_static/stReturnDataTest/test_returndatacopy_after_failing_callcode.py index 877fbe70c32..cc1baaf8c72 100644 --- a/tests/ported_static/stReturnDataTest/test_returndatacopy_after_failing_callcode.py +++ b/tests/ported_static/stReturnDataTest/test_returndatacopy_after_failing_callcode.py @@ -50,13 +50,22 @@ def test_returndatacopy_after_failing_callcode( ) pre[addr] = Account(balance=0x10000000) + pre[sender] = Account(balance=0x6400000000) + # Source: raw + # 0xfd + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.REVERT, + balance=0x6400000000, + nonce=0, + address=Address(0x665521FD750490FD880EE369C267FCA44ED8A078), # noqa: E501 + ) # Source: lll # { (CALLCODE 0 0 0 0 0 0) (RETURNDATACOPY 0x0 0x0 32) (SSTORE 0 (MLOAD 0))} # noqa: E501 target = pre.deploy_contract( # noqa: F841 code=Op.POP( Op.CALLCODE( gas=0x0, - address=0x665521FD750490FD880EE369C267FCA44ED8A078, + address=addr_2, value=0x0, args_offset=0x0, args_size=0x0, @@ -71,15 +80,6 @@ def test_returndatacopy_after_failing_callcode( nonce=0, address=Address(0x24878B81DD27C2D76258B421ACDDF26835BC1484), # noqa: E501 ) - # Source: raw - # 0xfd - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.REVERT, - balance=0x6400000000, - nonce=0, - address=Address(0x665521FD750490FD880EE369C267FCA44ED8A078), # noqa: E501 - ) - pre[sender] = Account(balance=0x6400000000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stReturnDataTest/test_returndatacopy_after_failing_delegatecall.py b/tests/ported_static/stReturnDataTest/test_returndatacopy_after_failing_delegatecall.py index 52902c450df..0ae7ed51e33 100644 --- a/tests/ported_static/stReturnDataTest/test_returndatacopy_after_failing_delegatecall.py +++ b/tests/ported_static/stReturnDataTest/test_returndatacopy_after_failing_delegatecall.py @@ -50,13 +50,22 @@ def test_returndatacopy_after_failing_delegatecall( ) pre[addr] = Account(balance=0x100000) + pre[sender] = Account(balance=0x6400000000) + # Source: raw + # 0xfd + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.REVERT, + balance=0x6400000000, + nonce=0, + address=Address(0x665521FD750490FD880EE369C267FCA44ED8A078), # noqa: E501 + ) # Source: lll # { (DELEGATECALL 10000 0 0 0 0) (RETURNDATACOPY 0x0 0x0 32) ( SSTORE 0 (MLOAD 0))} # noqa: E501 addr_2 = pre.deploy_contract( # noqa: F841 code=Op.POP( Op.DELEGATECALL( gas=0x2710, - address=0x665521FD750490FD880EE369C267FCA44ED8A078, + address=addr_3, args_offset=0x0, args_size=0x0, ret_offset=0x0, @@ -72,15 +81,6 @@ def test_returndatacopy_after_failing_delegatecall( nonce=0, address=Address(0x5242F2AD00427020024F504AE629E0576CA6A01A), # noqa: E501 ) - # Source: raw - # 0xfd - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.REVERT, - balance=0x6400000000, - nonce=0, - address=Address(0x665521FD750490FD880EE369C267FCA44ED8A078), # noqa: E501 - ) - pre[sender] = Account(balance=0x6400000000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stReturnDataTest/test_returndatacopy_after_failing_staticcall.py b/tests/ported_static/stReturnDataTest/test_returndatacopy_after_failing_staticcall.py index 141faf2ddfb..909dbeba72b 100644 --- a/tests/ported_static/stReturnDataTest/test_returndatacopy_after_failing_staticcall.py +++ b/tests/ported_static/stReturnDataTest/test_returndatacopy_after_failing_staticcall.py @@ -50,13 +50,24 @@ def test_returndatacopy_after_failing_staticcall( ) pre[addr] = Account(balance=0x100000) + pre[sender] = Account(balance=0x6400000000) + # Source: lll + # { (MSTORE 0x0 (CALLER)) (RETURN 0 32) } + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x0, value=Op.CALLER) + + Op.RETURN(offset=0x0, size=0x20) + + Op.STOP, + balance=0x6400000000, + nonce=0, + address=Address(0x52FD0CBC013EE33577EEC035031DBC4489A1E0BD), # noqa: E501 + ) # Source: lll # { (STATICCALL 0 0 0 0 0) (RETURNDATACOPY 0x0 0x0 32) ( SSTORE 0 (MLOAD 0))} # noqa: E501 target = pre.deploy_contract( # noqa: F841 code=Op.POP( Op.STATICCALL( gas=0x0, - address=0x52FD0CBC013EE33577EEC035031DBC4489A1E0BD, + address=addr_2, args_offset=0x0, args_size=0x0, ret_offset=0x0, @@ -72,17 +83,6 @@ def test_returndatacopy_after_failing_staticcall( nonce=0, address=Address(0x7ACAE812141B61313BEA3D8B33B2F9C69F4E6720), # noqa: E501 ) - # Source: lll - # { (MSTORE 0x0 (CALLER)) (RETURN 0 32) } - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x0, value=Op.CALLER) - + Op.RETURN(offset=0x0, size=0x20) - + Op.STOP, - balance=0x6400000000, - nonce=0, - address=Address(0x52FD0CBC013EE33577EEC035031DBC4489A1E0BD), # noqa: E501 - ) - pre[sender] = Account(balance=0x6400000000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stReturnDataTest/test_returndatacopy_after_revert_in_staticcall.py b/tests/ported_static/stReturnDataTest/test_returndatacopy_after_revert_in_staticcall.py index 042cbcb5917..ef29d6c7990 100644 --- a/tests/ported_static/stReturnDataTest/test_returndatacopy_after_revert_in_staticcall.py +++ b/tests/ported_static/stReturnDataTest/test_returndatacopy_after_revert_in_staticcall.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,10 +34,7 @@ def test_returndatacopy_after_revert_in_staticcall( ) -> None: """Test_returndatacopy_after_revert_in_staticcall.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - addr = Address(0x6C7410DA158FA432392FCAD5989E1B28280F99D8) - sender = EOA( - key=0x834185262E53584684BF2B72C64E510013C235D0F45E462DB65900455DF45A35 - ) + sender = pre.fund_eoa(amount=0x6400000000) env = Environment( fee_recipient=coinbase, @@ -49,14 +45,23 @@ def test_returndatacopy_after_revert_in_staticcall( gas_limit=111669149696, ) - pre[addr] = Account(balance=0x1000000) + addr = pre.fund_eoa(amount=0x1000000) # noqa: F841 + # Source: lll + # { (MSTORE 0x0 (CALLER)) (REVERT 0 32) } + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x0, value=Op.CALLER) + + Op.REVERT(offset=0x0, size=0x20) + + Op.STOP, + balance=0x6400000000, + nonce=0, + ) # Source: lll # { (STATICCALL 60000 0 0 0 0) (RETURNDATACOPY 0x0 0x0 32) ( SSTORE 0 (MLOAD 0))} # noqa: E501 target = pre.deploy_contract( # noqa: F841 code=Op.POP( Op.STATICCALL( gas=0xEA60, - address=0x3706580D60F246111E3848FFBA4F4AB76C9A01E8, + address=addr_2, args_offset=0x0, args_size=0x0, ret_offset=0x0, @@ -70,19 +75,7 @@ def test_returndatacopy_after_revert_in_staticcall( 0: 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, # noqa: E501 }, nonce=0, - address=Address(0x4BEDF636CB41E5DCF09D038DE843004824DFBB3A), # noqa: E501 - ) - # Source: lll - # { (MSTORE 0x0 (CALLER)) (REVERT 0 32) } - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x0, value=Op.CALLER) - + Op.REVERT(offset=0x0, size=0x20) - + Op.STOP, - balance=0x6400000000, - nonce=0, - address=Address(0x3706580D60F246111E3848FFBA4F4AB76C9A01E8), # noqa: E501 ) - pre[sender] = Account(balance=0x6400000000) tx = Transaction( sender=sender, @@ -91,10 +84,6 @@ def test_returndatacopy_after_revert_in_staticcall( gas_limit=100000, ) - post = { - target: Account( - storage={0: 0x4BEDF636CB41E5DCF09D038DE843004824DFBB3A}, - ), - } + post = {target: Account(storage={0: target})} state_test(env=env, pre=pre, post=post, tx=tx) diff --git a/tests/ported_static/stReturnDataTest/test_returndatacopy_after_successful_callcode.py b/tests/ported_static/stReturnDataTest/test_returndatacopy_after_successful_callcode.py index d1ebd26a452..513523a49f7 100644 --- a/tests/ported_static/stReturnDataTest/test_returndatacopy_after_successful_callcode.py +++ b/tests/ported_static/stReturnDataTest/test_returndatacopy_after_successful_callcode.py @@ -48,13 +48,27 @@ def test_returndatacopy_after_successful_callcode( gas_limit=111669149696, ) + pre[sender] = Account(balance=0x6400000000) + # Source: lll + # { (MSTORE 0x0 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) (RETURN 0 32) } # noqa: E501 + addr = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE( + offset=0x0, + value=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, # noqa: E501 + ) + + Op.RETURN(offset=0x0, size=0x20) + + Op.STOP, + balance=0x6400000000, + nonce=0, + address=Address(0x53B272D553D8179D017AAE6F3BADF0570743593A), # noqa: E501 + ) # Source: lll # { (CALLCODE 60000 0 0 0 0 0) (RETURNDATACOPY 0x0 0x0 32) (SSTORE 0 (MLOAD 0))} # noqa: E501 target = pre.deploy_contract( # noqa: F841 code=Op.POP( Op.CALLCODE( gas=0xEA60, - address=0x53B272D553D8179D017AAE6F3BADF0570743593A, + address=addr, value=0x0, args_offset=0x0, args_size=0x0, @@ -69,20 +83,6 @@ def test_returndatacopy_after_successful_callcode( nonce=0, address=Address(0x7E319028B16C006ECC1B068CCE1A1C9B0B457B0D), # noqa: E501 ) - # Source: lll - # { (MSTORE 0x0 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) (RETURN 0 32) } # noqa: E501 - addr = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE( - offset=0x0, - value=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, # noqa: E501 - ) - + Op.RETURN(offset=0x0, size=0x20) - + Op.STOP, - balance=0x6400000000, - nonce=0, - address=Address(0x53B272D553D8179D017AAE6F3BADF0570743593A), # noqa: E501 - ) - pre[sender] = Account(balance=0x6400000000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stReturnDataTest/test_returndatacopy_after_successful_delegatecall.py b/tests/ported_static/stReturnDataTest/test_returndatacopy_after_successful_delegatecall.py index 0aa89b298c5..15043eaf87a 100644 --- a/tests/ported_static/stReturnDataTest/test_returndatacopy_after_successful_delegatecall.py +++ b/tests/ported_static/stReturnDataTest/test_returndatacopy_after_successful_delegatecall.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_returndatacopy_after_successful_delegatecall( ) -> None: """Test_returndatacopy_after_successful_delegatecall.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x834185262E53584684BF2B72C64E510013C235D0F45E462DB65900455DF45A35 - ) + sender = pre.fund_eoa(amount=0x6400000000) env = Environment( fee_recipient=coinbase, @@ -48,13 +45,22 @@ def test_returndatacopy_after_successful_delegatecall( gas_limit=111669149696, ) + # Source: lll + # { (MSTORE 0x0 (CALLER)) (RETURN 0 32) } + addr = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x0, value=Op.CALLER) + + Op.RETURN(offset=0x0, size=0x20) + + Op.STOP, + balance=0x6400000000, + nonce=0, + ) # Source: lll # { (DELEGATECALL 60000 0 0 0 0) (RETURNDATACOPY 0x0 0x0 32) ( SSTORE 0 (MLOAD 0))} # noqa: E501 target = pre.deploy_contract( # noqa: F841 code=Op.POP( Op.DELEGATECALL( gas=0xEA60, - address=0x52FD0CBC013EE33577EEC035031DBC4489A1E0BD, + address=addr, args_offset=0x0, args_size=0x0, ret_offset=0x0, @@ -68,19 +74,7 @@ def test_returndatacopy_after_successful_delegatecall( 0: 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, # noqa: E501 }, nonce=0, - address=Address(0xB669C96E9E7CCFD69D0FD0FFCF9260E9D1E6F5C4), # noqa: E501 - ) - # Source: lll - # { (MSTORE 0x0 (CALLER)) (RETURN 0 32) } - addr = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x0, value=Op.CALLER) - + Op.RETURN(offset=0x0, size=0x20) - + Op.STOP, - balance=0x6400000000, - nonce=0, - address=Address(0x52FD0CBC013EE33577EEC035031DBC4489A1E0BD), # noqa: E501 ) - pre[sender] = Account(balance=0x6400000000) tx = Transaction( sender=sender, @@ -89,10 +83,6 @@ def test_returndatacopy_after_successful_delegatecall( gas_limit=100000, ) - post = { - target: Account( - storage={0: 0xC102734F6A1E4747310179C0A0FC16E674AA901D}, - ), - } + post = {target: Account(storage={0: sender})} state_test(env=env, pre=pre, post=post, tx=tx) diff --git a/tests/ported_static/stReturnDataTest/test_returndatacopy_after_successful_staticcall.py b/tests/ported_static/stReturnDataTest/test_returndatacopy_after_successful_staticcall.py index 7bfb2fcf9f3..95a483a7e4a 100644 --- a/tests/ported_static/stReturnDataTest/test_returndatacopy_after_successful_staticcall.py +++ b/tests/ported_static/stReturnDataTest/test_returndatacopy_after_successful_staticcall.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,10 +34,7 @@ def test_returndatacopy_after_successful_staticcall( ) -> None: """Test_returndatacopy_after_successful_staticcall.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - addr = Address(0x6C7410DA158FA432392FCAD5989E1B28280F99D8) - sender = EOA( - key=0x834185262E53584684BF2B72C64E510013C235D0F45E462DB65900455DF45A35 - ) + sender = pre.fund_eoa(amount=0x6400000000) env = Environment( fee_recipient=coinbase, @@ -49,14 +45,23 @@ def test_returndatacopy_after_successful_staticcall( gas_limit=111669149696, ) - pre[addr] = Account(balance=0x1000000) + addr = pre.fund_eoa(amount=0x1000000) # noqa: F841 + # Source: lll + # { (MSTORE 0x0 (CALLER)) (RETURN 0 32) } + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x0, value=Op.CALLER) + + Op.RETURN(offset=0x0, size=0x20) + + Op.STOP, + balance=0x6400000000, + nonce=0, + ) # Source: lll # { (STATICCALL 60000 0 0 0 0) (RETURNDATACOPY 0x0 0x0 32) ( SSTORE 0 (MLOAD 0))} # noqa: E501 target = pre.deploy_contract( # noqa: F841 code=Op.POP( Op.STATICCALL( gas=0xEA60, - address=0x52FD0CBC013EE33577EEC035031DBC4489A1E0BD, + address=addr_2, args_offset=0x0, args_size=0x0, ret_offset=0x0, @@ -70,19 +75,7 @@ def test_returndatacopy_after_successful_staticcall( 0: 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, # noqa: E501 }, nonce=0, - address=Address(0x4BEDF636CB41E5DCF09D038DE843004824DFBB3A), # noqa: E501 - ) - # Source: lll - # { (MSTORE 0x0 (CALLER)) (RETURN 0 32) } - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x0, value=Op.CALLER) - + Op.RETURN(offset=0x0, size=0x20) - + Op.STOP, - balance=0x6400000000, - nonce=0, - address=Address(0x52FD0CBC013EE33577EEC035031DBC4489A1E0BD), # noqa: E501 ) - pre[sender] = Account(balance=0x6400000000) tx = Transaction( sender=sender, @@ -91,10 +84,6 @@ def test_returndatacopy_after_successful_staticcall( gas_limit=100000, ) - post = { - target: Account( - storage={0: 0x4BEDF636CB41E5DCF09D038DE843004824DFBB3A}, - ), - } + post = {target: Account(storage={0: target})} state_test(env=env, pre=pre, post=post, tx=tx) diff --git a/tests/ported_static/stReturnDataTest/test_returndatacopy_following_call.py b/tests/ported_static/stReturnDataTest/test_returndatacopy_following_call.py index fd8e16e7fd6..68bd5870c13 100644 --- a/tests/ported_static/stReturnDataTest/test_returndatacopy_following_call.py +++ b/tests/ported_static/stReturnDataTest/test_returndatacopy_following_call.py @@ -46,6 +46,7 @@ def test_returndatacopy_following_call( gas_limit=111669149696, ) + pre[sender] = Account(balance=0x6400000000) # Source: lll # { (seq (MSTORE 0 0x0000111122223333444455556666777788889999aaaabbbbccccddddeeeeffff) (RETURN 0 32)) } # noqa: E501 addr = pre.deploy_contract( # noqa: F841 @@ -64,7 +65,7 @@ def test_returndatacopy_following_call( code=Op.POP( Op.CALL( gas=0x900000000, - address=0x9898DD5E5C526B55EC49B1047E298705C13279F1, + address=addr, value=0x0, args_offset=0x0, args_size=0x0, @@ -79,7 +80,6 @@ def test_returndatacopy_following_call( nonce=0, address=Address(0x2FAF9D2A81304665C9A06A42935DDC42B24F488B), # noqa: E501 ) - pre[sender] = Account(balance=0x6400000000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stReturnDataTest/test_returndatacopy_following_create.py b/tests/ported_static/stReturnDataTest/test_returndatacopy_following_create.py index f39d48ec707..80fa6443230 100644 --- a/tests/ported_static/stReturnDataTest/test_returndatacopy_following_create.py +++ b/tests/ported_static/stReturnDataTest/test_returndatacopy_following_create.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_returndatacopy_following_create( ) -> None: """Test_returndatacopy_following_create.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x834185262E53584684BF2B72C64E510013C235D0F45E462DB65900455DF45A35 - ) + sender = pre.fund_eoa(amount=0x6400000000) env = Environment( fee_recipient=coinbase, @@ -58,7 +55,6 @@ def test_returndatacopy_following_create( + Op.RETURN(offset=0x0, size=0x20) + Op.STOP, nonce=0, - address=Address(0x9898DD5E5C526B55EC49B1047E298705C13279F1), # noqa: E501 ) # Source: lll # { (seq (create (STOP)) (RETURNDATACOPY 0 0 32) (SSTORE 0 (MLOAD 0)) )} @@ -79,9 +75,7 @@ def test_returndatacopy_following_create( + Op.STOP * 2, storage={0: 1}, nonce=0, - address=Address(0xB2F12F3B77DAD19C11029CB8EE4EECB144E05AD3), # noqa: E501 ) - pre[sender] = Account(balance=0x6400000000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stReturnDataTest/test_returndatacopy_following_failing_call.py b/tests/ported_static/stReturnDataTest/test_returndatacopy_following_failing_call.py index 568faf33ab5..81196af2f6b 100644 --- a/tests/ported_static/stReturnDataTest/test_returndatacopy_following_failing_call.py +++ b/tests/ported_static/stReturnDataTest/test_returndatacopy_following_failing_call.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_returndatacopy_following_failing_call( ) -> None: """Test_returndatacopy_following_failing_call.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x834185262E53584684BF2B72C64E510013C235D0F45E462DB65900455DF45A35 - ) + sender = pre.fund_eoa(amount=0x6400000000) env = Environment( fee_recipient=coinbase, @@ -53,7 +50,6 @@ def test_returndatacopy_following_failing_call( addr = pre.deploy_contract( # noqa: F841 code=Op.REVERT, nonce=0, - address=Address(0x3141BB954E8294E47A14EBD08229F30E6294BA83), # noqa: E501 ) # Source: lll # { (CALL 0x0900000000 0 0 0 0 0) (RETURNDATACOPY 0 1 32) (SSTORE 0 (MLOAD 0)) } # noqa: E501 @@ -61,7 +57,7 @@ def test_returndatacopy_following_failing_call( code=Op.POP( Op.CALL( gas=0x900000000, - address=0x3141BB954E8294E47A14EBD08229F30E6294BA83, + address=addr, value=0x0, args_offset=0x0, args_size=0x0, @@ -74,9 +70,7 @@ def test_returndatacopy_following_failing_call( + Op.STOP, storage={0: 1}, nonce=0, - address=Address(0x71A277F82C43FF98682EB8D6DB4A3ECD680407EB), # noqa: E501 ) - pre[sender] = Account(balance=0x6400000000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stReturnDataTest/test_returndatacopy_following_revert.py b/tests/ported_static/stReturnDataTest/test_returndatacopy_following_revert.py index a2121b9b101..d9dfc787585 100644 --- a/tests/ported_static/stReturnDataTest/test_returndatacopy_following_revert.py +++ b/tests/ported_static/stReturnDataTest/test_returndatacopy_following_revert.py @@ -48,6 +48,7 @@ def test_returndatacopy_following_revert( gas_limit=111669149696, ) + pre[sender] = Account(balance=0x6400000000) # Source: lll # { (seq (MSTORE 0 0x0000111122223333444455556666777788889999aaaabbbbccccddddeeeeffff) (REVERT 0 32)) } # noqa: E501 addr = pre.deploy_contract( # noqa: F841 @@ -66,7 +67,7 @@ def test_returndatacopy_following_revert( code=Op.POP( Op.CALL( gas=0x900000000, - address=0x2159735BA26480ADC67F0EE9D4A05E5405A5CF83, + address=addr, value=0x0, args_offset=0x0, args_size=0x0, @@ -81,7 +82,6 @@ def test_returndatacopy_following_revert( nonce=0, address=Address(0x2FAF9D2A81304665C9A06A42935DDC42B24F488B), # noqa: E501 ) - pre[sender] = Account(balance=0x6400000000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stReturnDataTest/test_returndatacopy_following_successful_create.py b/tests/ported_static/stReturnDataTest/test_returndatacopy_following_successful_create.py index 09e5f12003f..997d56258ec 100644 --- a/tests/ported_static/stReturnDataTest/test_returndatacopy_following_successful_create.py +++ b/tests/ported_static/stReturnDataTest/test_returndatacopy_following_successful_create.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_returndatacopy_following_successful_create( ) -> None: """Test_returndatacopy_following_successful_create.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x834185262E53584684BF2B72C64E510013C235D0F45E462DB65900455DF45A35 - ) + sender = pre.fund_eoa(amount=0x6400000000) env = Environment( fee_recipient=coinbase, @@ -67,9 +64,7 @@ def test_returndatacopy_following_successful_create( + Op.STOP * 2, storage={0: 2}, nonce=0, - address=Address(0xBABE109963095EFA4C742D15426F841A7033D6AA), # noqa: E501 ) - pre[sender] = Account(balance=0x6400000000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stReturnDataTest/test_returndatacopy_following_too_big_transfer.py b/tests/ported_static/stReturnDataTest/test_returndatacopy_following_too_big_transfer.py index 83a4c8018d6..e3dd5b68dbb 100644 --- a/tests/ported_static/stReturnDataTest/test_returndatacopy_following_too_big_transfer.py +++ b/tests/ported_static/stReturnDataTest/test_returndatacopy_following_too_big_transfer.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_returndatacopy_following_too_big_transfer( ) -> None: """Test: tis test tries RETURNDATACOPY with a non-zero size after a CALL...""" # noqa: E501 coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x834185262E53584684BF2B72C64E510013C235D0F45E462DB65900455DF45A35 - ) + sender = pre.fund_eoa(amount=0x6400000000) env = Environment( fee_recipient=coinbase, @@ -58,7 +55,6 @@ def test_returndatacopy_following_too_big_transfer( + Op.RETURN(offset=0x0, size=0x20) + Op.STOP, nonce=0, - address=Address(0x9898DD5E5C526B55EC49B1047E298705C13279F1), # noqa: E501 ) # Source: lll # { (seq (CALL 0x0900000000 10000000 0 0 0 0) (RETURNDATACOPY 0 0 32) (SSTORE 0 200) )} # noqa: E501 @@ -66,7 +62,7 @@ def test_returndatacopy_following_too_big_transfer( code=Op.POP( Op.CALL( gas=0x900000000, - address=0x9898DD5E5C526B55EC49B1047E298705C13279F1, + address=addr, value=0x989680, args_offset=0x0, args_size=0x0, @@ -79,9 +75,7 @@ def test_returndatacopy_following_too_big_transfer( + Op.STOP, storage={0: 1}, nonce=0, - address=Address(0x386E9FC96C1E60F449C2DF320F37545CCA30F58D), # noqa: E501 ) - pre[sender] = Account(balance=0x6400000000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stReturnDataTest/test_returndatacopy_initial.py b/tests/ported_static/stReturnDataTest/test_returndatacopy_initial.py index 154bc32035b..57f9089b05f 100644 --- a/tests/ported_static/stReturnDataTest/test_returndatacopy_initial.py +++ b/tests/ported_static/stReturnDataTest/test_returndatacopy_initial.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_returndatacopy_initial( ) -> None: """Test_returndatacopy_initial.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x834185262E53584684BF2B72C64E510013C235D0F45E462DB65900455DF45A35 - ) + sender = pre.fund_eoa(amount=0x6400000000) env = Environment( fee_recipient=coinbase, @@ -56,9 +53,7 @@ def test_returndatacopy_initial( storage={0: 1}, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x7D970B9AD2E5F64518FF774031441F22B78BE4C7), # noqa: E501 ) - pre[sender] = Account(balance=0x6400000000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stReturnDataTest/test_returndatacopy_initial_256.py b/tests/ported_static/stReturnDataTest/test_returndatacopy_initial_256.py index a4b18bb5286..30e351e733b 100644 --- a/tests/ported_static/stReturnDataTest/test_returndatacopy_initial_256.py +++ b/tests/ported_static/stReturnDataTest/test_returndatacopy_initial_256.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -61,9 +60,7 @@ def test_returndatacopy_initial_256( ) -> None: """Test_returndatacopy_initial_256.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x834185262E53584684BF2B72C64E510013C235D0F45E462DB65900455DF45A35 - ) + sender = pre.fund_eoa(amount=0x6400000000) env = Environment( fee_recipient=coinbase, @@ -88,9 +85,7 @@ def test_returndatacopy_initial_256( storage={0: 1}, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x28F194B678152B435B5910DBDF69C091FA056347), # noqa: E501 ) - pre[sender] = Account(balance=0x6400000000) tx_data = [ Hash(0x64), diff --git a/tests/ported_static/stReturnDataTest/test_returndatacopy_initial_big_sum.py b/tests/ported_static/stReturnDataTest/test_returndatacopy_initial_big_sum.py index c9bbeb936d4..02be12ee8d9 100644 --- a/tests/ported_static/stReturnDataTest/test_returndatacopy_initial_big_sum.py +++ b/tests/ported_static/stReturnDataTest/test_returndatacopy_initial_big_sum.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_returndatacopy_initial_big_sum( ) -> None: """Test_returndatacopy_initial_big_sum.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x834185262E53584684BF2B72C64E510013C235D0F45E462DB65900455DF45A35 - ) + sender = pre.fund_eoa(amount=0x6400000000) env = Environment( fee_recipient=coinbase, @@ -58,9 +55,7 @@ def test_returndatacopy_initial_big_sum( storage={0: 1}, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x3C975790C6CBB489AE5EAF7AF45202F98DFFCCDF), # noqa: E501 ) - pre[sender] = Account(balance=0x6400000000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stReturnDataTest/test_returndatacopy_overrun.py b/tests/ported_static/stReturnDataTest/test_returndatacopy_overrun.py index bc3789859a1..3ba3a5f8f16 100644 --- a/tests/ported_static/stReturnDataTest/test_returndatacopy_overrun.py +++ b/tests/ported_static/stReturnDataTest/test_returndatacopy_overrun.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_returndatacopy_overrun( ) -> None: """Test_returndatacopy_overrun.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x834185262E53584684BF2B72C64E510013C235D0F45E462DB65900455DF45A35 - ) + sender = pre.fund_eoa(amount=0x6400000000) env = Environment( fee_recipient=coinbase, @@ -56,7 +53,6 @@ def test_returndatacopy_overrun( + Op.RETURN(offset=0x0, size=0x20) + Op.STOP, nonce=0, - address=Address(0x9898DD5E5C526B55EC49B1047E298705C13279F1), # noqa: E501 ) # Source: lll # { (seq (CALL 0x0900000000 0 0 0 0 0) (RETURNDATACOPY 0 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc 100) (SSTORE 0 (MLOAD 0)) )} # noqa: E501 @@ -64,7 +60,7 @@ def test_returndatacopy_overrun( code=Op.POP( Op.CALL( gas=0x900000000, - address=0x9898DD5E5C526B55EC49B1047E298705C13279F1, + address=addr, value=0x0, args_offset=0x0, args_size=0x0, @@ -81,9 +77,7 @@ def test_returndatacopy_overrun( + Op.STOP, storage={0: 1}, nonce=0, - address=Address(0x36E328ACF112F37630C605BB27C130C5646D2915), # noqa: E501 ) - pre[sender] = Account(balance=0x6400000000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stReturnDataTest/test_returndatasize_after_failing_callcode.py b/tests/ported_static/stReturnDataTest/test_returndatasize_after_failing_callcode.py index bcaf88ed0c1..de632358bed 100644 --- a/tests/ported_static/stReturnDataTest/test_returndatasize_after_failing_callcode.py +++ b/tests/ported_static/stReturnDataTest/test_returndatasize_after_failing_callcode.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,10 +34,7 @@ def test_returndatasize_after_failing_callcode( ) -> None: """Test_returndatasize_after_failing_callcode.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - addr = Address(0x285D0814904BEBB3B4ADD3B531A07647C2D08F59) - sender = EOA( - key=0x834185262E53584684BF2B72C64E510013C235D0F45E462DB65900455DF45A35 - ) + sender = pre.fund_eoa(amount=0x6400000000) env = Environment( fee_recipient=coinbase, @@ -49,14 +45,21 @@ def test_returndatasize_after_failing_callcode( gas_limit=111669149696, ) - pre[addr] = Account(balance=0x10000000) + addr = pre.fund_eoa(amount=0x10000000) # noqa: F841 + # Source: raw + # 0xfd + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.REVERT, + balance=0x6400000000, + nonce=0, + ) # Source: lll # { (seq (CALLCODE 100000 0 0 0 0 0) (SSTORE 0 (RETURNDATASIZE)))} # noqa: E501 target = pre.deploy_contract( # noqa: F841 code=Op.POP( Op.CALLCODE( gas=0x186A0, - address=0x665521FD750490FD880EE369C267FCA44ED8A078, + address=addr_2, value=0x0, args_offset=0x0, args_size=0x0, @@ -68,17 +71,7 @@ def test_returndatasize_after_failing_callcode( + Op.STOP, storage={0: 0xFFFFFFFF}, nonce=0, - address=Address(0x716E4812F69C442687F8917638E10BBE6EB00592), # noqa: E501 - ) - # Source: raw - # 0xfd - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.REVERT, - balance=0x6400000000, - nonce=0, - address=Address(0x665521FD750490FD880EE369C267FCA44ED8A078), # noqa: E501 ) - pre[sender] = Account(balance=0x6400000000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stReturnDataTest/test_returndatasize_after_failing_delegatecall.py b/tests/ported_static/stReturnDataTest/test_returndatasize_after_failing_delegatecall.py index d2d9054921e..0a551cfeadc 100644 --- a/tests/ported_static/stReturnDataTest/test_returndatasize_after_failing_delegatecall.py +++ b/tests/ported_static/stReturnDataTest/test_returndatasize_after_failing_delegatecall.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,10 +34,7 @@ def test_returndatasize_after_failing_delegatecall( ) -> None: """Test_returndatasize_after_failing_delegatecall.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - addr = Address(0x6C7410DA158FA432392FCAD5989E1B28280F99D8) - sender = EOA( - key=0x834185262E53584684BF2B72C64E510013C235D0F45E462DB65900455DF45A35 - ) + sender = pre.fund_eoa(amount=0x6400000000) env = Environment( fee_recipient=coinbase, @@ -49,14 +45,21 @@ def test_returndatasize_after_failing_delegatecall( gas_limit=111669149696, ) - pre[addr] = Account(balance=0x1000000) + addr = pre.fund_eoa(amount=0x1000000) # noqa: F841 + # Source: raw + # 0xfd + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.REVERT, + balance=0x6400000000, + nonce=0, + ) # Source: lll # { (seq (DELEGATECALL 10000 0 0 0 0) (SSTORE 0 (RETURNDATASIZE)))} # noqa: E501 target = pre.deploy_contract( # noqa: F841 code=Op.POP( Op.DELEGATECALL( gas=0x2710, - address=0x665521FD750490FD880EE369C267FCA44ED8A078, + address=addr_2, args_offset=0x0, args_size=0x0, ret_offset=0x0, @@ -69,17 +72,7 @@ def test_returndatasize_after_failing_delegatecall( 0: 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, # noqa: E501 }, nonce=0, - address=Address(0xACB6AD74F94EA8C5A482F1E89D1C0946600A9888), # noqa: E501 - ) - # Source: raw - # 0xfd - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.REVERT, - balance=0x6400000000, - nonce=0, - address=Address(0x665521FD750490FD880EE369C267FCA44ED8A078), # noqa: E501 ) - pre[sender] = Account(balance=0x6400000000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stReturnDataTest/test_returndatasize_after_failing_staticcall.py b/tests/ported_static/stReturnDataTest/test_returndatasize_after_failing_staticcall.py index a0900a3eb6a..9b36f269ef6 100644 --- a/tests/ported_static/stReturnDataTest/test_returndatasize_after_failing_staticcall.py +++ b/tests/ported_static/stReturnDataTest/test_returndatasize_after_failing_staticcall.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,10 +34,7 @@ def test_returndatasize_after_failing_staticcall( ) -> None: """Test_returndatasize_after_failing_staticcall.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - addr = Address(0x905C744ACAF4D8F5436C9C5E91E0626D44ADD821) - sender = EOA( - key=0x834185262E53584684BF2B72C64E510013C235D0F45E462DB65900455DF45A35 - ) + sender = pre.fund_eoa(amount=0x6400000000) env = Environment( fee_recipient=coinbase, @@ -49,14 +45,21 @@ def test_returndatasize_after_failing_staticcall( gas_limit=111669149696, ) - pre[addr] = Account(balance=0x100000) + addr = pre.fund_eoa(amount=0x100000) # noqa: F841 + # Source: raw + # 0xfd + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.REVERT, + balance=0x6400000000, + nonce=0, + ) # Source: lll # { (seq (STATICCALL 60000 0 0 0 0) (SSTORE 0 (RETURNDATASIZE)))} # noqa: E501 target = pre.deploy_contract( # noqa: F841 code=Op.POP( Op.STATICCALL( gas=0xEA60, - address=0x665521FD750490FD880EE369C267FCA44ED8A078, + address=addr_2, args_offset=0x0, args_size=0x0, ret_offset=0x0, @@ -69,17 +72,7 @@ def test_returndatasize_after_failing_staticcall( 0: 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, # noqa: E501 }, nonce=0, - address=Address(0xB59B41F3A1359DD85455601DB8E79F621D7E63F6), # noqa: E501 - ) - # Source: raw - # 0xfd - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.REVERT, - balance=0x6400000000, - nonce=0, - address=Address(0x665521FD750490FD880EE369C267FCA44ED8A078), # noqa: E501 ) - pre[sender] = Account(balance=0x6400000000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stReturnDataTest/test_returndatasize_after_oog_after_deeper.py b/tests/ported_static/stReturnDataTest/test_returndatasize_after_oog_after_deeper.py index e6e10aaf816..ef7389b390c 100644 --- a/tests/ported_static/stReturnDataTest/test_returndatasize_after_oog_after_deeper.py +++ b/tests/ported_static/stReturnDataTest/test_returndatasize_after_oog_after_deeper.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,10 +34,7 @@ def test_returndatasize_after_oog_after_deeper( ) -> None: """Transaction calls A (CALL B(CALL C(RETURN) OOG) 'check buffers').""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - addr = Address(0xBDA572E15071B6AB42CFEC01423F1FBB1DE68703) - sender = EOA( - key=0x987C63506890B18862BD2304513F21B726A7E35961C9214954326694141FDB46 - ) + sender = pre.fund_eoa(amount=0x100000000000) env = Environment( fee_recipient=coinbase, @@ -49,28 +45,14 @@ def test_returndatasize_after_oog_after_deeper( gas_limit=111669149696, ) - pre[addr] = Account(balance=0x1000000000) + addr = pre.fund_eoa(amount=0x1000000000) # noqa: F841 # Source: lll - # { (seq (SSTORE 2 (CALL 100000 0 0 0 0 32)) (SSTORE 0 (RETURNDATASIZE))) (SSTORE 1 (MLOAD 0))} # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x2, - value=Op.CALL( - gas=0x186A0, - address=0xCB33B9A773995316746A40201081D054635D02DA, - value=0x0, - args_offset=0x0, - args_size=0x0, - ret_offset=0x0, - ret_size=0x20, - ), - ) - + Op.SSTORE(key=0x0, value=Op.RETURNDATASIZE) - + Op.SSTORE(key=0x1, value=Op.MLOAD(offset=0x0)) + # { (seq (MSTORE 0 255) (RETURN 0 32) )} + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x0, value=0xFF) + + Op.RETURN(offset=0x0, size=0x20) + Op.STOP, - storage={0: 0xFFFFFFFF, 1: 0xFFFFFFFF, 2: 0xFFFFFFFF}, nonce=0, - address=Address(0x58EAA3041AD52C24E38E485222953F1CC19C7484), # noqa: E501 ) # Source: lll # { (seq (CALL 100000 0 0 0 0 0) (while 1 (SSTORE 0 1)) )} # noqa: E501 @@ -78,7 +60,7 @@ def test_returndatasize_after_oog_after_deeper( code=Op.POP( Op.CALL( gas=0x186A0, - address=0x8E0C75135225713D8C9ACBB889ABBA5A5F598920, + address=addr_3, value=0x0, args_offset=0x0, args_size=0x0, @@ -94,17 +76,27 @@ def test_returndatasize_after_oog_after_deeper( + Op.STOP, balance=0x6400000000, nonce=0, - address=Address(0xCB33B9A773995316746A40201081D054635D02DA), # noqa: E501 ) - pre[sender] = Account(balance=0x100000000000) # Source: lll - # { (seq (MSTORE 0 255) (RETURN 0 32) )} - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x0, value=0xFF) - + Op.RETURN(offset=0x0, size=0x20) + # { (seq (SSTORE 2 (CALL 100000 0 0 0 0 32)) (SSTORE 0 (RETURNDATASIZE))) (SSTORE 1 (MLOAD 0))} # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x2, + value=Op.CALL( + gas=0x186A0, + address=addr_2, + value=0x0, + args_offset=0x0, + args_size=0x0, + ret_offset=0x0, + ret_size=0x20, + ), + ) + + Op.SSTORE(key=0x0, value=Op.RETURNDATASIZE) + + Op.SSTORE(key=0x1, value=Op.MLOAD(offset=0x0)) + Op.STOP, + storage={0: 0xFFFFFFFF, 1: 0xFFFFFFFF, 2: 0xFFFFFFFF}, nonce=0, - address=Address(0x8E0C75135225713D8C9ACBB889ABBA5A5F598920), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stReturnDataTest/test_returndatasize_after_successful_delegatecall.py b/tests/ported_static/stReturnDataTest/test_returndatasize_after_successful_delegatecall.py index d079b091aa9..fe1909c48d1 100644 --- a/tests/ported_static/stReturnDataTest/test_returndatasize_after_successful_delegatecall.py +++ b/tests/ported_static/stReturnDataTest/test_returndatasize_after_successful_delegatecall.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_returndatasize_after_successful_delegatecall( ) -> None: """Test_returndatasize_after_successful_delegatecall.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x834185262E53584684BF2B72C64E510013C235D0F45E462DB65900455DF45A35 - ) + sender = pre.fund_eoa(amount=0x6400000000) env = Environment( fee_recipient=coinbase, @@ -48,13 +45,22 @@ def test_returndatasize_after_successful_delegatecall( gas_limit=111669149696, ) + # Source: lll + # { (MSTORE 0x0 (CALLER)) (RETURN 0 20) } + addr = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x0, value=Op.CALLER) + + Op.RETURN(offset=0x0, size=0x14) + + Op.STOP, + balance=0x6400000000, + nonce=0, + ) # Source: lll # { (seq (DELEGATECALL 60000 0 0 0 0) (SSTORE 0 (RETURNDATASIZE)))} # noqa: E501 target = pre.deploy_contract( # noqa: F841 code=Op.POP( Op.DELEGATECALL( gas=0xEA60, - address=0x7C17DBBFA29DC8391BFA19022ECB4FDA54FC826A, + address=addr, args_offset=0x0, args_size=0x0, ret_offset=0x0, @@ -67,19 +73,7 @@ def test_returndatasize_after_successful_delegatecall( 0: 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, # noqa: E501 }, nonce=0, - address=Address(0x1C7CCE7753E67952A031524E6505E53F170520BE), # noqa: E501 - ) - # Source: lll - # { (MSTORE 0x0 (CALLER)) (RETURN 0 20) } - addr = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x0, value=Op.CALLER) - + Op.RETURN(offset=0x0, size=0x14) - + Op.STOP, - balance=0x6400000000, - nonce=0, - address=Address(0x7C17DBBFA29DC8391BFA19022ECB4FDA54FC826A), # noqa: E501 ) - pre[sender] = Account(balance=0x6400000000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stReturnDataTest/test_returndatasize_after_successful_staticcall.py b/tests/ported_static/stReturnDataTest/test_returndatasize_after_successful_staticcall.py index 10e705d58d5..1725dba694e 100644 --- a/tests/ported_static/stReturnDataTest/test_returndatasize_after_successful_staticcall.py +++ b/tests/ported_static/stReturnDataTest/test_returndatasize_after_successful_staticcall.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_returndatasize_after_successful_staticcall( ) -> None: """Test_returndatasize_after_successful_staticcall.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x834185262E53584684BF2B72C64E510013C235D0F45E462DB65900455DF45A35 - ) + sender = pre.fund_eoa(amount=0x6400000000) env = Environment( fee_recipient=coinbase, @@ -48,13 +45,25 @@ def test_returndatasize_after_successful_staticcall( gas_limit=111669149696, ) + # Source: lll + # { (MSTORE 0x0 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) (RETURN 0 6) } # noqa: E501 + addr = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE( + offset=0x0, + value=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, # noqa: E501 + ) + + Op.RETURN(offset=0x0, size=0x6) + + Op.STOP, + balance=0x6400000000, + nonce=0, + ) # Source: lll # { (seq (STATICCALL 60000 0 0 0 0) (SSTORE 0 (RETURNDATASIZE)))} # noqa: E501 target = pre.deploy_contract( # noqa: F841 code=Op.POP( Op.STATICCALL( gas=0xEA60, - address=0xC6426EE9B84CE08176D8D295613A7D10C48576B, + address=addr, args_offset=0x0, args_size=0x0, ret_offset=0x0, @@ -67,22 +76,7 @@ def test_returndatasize_after_successful_staticcall( 0: 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, # noqa: E501 }, nonce=0, - address=Address(0xB59B41F3A1359DD85455601DB8E79F621D7E63F6), # noqa: E501 - ) - # Source: lll - # { (MSTORE 0x0 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) (RETURN 0 6) } # noqa: E501 - addr = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE( - offset=0x0, - value=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, # noqa: E501 - ) - + Op.RETURN(offset=0x0, size=0x6) - + Op.STOP, - balance=0x6400000000, - nonce=0, - address=Address(0x0C6426EE9B84CE08176D8D295613A7D10C48576B), # noqa: E501 ) - pre[sender] = Account(balance=0x6400000000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stReturnDataTest/test_returndatasize_bug.py b/tests/ported_static/stReturnDataTest/test_returndatasize_bug.py index 70a1ddf41bc..d19f6656947 100644 --- a/tests/ported_static/stReturnDataTest/test_returndatasize_bug.py +++ b/tests/ported_static/stReturnDataTest/test_returndatasize_bug.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_returndatasize_bug( ) -> None: """RETURNDATASIZE after a failing CALL (due to insufficient balance)...""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x834185262E53584684BF2B72C64E510013C235D0F45E462DB65900455DF45A35 - ) + sender = pre.fund_eoa(amount=0x6400000000) env = Environment( fee_recipient=coinbase, @@ -47,12 +44,12 @@ def test_returndatasize_bug( ) # Source: lll - # { (CALL 1 50000 0 0 0 0) (SSTORE 0 (RETURNDATASIZE)) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 + # { (CALL 10 1 50000 0 0 0 0) (SSTORE 1 1) } + addr = pre.deploy_contract( # noqa: F841 code=Op.POP( Op.CALL( - gas=0x1, - address=0xA6DE4978FAA392285CC6411DFE442872304DEB1, + gas=0xA, + address=0x1, value=0xC350, args_offset=0x0, args_size=0x0, @@ -60,20 +57,17 @@ def test_returndatasize_bug( ret_size=0x0, ) ) - + Op.SSTORE(key=0x0, value=Op.RETURNDATASIZE) + + Op.SSTORE(key=0x1, value=0x1) + Op.STOP, - storage={0: 1}, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x0D7BC2FBD330F7D4EC71764551A8B9CFB11619F5), # noqa: E501 ) # Source: lll - # { (CALL 10 1 50000 0 0 0 0) (SSTORE 1 1) } - addr = pre.deploy_contract( # noqa: F841 + # { (CALL 1 50000 0 0 0 0) (SSTORE 0 (RETURNDATASIZE)) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 code=Op.POP( Op.CALL( - gas=0xA, - address=0x1, + gas=0x1, + address=addr, value=0xC350, args_offset=0x0, args_size=0x0, @@ -81,12 +75,12 @@ def test_returndatasize_bug( ret_size=0x0, ) ) - + Op.SSTORE(key=0x1, value=0x1) + + Op.SSTORE(key=0x0, value=Op.RETURNDATASIZE) + Op.STOP, + storage={0: 1}, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x0A6DE4978FAA392285CC6411DFE442872304DEB1), # noqa: E501 ) - pre[sender] = Account(balance=0x6400000000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stReturnDataTest/test_returndatasize_initial.py b/tests/ported_static/stReturnDataTest/test_returndatasize_initial.py index 4bec111f2c0..b347d992e05 100644 --- a/tests/ported_static/stReturnDataTest/test_returndatasize_initial.py +++ b/tests/ported_static/stReturnDataTest/test_returndatasize_initial.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_returndatasize_initial( ) -> None: """Test_returndatasize_initial.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x834185262E53584684BF2B72C64E510013C235D0F45E462DB65900455DF45A35 - ) + sender = pre.fund_eoa(amount=0x6400000000) env = Environment( fee_recipient=coinbase, @@ -53,9 +50,7 @@ def test_returndatasize_initial( storage={0: 1}, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x3A939FCCA7DA8B1332893BCCA91690406F4B7A82), # noqa: E501 ) - pre[sender] = Account(balance=0x6400000000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stReturnDataTest/test_returndatasize_initial_zero_read.py b/tests/ported_static/stReturnDataTest/test_returndatasize_initial_zero_read.py index 82e2eea989d..13248ea8d42 100644 --- a/tests/ported_static/stReturnDataTest/test_returndatasize_initial_zero_read.py +++ b/tests/ported_static/stReturnDataTest/test_returndatasize_initial_zero_read.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -57,9 +56,7 @@ def test_returndatasize_initial_zero_read( ) -> None: """Test_returndatasize_initial_zero_read.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x834185262E53584684BF2B72C64E510013C235D0F45E462DB65900455DF45A35 - ) + sender = pre.fund_eoa(amount=0x6400000000) env = Environment( fee_recipient=coinbase, @@ -79,9 +76,7 @@ def test_returndatasize_initial_zero_read( storage={0: 1}, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x537CD1744AF41C3A74D5AA5AE93958D1160CA98F), # noqa: E501 ) - pre[sender] = Account(balance=0x6400000000) tx_data = [ Bytes(""), diff --git a/tests/ported_static/stReturnDataTest/test_revert_ret_data_size.py b/tests/ported_static/stReturnDataTest/test_revert_ret_data_size.py index 520ad4a4f47..d5094abc709 100644 --- a/tests/ported_static/stReturnDataTest/test_revert_ret_data_size.py +++ b/tests/ported_static/stReturnDataTest/test_revert_ret_data_size.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -266,9 +265,7 @@ def test_revert_ret_data_size( contract_3 = Address(0x0000000000000000000000000000000000000300) contract_4 = Address(0x0000000000000000000000000000000000000400) contract_5 = Address(0x0000000000000000000000000000000000000500) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0xBA1A9CE0BA1A9CE) env = Environment( fee_recipient=coinbase, @@ -279,6 +276,54 @@ def test_revert_ret_data_size( gas_limit=100000000, ) + # Source: lll + # { + # [0x00] (/ (- 0 1) 2) + # [0x20] (+ @0x00 1) + # + # (return 0 0x40) + # } + contract_1 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x0, value=Op.DIV(Op.SUB(0x0, 0x1), 0x2)) + + Op.MSTORE(offset=0x20, value=Op.ADD(Op.MLOAD(offset=0x0), 0x1)) + + Op.RETURN(offset=0x0, size=0x40) + + Op.STOP, + balance=0xBA1A9CE0BA1A9CE, + nonce=0, + address=Address(0x0000000000000000000000000000000000001000), # noqa: E501 + ) + # Source: raw + # 0x5000 + contract_2 = pre.deploy_contract( # noqa: F841 + code=Op.POP + Op.STOP, + balance=0xBA1A9CE0BA1A9CE, + nonce=0, + address=Address(0x0000000000000000000000000000000000000200), # noqa: E501 + ) + # Source: raw + # 0x600056 + contract_3 = pre.deploy_contract( # noqa: F841 + code=Op.JUMP(pc=0x0), + balance=0xBA1A9CE0BA1A9CE, + nonce=0, + address=Address(0x0000000000000000000000000000000000000300), # noqa: E501 + ) + # Source: raw + # 0x6001600157 + contract_4 = pre.deploy_contract( # noqa: F841 + code=Op.JUMPI(pc=0x1, condition=0x1), + balance=0xBA1A9CE0BA1A9CE, + nonce=0, + address=Address(0x0000000000000000000000000000000000000400), # noqa: E501 + ) + # Source: raw + # 0xFE00 + contract_5 = pre.deploy_contract( # noqa: F841 + code=Op.INVALID + Op.STOP, + balance=0xBA1A9CE0BA1A9CE, + nonce=0, + address=Address(0x0000000000000000000000000000000000000500), # noqa: E501 + ) # Source: lll # { ; $4 is the type of thing that fails # ; $36 is the failure itself @@ -722,55 +767,6 @@ def test_revert_ret_data_size( nonce=0, address=Address(0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC), # noqa: E501 ) - # Source: lll - # { - # [0x00] (/ (- 0 1) 2) - # [0x20] (+ @0x00 1) - # - # (return 0 0x40) - # } - contract_1 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x0, value=Op.DIV(Op.SUB(0x0, 0x1), 0x2)) - + Op.MSTORE(offset=0x20, value=Op.ADD(Op.MLOAD(offset=0x0), 0x1)) - + Op.RETURN(offset=0x0, size=0x40) - + Op.STOP, - balance=0xBA1A9CE0BA1A9CE, - nonce=0, - address=Address(0x0000000000000000000000000000000000001000), # noqa: E501 - ) - # Source: raw - # 0x5000 - contract_2 = pre.deploy_contract( # noqa: F841 - code=Op.POP + Op.STOP, - balance=0xBA1A9CE0BA1A9CE, - nonce=0, - address=Address(0x0000000000000000000000000000000000000200), # noqa: E501 - ) - # Source: raw - # 0x600056 - contract_3 = pre.deploy_contract( # noqa: F841 - code=Op.JUMP(pc=0x0), - balance=0xBA1A9CE0BA1A9CE, - nonce=0, - address=Address(0x0000000000000000000000000000000000000300), # noqa: E501 - ) - # Source: raw - # 0x6001600157 - contract_4 = pre.deploy_contract( # noqa: F841 - code=Op.JUMPI(pc=0x1, condition=0x1), - balance=0xBA1A9CE0BA1A9CE, - nonce=0, - address=Address(0x0000000000000000000000000000000000000400), # noqa: E501 - ) - # Source: raw - # 0xFE00 - contract_5 = pre.deploy_contract( # noqa: F841 - code=Op.INVALID + Op.STOP, - balance=0xBA1A9CE0BA1A9CE, - nonce=0, - address=Address(0x0000000000000000000000000000000000000500), # noqa: E501 - ) - pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE) tx_data = [ Bytes("1a8451e6") + Hash(0xF1) + Hash(0x0), diff --git a/tests/ported_static/stReturnDataTest/test_subcall_return_more_then_expected.py b/tests/ported_static/stReturnDataTest/test_subcall_return_more_then_expected.py index d4f8c030888..1f2141adffe 100644 --- a/tests/ported_static/stReturnDataTest/test_subcall_return_more_then_expected.py +++ b/tests/ported_static/stReturnDataTest/test_subcall_return_more_then_expected.py @@ -46,6 +46,49 @@ def test_subcall_return_more_then_expected( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: lll + # { + # (MSTORE 0 0x1122334455667788991011121314151617181920212223242526272829303132) # noqa: E501 + # (MSTORE 32 0x3334353637383940414243444546474849505152535455565758596061626364) # noqa: E501 + # (RETURN 0 64) + # } + addr = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE( + offset=0x0, + value=0x1122334455667788991011121314151617181920212223242526272829303132, # noqa: E501 + ) + + Op.MSTORE( + offset=0x20, + value=0x3334353637383940414243444546474849505152535455565758596061626364, # noqa: E501 + ) + + Op.RETURN(offset=0x0, size=0x40) + + Op.STOP, + balance=0xDE0B6B3A7640000, + nonce=0, + address=Address(0xA8592F39B32943F9F464090497722B4F9C15F598), # noqa: E501 + ) + # Source: lll + # { + # (MSTORE 0 0x1122334455667788991011121314151617181920212223242526272829303132) # noqa: E501 + # (MSTORE 32 0x3334353637383940414243444546474849505152535455565758596061626364) # noqa: E501 + # (REVERT 0 64) + # } + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE( + offset=0x0, + value=0x1122334455667788991011121314151617181920212223242526272829303132, # noqa: E501 + ) + + Op.MSTORE( + offset=0x20, + value=0x3334353637383940414243444546474849505152535455565758596061626364, # noqa: E501 + ) + + Op.REVERT(offset=0x0, size=0x40) + + Op.STOP, + balance=0xDE0B6B3A7640000, + nonce=0, + address=Address(0x028CDAFC3D5D27D006FFB88E1ECF2FA4B412EE4F), # noqa: E501 + ) # Source: lll # { # ;; Get returndata from a subcall @@ -79,7 +122,7 @@ def test_subcall_return_more_then_expected( code=Op.POP( Op.CALL( gas=0x30D40, - address=0xA8592F39B32943F9F464090497722B4F9C15F598, + address=addr, value=0x0, args_offset=0x0, args_size=0x0, @@ -92,7 +135,7 @@ def test_subcall_return_more_then_expected( + Op.POP( Op.DELEGATECALL( gas=0x30D40, - address=0xA8592F39B32943F9F464090497722B4F9C15F598, + address=addr, args_offset=0x0, args_size=0x0, ret_offset=0x0, @@ -104,7 +147,7 @@ def test_subcall_return_more_then_expected( + Op.POP( Op.STATICCALL( gas=0x30D40, - address=0xA8592F39B32943F9F464090497722B4F9C15F598, + address=addr, args_offset=0x0, args_size=0x0, ret_offset=0x0, @@ -116,7 +159,7 @@ def test_subcall_return_more_then_expected( + Op.POP( Op.CALLCODE( gas=0x30D40, - address=0xA8592F39B32943F9F464090497722B4F9C15F598, + address=addr, value=0x0, args_offset=0x0, args_size=0x0, @@ -129,7 +172,7 @@ def test_subcall_return_more_then_expected( + Op.POP( Op.CALL( gas=0x30D40, - address=0x28CDAFC3D5D27D006FFB88E1ECF2FA4B412EE4F, + address=addr_2, value=0x0, args_offset=0x0, args_size=0x0, @@ -142,7 +185,7 @@ def test_subcall_return_more_then_expected( + Op.POP( Op.DELEGATECALL( gas=0x30D40, - address=0x28CDAFC3D5D27D006FFB88E1ECF2FA4B412EE4F, + address=addr_2, args_offset=0x0, args_size=0x0, ret_offset=0x0, @@ -154,7 +197,7 @@ def test_subcall_return_more_then_expected( + Op.POP( Op.STATICCALL( gas=0x30D40, - address=0x28CDAFC3D5D27D006FFB88E1ECF2FA4B412EE4F, + address=addr_2, args_offset=0x0, args_size=0x0, ret_offset=0x0, @@ -166,7 +209,7 @@ def test_subcall_return_more_then_expected( + Op.POP( Op.CALLCODE( gas=0x30D40, - address=0x28CDAFC3D5D27D006FFB88E1ECF2FA4B412EE4F, + address=addr_2, value=0x0, args_offset=0x0, args_size=0x0, @@ -180,49 +223,6 @@ def test_subcall_return_more_then_expected( nonce=0, address=Address(0xCA70835D5E9B8C8E139A9693AB05705D291F86BB), # noqa: E501 ) - # Source: lll - # { - # (MSTORE 0 0x1122334455667788991011121314151617181920212223242526272829303132) # noqa: E501 - # (MSTORE 32 0x3334353637383940414243444546474849505152535455565758596061626364) # noqa: E501 - # (RETURN 0 64) - # } - addr = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE( - offset=0x0, - value=0x1122334455667788991011121314151617181920212223242526272829303132, # noqa: E501 - ) - + Op.MSTORE( - offset=0x20, - value=0x3334353637383940414243444546474849505152535455565758596061626364, # noqa: E501 - ) - + Op.RETURN(offset=0x0, size=0x40) - + Op.STOP, - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0xA8592F39B32943F9F464090497722B4F9C15F598), # noqa: E501 - ) - # Source: lll - # { - # (MSTORE 0 0x1122334455667788991011121314151617181920212223242526272829303132) # noqa: E501 - # (MSTORE 32 0x3334353637383940414243444546474849505152535455565758596061626364) # noqa: E501 - # (REVERT 0 64) - # } - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE( - offset=0x0, - value=0x1122334455667788991011121314151617181920212223242526272829303132, # noqa: E501 - ) - + Op.MSTORE( - offset=0x20, - value=0x3334353637383940414243444546474849505152535455565758596061626364, # noqa: E501 - ) - + Op.REVERT(offset=0x0, size=0x40) - + Op.STOP, - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0x028CDAFC3D5D27D006FFB88E1ECF2FA4B412EE4F), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRevertTest/test_cost_revert.py b/tests/ported_static/stRevertTest/test_cost_revert.py index c12c2f4a942..7c6fddec42c 100644 --- a/tests/ported_static/stRevertTest/test_cost_revert.py +++ b/tests/ported_static/stRevertTest/test_cost_revert.py @@ -237,6 +237,7 @@ def test_cost_revert( gas_limit=100000000, ) + pre[sender] = Account(balance=0x100000000000) # Source: lll # { # (revert 0 0x10) @@ -469,7 +470,6 @@ def test_cost_revert( nonce=0, address=Address(0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC), # noqa: E501 ) - pre[sender] = Account(balance=0x100000000000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stRevertTest/test_loop_calls_depth_then_revert.py b/tests/ported_static/stRevertTest/test_loop_calls_depth_then_revert.py index 71696e7b402..fc4b0089a75 100644 --- a/tests/ported_static/stRevertTest/test_loop_calls_depth_then_revert.py +++ b/tests/ported_static/stRevertTest/test_loop_calls_depth_then_revert.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_loop_calls_depth_then_revert( ) -> None: """Test_loop_calls_depth_then_revert.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x4F31B3206FBF0E0E598B9B1A7D8AC86302A0FF1D8930738F1BEBAE9B67173E52 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -46,7 +43,6 @@ def test_loop_calls_depth_then_revert( gas_limit=100000000, ) - pre[sender] = Account(balance=0xE8D4A51000) # Source: lll # { [[0]] (+ (SLOAD 0) 1) (CALL (GAS) 0 0 0 0 0) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 diff --git a/tests/ported_static/stRevertTest/test_loop_calls_depth_then_revert2.py b/tests/ported_static/stRevertTest/test_loop_calls_depth_then_revert2.py index ed6a5e22284..3a2f95fdd05 100644 --- a/tests/ported_static/stRevertTest/test_loop_calls_depth_then_revert2.py +++ b/tests/ported_static/stRevertTest/test_loop_calls_depth_then_revert2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -36,9 +35,7 @@ def test_loop_calls_depth_then_revert2( """Test_loop_calls_depth_then_revert2.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) contract_0 = Address(0xA000000000000000000000000000000000000000) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0x13426172C74D822B878FE800000000) env = Environment( fee_recipient=coinbase, @@ -49,7 +46,6 @@ def test_loop_calls_depth_then_revert2( gas_limit=9223372036854775807, ) - pre[sender] = Account(balance=0x13426172C74D822B878FE800000000) # Source: raw # 0x6103ff60005414603f576001600054016000556000600060006000600073a0000000000000000000000000000000000000005af15061041a600054106053575b66600060006002f0600052600760196003f0505b # noqa: E501 contract_0 = pre.deploy_contract( # noqa: F841 diff --git a/tests/ported_static/stRevertTest/test_loop_calls_depth_then_revert3.py b/tests/ported_static/stRevertTest/test_loop_calls_depth_then_revert3.py index b00e868bc95..2ebd7d4cec4 100644 --- a/tests/ported_static/stRevertTest/test_loop_calls_depth_then_revert3.py +++ b/tests/ported_static/stRevertTest/test_loop_calls_depth_then_revert3.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -36,9 +35,7 @@ def test_loop_calls_depth_then_revert3( """Test_loop_calls_depth_then_revert3.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) contract_0 = Address(0xA000000000000000000000000000000000000000) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0x13426172C74D822B878FE800000000) env = Environment( fee_recipient=coinbase, @@ -49,7 +46,6 @@ def test_loop_calls_depth_then_revert3( gas_limit=9223372036854775807, ) - pre[sender] = Account(balance=0x13426172C74D822B878FE800000000) # Source: raw # 0x6103fe60005414603f576001600054016000556000600060006000600073a0000000000000000000000000000000000000005af15061041a600054106053575b66600060006002f0600052600760196003f0505b # noqa: E501 contract_0 = pre.deploy_contract( # noqa: F841 @@ -87,9 +83,10 @@ def test_loop_calls_depth_then_revert3( compute_create_address(address=contract_0, nonce=0): Account( balance=1, nonce=2 ), - Address(0xCD6807039CAFFDDBD1C28A749EC91BEF15F448E5): Account( - balance=2, nonce=1 - ), + compute_create_address( + address=compute_create_address(address=contract_0, nonce=0), + nonce=1, + ): Account(balance=2, nonce=1), } state_test(env=env, pre=pre, post=post, tx=tx) diff --git a/tests/ported_static/stRevertTest/test_loop_calls_then_revert.py b/tests/ported_static/stRevertTest/test_loop_calls_then_revert.py index 82f49a403f8..c64f15352a7 100644 --- a/tests/ported_static/stRevertTest/test_loop_calls_then_revert.py +++ b/tests/ported_static/stRevertTest/test_loop_calls_then_revert.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_loop_calls_then_revert( ) -> None: """Test_loop_calls_then_revert.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x4F31B3206FBF0E0E598B9B1A7D8AC86302A0FF1D8930738F1BEBAE9B67173E52 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -46,7 +43,13 @@ def test_loop_calls_then_revert( gas_limit=100000000, ) - pre[sender] = Account(balance=0xE8D4A51000) + # Source: lll + # { [[0]] (ADD 1 (SLOAD 0)) } + addr = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x0, value=Op.ADD(0x1, Op.SLOAD(key=0x0))) + + Op.STOP, + nonce=0, + ) # Source: raw # 0x5b600160005403600055600060006000600060007361c350f150600054600057 # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -55,7 +58,7 @@ def test_loop_calls_then_revert( + Op.POP( Op.CALL( gas=0xC350, - address=0xC47BCBF49DD735566CFDE927821E938D5B33014C, + address=addr, value=0x0, args_offset=0x0, args_size=0x0, @@ -66,15 +69,6 @@ def test_loop_calls_then_revert( + Op.JUMPI(pc=0x0, condition=Op.SLOAD(key=0x0)), storage={0: 850}, nonce=0, - address=Address(0x0347AFF20D9D3C574E18F3B17DC267DDCD2D75CA), # noqa: E501 - ) - # Source: lll - # { [[0]] (ADD 1 (SLOAD 0)) } - addr = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x0, value=Op.ADD(0x1, Op.SLOAD(key=0x0))) - + Op.STOP, - nonce=0, - address=Address(0xC47BCBF49DD735566CFDE927821E938D5B33014C), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stRevertTest/test_loop_delegate_calls_depth_then_revert.py b/tests/ported_static/stRevertTest/test_loop_delegate_calls_depth_then_revert.py index 39bc63f8f88..1be3fb70d90 100644 --- a/tests/ported_static/stRevertTest/test_loop_delegate_calls_depth_then_revert.py +++ b/tests/ported_static/stRevertTest/test_loop_delegate_calls_depth_then_revert.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_loop_delegate_calls_depth_then_revert( ) -> None: """Test_loop_delegate_calls_depth_then_revert.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x4F31B3206FBF0E0E598B9B1A7D8AC86302A0FF1D8930738F1BEBAE9B67173E52 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -46,7 +43,6 @@ def test_loop_delegate_calls_depth_then_revert( gas_limit=100000000, ) - pre[sender] = Account(balance=0xE8D4A51000) # Source: lll # { [[0]] (+ (SLOAD 0) 1) (DELEGATECALL (GAS) 0 0 0 0) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 diff --git a/tests/ported_static/stRevertTest/test_nashatyrev_suicide_revert.py b/tests/ported_static/stRevertTest/test_nashatyrev_suicide_revert.py index 3d38439d3a7..64f7fb297d5 100644 --- a/tests/ported_static/stRevertTest/test_nashatyrev_suicide_revert.py +++ b/tests/ported_static/stRevertTest/test_nashatyrev_suicide_revert.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -32,9 +31,7 @@ def test_nashatyrev_suicide_revert( ) -> None: """Test_nashatyrev_suicide_revert.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x4F31B3206FBF0E0E598B9B1A7D8AC86302A0FF1D8930738F1BEBAE9B67173E52 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -45,7 +42,6 @@ def test_nashatyrev_suicide_revert( gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) # Source: raw # 0x60606040526000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680639c3674fc14610049578063c040622614610058575b610000565b3461000057610056610067565b005b3461000057610065610147565b005b600060405160a680610200833901809050604051809103906000f080156100005790508073ffffffffffffffffffffffffffffffffffffffff1660405180807f6628290000000000000000000000000000000000000000000000000000000000815250600301905060405180910390207c010000000000000000000000000000000000000000000000000000000090046040518163ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018090506000604051808303816000876161da5a03f19250505050610000565b50565b3073ffffffffffffffffffffffffffffffffffffffff1660405180807f6261642829000000000000000000000000000000000000000000000000000000815250600501905060405180910390207c010000000000000000000000000000000000000000000000000000000090046040518163ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018090506000604051808303816000876161da5a03f192505050505b56006060604052346000575b608f806100176000396000f30060606040526000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806326121ff014603c575b6000565b3460005760466048565b005b3373ffffffffffffffffffffffffffffffffffffffff16ff5b5600a165627a7a723058203d1a897befde21eff26abc325fb3da2f526bbc99de1c5c857d1835f673744ebd0029a165627a7a72305820850a52b31ec4745b7af15ba3bffdb1ba17f5d9a00a5f263ee287a92b568f534c0029 # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -53,7 +49,6 @@ def test_nashatyrev_suicide_revert( "60606040526000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680639c3674fc14610049578063c040622614610058575b610000565b3461000057610056610067565b005b3461000057610065610147565b005b600060405160a680610200833901809050604051809103906000f080156100005790508073ffffffffffffffffffffffffffffffffffffffff1660405180807f6628290000000000000000000000000000000000000000000000000000000000815250600301905060405180910390207c010000000000000000000000000000000000000000000000000000000090046040518163ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018090506000604051808303816000876161da5a03f19250505050610000565b50565b3073ffffffffffffffffffffffffffffffffffffffff1660405180807f6261642829000000000000000000000000000000000000000000000000000000815250600501905060405180910390207c010000000000000000000000000000000000000000000000000000000090046040518163ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018090506000604051808303816000876161da5a03f192505050505b56006060604052346000575b608f806100176000396000f30060606040526000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806326121ff014603c575b6000565b3460005760466048565b005b3373ffffffffffffffffffffffffffffffffffffffff16ff5b5600a165627a7a723058203d1a897befde21eff26abc325fb3da2f526bbc99de1c5c857d1835f673744ebd0029a165627a7a72305820850a52b31ec4745b7af15ba3bffdb1ba17f5d9a00a5f263ee287a92b568f534c0029" # noqa: E501 ), nonce=0, - address=Address(0xD926BBC3745F0070528FC04CBFD3A2C9F9CA6A19), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stRevertTest/test_python_revert_test_tue201814_minus_1430.py b/tests/ported_static/stRevertTest/test_python_revert_test_tue201814_minus_1430.py index 72570819b28..f387b5eeabb 100644 --- a/tests/ported_static/stRevertTest/test_python_revert_test_tue201814_minus_1430.py +++ b/tests/ported_static/stRevertTest/test_python_revert_test_tue201814_minus_1430.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_python_revert_test_tue201814_minus_1430( ) -> None: """A random test that had failed in Python ethereum implementation.""" coinbase = Address(0xF7B2E80637A148B5E46945E29388928DAFD5AA25) - sender = EOA( - key=0x3E297DF41E49C542F54718BBEE92D449778686880729C852F6D2C3C40D135341 - ) + sender = pre.fund_eoa(amount=0xAB56295C9D120548) env = Environment( fee_recipient=coinbase, @@ -46,6 +43,100 @@ def test_python_revert_test_tue201814_minus_1430( gas_limit=5805800386153628, ) + # Source: raw + # 0x601361019f6101013e6f338db2b1165b4918f178852663192a956d79a68b50eefdc639ca0b62ab4d52771db054ccc801c0666b34b3c6242bbfc5e98f20c14fb95e016718be9ad033d50e21675ff59297861847ea6a911a6a9d135e2f826dc6037d850e0db21d105b8732a34b873c7d943050b8659794f0bd3e841d35a2231e65f697f8cde1176728fa2051e87933cf66858e4e5e91baa7764fc1e9ffe4c7b15ba600e88f095989dc68f47ed704be2b99601761021563200fbd63f07e41c7f86732f4d5419b41e6887cca98e0943f141a5c66df98bd0c6d6c4cec657893afaa8ce1769c96cd0751aa76a98c8196fa8c92e70d7bda176299c91c3e7a7f05de3181109b8194387746f9ec15a6e0233f759e43360bd4e0a06e4e9f395117afcd072774ce12d13dc761016152303a683305858002a92140b678508e3a3be377d4825dbf618a393c7c061e75a8a496a33afe0f72017f2e33549e321838b083d48893f23dced4597e2e9ea08fe3f80970d6334b6c6f1fde8bcc81d03a7ccc244231cb6606dba6d06ec1c5158ef0db6994192acbd4cac6ab6ac8449d80fc2c32471946e071d9606bd390266d7f712766f4765076283ad6687450d7ab4df6f3f6ee9661014a70b802ec9d7ed96dc0b9ce7bd14b193dc1f05376d11ce19283c7f651d4d2e7c180715ff7fcbc995ea8b2766213cc517d6dad16d17f29a93220ce0ddb0a65d3d474dbc39cba5bcb3d4fcf9fef1910607d64c04511df277f522ab2475fbb2ba0720711a903dbecfa0429bf11e6e90cbb0f13d4ee050c52c87365e0216b4096186fc604fb563fa59f1263ee91d5695e407fdffe82ca1558f7876a93f3a218dd9ba6901fdea93d6be498f0b0e1874331115e31aa6fad4d87227362a9ec3e1c1be11cdb2309697bbc0c692eeadfa9161669b8aec24564487dc74f8e7d17e6a133b5dbe576838697de73f856197203ef1a3a54f7edb0dbd60f9d5274db6b5c1477169b77f0d817ed731a20db4b9e5b83d2786bffefab084a31c4afda168156612f281da0be688e5bdb1f3176ed78bc62343a7665abad6573482449e68b3acfe820993d77df5785384d51aaa0612dab5ddbf2a9bf550736ad422933878861011961023ffd608f61022d61021661036e635af7465b73ffffffffffffffffffffffffffffffffffffffff63792c6916f16ed70693587df6ccfae5218d01559bac60156102006101adfd # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.RETURNDATACOPY(dest_offset=0x101, offset=0x19F, size=0x13) + + Op.PUSH16[0x338DB2B1165B4918F178852663192A95] + + Op.PUSH14[0x79A68B50EEFDC639CA0B62AB4D52] + + Op.PUSH24[0x1DB054CCC801C0666B34B3C6242BBFC5E98F20C14FB95E01] + + Op.PUSH8[0x18BE9AD033D50E21] + + Op.PUSH8[0x5FF59297861847EA] + + Op.PUSH11[0x911A6A9D135E2F826DC603] + + Op.PUSH30[ + 0x850E0DB21D105B8732A34B873C7D943050B8659794F0BD3E841D35A2231E + ] + + Op.PUSH6[0xF697F8CDE117] + + Op.PUSH8[0x28FA2051E87933CF] + + Op.PUSH7[0x858E4E5E91BAA7] + + Op.PUSH23[0x4FC1E9FFE4C7B15BA600E88F095989DC68F47ED704BE2B] + + Op.SWAP10 + + Op.CREATE(value=0x200FBD63, offset=0x215, size=0x17) + + Op.RETURNDATACOPY( + dest_offset=0x99C91C, + offset=0x93AFAA8CE1769C96CD0751AA76A98C8196FA8C92E70D7BDA17, + size=0x41C7F86732F4D5419B41E6887CCA98E0943F141A5C66DF98BD0C6D6C4CEC65, # noqa: E501 + ) + + Op.PUSH27[0x7F05DE3181109B8194387746F9EC15A6E0233F759E43360BD4E0A0] + + Op.MSTORE(offset=0x161, value=0x4E9F395117AFCD072774CE12D13DC7) + + Op.ADDRESS + + Op.GASPRICE + + Op.PUSH9[0x3305858002A92140B6] + + Op.PUSH25[0x508E3A3BE377D4825DBF618A393C7C061E75A8A496A33AFE0F] + + Op.PUSH19[0x17F2E33549E321838B083D48893F23DCED459] + + Op.PUSH31[ + 0x2E9EA08FE3F80970D6334B6C6F1FDE8BCC81D03A7CCC244231CB6606DBA6D0 + ] + + Op.PUSH15[0xC1C5158EF0DB6994192ACBD4CAC6AB] + + Op.PUSH11[0xC8449D80FC2C32471946E0] + + Op.PUSH18[0xD9606BD390266D7F712766F4765076283AD6] + + Op.PUSH9[0x7450D7AB4DF6F3F6EE] + + Op.SWAP7 + + Op.MSTORE8(offset=0xB802EC9D7ED96DC0B9CE7BD14B193DC1F0, value=0x14A) + + Op.PUSH23[0xD11CE19283C7F651D4D2E7C180715FF7FCBC995EA8B276] + + Op.PUSH3[0x13CC51] + + Op.PUSH30[ + 0x6DAD16D17F29A93220CE0DDB0A65D3D474DBC39CBA5BCB3D4FCF9FEF1910 + ] + + Op.PUSH1[0x7D] + + Op.PUSH5[0xC04511DF27] + + Op.PUSH32[ + 0x522AB2475FBB2BA0720711A903DBECFA0429BF11E6E90CBB0F13D4EE050C52C8 + ] + + Op.PUSH20[0x65E0216B4096186FC604FB563FA59F1263EE91D5] + + Op.PUSH10[0x5E407FDFFE82CA1558F7] + + Op.DUP8 + + Op.PUSH11[0x93F3A218DD9BA6901FDEA9] + + Op.RETURNDATASIZE + + Op.PUSH12[0xE498F0B0E1874331115E31AA] + + Op.PUSH16[0xAD4D87227362A9EC3E1C1BE11CDB2309] + + Op.PUSH10[0x7BBC0C692EEADFA91616] + + Op.PUSH10[0xB8AEC24564487DC74F8E] + + Op.PUSH30[ + 0x17E6A133B5DBE576838697DE73F856197203EF1A3A54F7EDB0DBD60F9D52 + ] + + Op.PUSH21[0xDB6B5C1477169B77F0D817ED731A20DB4B9E5B83D2] + + Op.PUSH25[0x6BFFEFAB084A31C4AFDA168156612F281DA0BE688E5BDB1F31] + + Op.PUSH23[0xED78BC62343A7665ABAD6573482449E68B3ACFE820993D] + + Op.PUSH24[0xDF5785384D51AAA0612DAB5DDBF2A9BF550736AD42293387] + + Op.DUP9 + + Op.REVERT(offset=0x23F, size=0x119) + + Op.CALL( + gas=0x792C6916, + address=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, + value=0x5AF7465B, + args_offset=0x36E, + args_size=0x216, + ret_offset=0x22D, + ret_size=0x8F, + ) + + Op.PUSH15[0xD70693587DF6CCFAE5218D01559BAC] + + Op.PUSH1[0x15] + + Op.REVERT(offset=0x1AD, size=0x200), + balance=0x5B1936A53E6E440F, + nonce=21, + address=Address(0xE7E620C9CF6045209EDCAD4D6EF43413BEDF0949), # noqa: E501 + ) + # Source: raw + # 0x610326610100f379c940b5f2046740058558468f238b85db7f6bbe3f3d51e92a3e3268b7f7c4147541c695f376705288410b81b217e80726fb9e4c5c7b4c49eca0c1b6b97e117c16c26c9816459f38396ffc36da48d65defdc7d055cbc846c07e81cfab0fb607c6cbc968774d4de7df8e3236f581e688cc2081a96b1cad9e0609b70f4fddda49ae97714e7d325ceab23acd5f46ba15b5210474116121921a04f68f3f933b9ad91b735bf71bfe41da706499c5d47b6de1fe398cb91fdf66481cbb8661d71d457cf3cef75dabf5ea496d7012f4c56b9fe70e6c4204720e3ce66874cead08499d57a547b97d37744ce205e051f296fb116fc9e5f3c280919aff3c93c5d5cefff9a6102d86103ca6364b68c8ef07d # noqa: E501 + coinbase = pre.deploy_contract( # noqa: F841 + code=bytes.fromhex( + "610326610100f379c940b5f2046740058558468f238b85db7f6bbe3f3d51e92a3e3268b7f7c4147541c695f376705288410b81b217e80726fb9e4c5c7b4c49eca0c1b6b97e117c16c26c9816459f38396ffc36da48d65defdc7d055cbc846c07e81cfab0fb607c6cbc968774d4de7df8e3236f581e688cc2081a96b1cad9e0609b70f4fddda49ae97714e7d325ceab23acd5f46ba15b5210474116121921a04f68f3f933b9ad91b735bf71bfe41da706499c5d47b6de1fe398cb91fdf66481cbb8661d71d457cf3cef75dabf5ea496d7012f4c56b9fe70e6c4204720e3ce66874cead08499d57a547b97d37744ce205e051f296fb116fc9e5f3c280919aff3c93c5d5cefff9a6102d86103ca6364b68c8ef07d" # noqa: E501 + ), + balance=0x54C814F188394C8, + nonce=29, + address=Address(0xF7B2E80637A148B5E46945E29388928DAFD5AA25), # noqa: E501 + ) # Source: raw # 0x6102fa60ff60f561014873630277795afa689497edb6a665eae52f3d625249756103a55260a860fb60cb3e6102dd6103e0fd6f568a159c0cae9044d258c55b10f4d100628d29ab781df7fcebb789e2a8cdbaa9c67c42cd1ebe81716ead0e94c7216d279dd3a0b3de311596d54729287873449ccce511e6991b3dc636a178159a3d9a06227462cd9a6768ccba17c2cb06de468e95730bf78e55af17e19973f2c3f5d4c21c169890b9a9672491f91aa1e7142667060d385ed594e21b6d02b23a6c4c50e7ab6a3ef66f83a2927f9845b4ba85c4fdfbd0054a0123ad93eff4b525b0f4b08d285f36f3bcac6a985b66906c348472b7cb047bc5a02e618666f0c50eecdc11f20fc1dc41c2fd957752e55ede4e56f469f536a04d436ad418a1ca7a44c0173c10f1806ba284f9c9c7c13670005de594dec538cd56c2746b3bfdfa7683ae0df68bbcb5347d61be606ef617322e6448e3e4124dbe061257a8f486529de397f08ce92502a37b957f855818082b5b5b49e36de5a83e8a270663088571bf2fdf8f5f2961031452326fb9499741e3859928a237f5e5df84c13c6043556b1e82328f9093e64defbdd07d7774d84835800999791abc41260472d96f604d07198e859adc0b70806beae7200cf116d2b55e89ddd564abc36d900e69a68b0f0e9e4f129987288153605d7d01c42f3b109ed2bd72a6cf13500241c2a5e5c4e17ea9ed9b05ba9b57d70d63d270ece77f6ecf21d3a41ad554f79584dcab761d4c8437774cad4bb13b2bece140358df93e76c0f49abe102cd44e474ab71c0237247865fa2add74c8b2a33d6f7041c5718a2554a72662720296dff5b377b559df4558b8a5b2c9e7d15eb3947a70064f935c8fdf0a4e726f644aa31b42c10280e50ea92a366c3d060c1270c6a16a75522fbeb3d7cca702807f5217816eab9cceb9e237ee8fde4ed3a23d3ec87adb334ac1caa7e06523b0132dd615cf3fc16140d34c191617823c3a7bf47c42bc36b69cb4385463595c7f6f9ea451e05303603e0cd401e13d6ff744e2a673824d943941551704ff14df7fa8646efbb2d8abc4ac6e258e9924924b8001f8f0650d66b37411d484b18f41e77c792bd1c169fa52bbfc8af4a45f20acb0ef95db2ecbc0d4eadbbbf6732f648bd33b36336dc0faf0cf1970bcd38093a50a44fd6b253b0e74f2706239c499217b8c3263dae332e254711d5d5e7e795c998cceed14cf46977e7d3cbb35783c79ef0530c3a8ac3fd8d49f10bb0ae919fa149adead67dae035627de430622813ac6271b518733c7fb9ba628e056e0e87e029b8e5f42821d775338e6774301ecb428b3938236ee22b7d0b5edf2ad6997869f427ba0672a7168614233e85f61dae5ed4283a53f60570116dad586dce62833a62ca8c914c641f8660526101d761010761031c736333d3d55ff4611a5b631c4ea729816102566103ce6101c161014a73000000000000000000000000000000000000000663202b2ea8f4610221610106602e3e648a95029ecb72849fe0943cb9d854c7d50ad04cfdfe648e286876b8f2b53e55fe01a152c8496cbcc6997447062b734cebde04796c6452e9efc4aba5bf071cbff56208a525a8ef5f52399b4f33697bd988884f58166d734881774eff46d77bb189c89c55b1c6591f178d2d7c21bf2b023adf9bc5b8621235e3346d98d56047a3f71241fd5a24abbb0c73fc463fb8a5e67e32055696fe51258dd07526ebd87e439bcebb514ae26dc12d653a5c1263705109097ec5dcdb3918ab114985f7097fd3003b50e58fba91007825a6b800f644eaa306051808460fc3b2d8e276b2187c7b583ff29ee0b0c34f9ee57bac9ebb996402e3300ddf06c760fc5f531f746b1e2beda7a15c07f90f92422822e8d33c5d2409ea7375197f7cd6d61770eddb078206cfc7c5006cd0e97da9ec65fa4fc683da22cfaf6dfc995feb5f8386a052851fc502f32e7ef9346e3d4633def4c0a4b9be12f2cd7c646062e14ca37cfb977524f677714c3d994ea05f1997a2462fc0ab20ed2a5958f37126029b6102056102c9605d6103a1736302e83dbef4 # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -328,101 +419,6 @@ def test_python_revert_test_tue201814_minus_1430( nonce=29, address=Address(0x69859649E8A52DE717592B881508371F8A8ED6B9), # noqa: E501 ) - pre[sender] = Account(balance=0xAB56295C9D120548) - # Source: raw - # 0x601361019f6101013e6f338db2b1165b4918f178852663192a956d79a68b50eefdc639ca0b62ab4d52771db054ccc801c0666b34b3c6242bbfc5e98f20c14fb95e016718be9ad033d50e21675ff59297861847ea6a911a6a9d135e2f826dc6037d850e0db21d105b8732a34b873c7d943050b8659794f0bd3e841d35a2231e65f697f8cde1176728fa2051e87933cf66858e4e5e91baa7764fc1e9ffe4c7b15ba600e88f095989dc68f47ed704be2b99601761021563200fbd63f07e41c7f86732f4d5419b41e6887cca98e0943f141a5c66df98bd0c6d6c4cec657893afaa8ce1769c96cd0751aa76a98c8196fa8c92e70d7bda176299c91c3e7a7f05de3181109b8194387746f9ec15a6e0233f759e43360bd4e0a06e4e9f395117afcd072774ce12d13dc761016152303a683305858002a92140b678508e3a3be377d4825dbf618a393c7c061e75a8a496a33afe0f72017f2e33549e321838b083d48893f23dced4597e2e9ea08fe3f80970d6334b6c6f1fde8bcc81d03a7ccc244231cb6606dba6d06ec1c5158ef0db6994192acbd4cac6ab6ac8449d80fc2c32471946e071d9606bd390266d7f712766f4765076283ad6687450d7ab4df6f3f6ee9661014a70b802ec9d7ed96dc0b9ce7bd14b193dc1f05376d11ce19283c7f651d4d2e7c180715ff7fcbc995ea8b2766213cc517d6dad16d17f29a93220ce0ddb0a65d3d474dbc39cba5bcb3d4fcf9fef1910607d64c04511df277f522ab2475fbb2ba0720711a903dbecfa0429bf11e6e90cbb0f13d4ee050c52c87365e0216b4096186fc604fb563fa59f1263ee91d5695e407fdffe82ca1558f7876a93f3a218dd9ba6901fdea93d6be498f0b0e1874331115e31aa6fad4d87227362a9ec3e1c1be11cdb2309697bbc0c692eeadfa9161669b8aec24564487dc74f8e7d17e6a133b5dbe576838697de73f856197203ef1a3a54f7edb0dbd60f9d5274db6b5c1477169b77f0d817ed731a20db4b9e5b83d2786bffefab084a31c4afda168156612f281da0be688e5bdb1f3176ed78bc62343a7665abad6573482449e68b3acfe820993d77df5785384d51aaa0612dab5ddbf2a9bf550736ad422933878861011961023ffd608f61022d61021661036e635af7465b73ffffffffffffffffffffffffffffffffffffffff63792c6916f16ed70693587df6ccfae5218d01559bac60156102006101adfd # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.RETURNDATACOPY(dest_offset=0x101, offset=0x19F, size=0x13) - + Op.PUSH16[0x338DB2B1165B4918F178852663192A95] - + Op.PUSH14[0x79A68B50EEFDC639CA0B62AB4D52] - + Op.PUSH24[0x1DB054CCC801C0666B34B3C6242BBFC5E98F20C14FB95E01] - + Op.PUSH8[0x18BE9AD033D50E21] - + Op.PUSH8[0x5FF59297861847EA] - + Op.PUSH11[0x911A6A9D135E2F826DC603] - + Op.PUSH30[ - 0x850E0DB21D105B8732A34B873C7D943050B8659794F0BD3E841D35A2231E - ] - + Op.PUSH6[0xF697F8CDE117] - + Op.PUSH8[0x28FA2051E87933CF] - + Op.PUSH7[0x858E4E5E91BAA7] - + Op.PUSH23[0x4FC1E9FFE4C7B15BA600E88F095989DC68F47ED704BE2B] - + Op.SWAP10 - + Op.CREATE(value=0x200FBD63, offset=0x215, size=0x17) - + Op.RETURNDATACOPY( - dest_offset=0x99C91C, - offset=0x93AFAA8CE1769C96CD0751AA76A98C8196FA8C92E70D7BDA17, - size=0x41C7F86732F4D5419B41E6887CCA98E0943F141A5C66DF98BD0C6D6C4CEC65, # noqa: E501 - ) - + Op.PUSH27[0x7F05DE3181109B8194387746F9EC15A6E0233F759E43360BD4E0A0] - + Op.MSTORE(offset=0x161, value=0x4E9F395117AFCD072774CE12D13DC7) - + Op.ADDRESS - + Op.GASPRICE - + Op.PUSH9[0x3305858002A92140B6] - + Op.PUSH25[0x508E3A3BE377D4825DBF618A393C7C061E75A8A496A33AFE0F] - + Op.PUSH19[0x17F2E33549E321838B083D48893F23DCED459] - + Op.PUSH31[ - 0x2E9EA08FE3F80970D6334B6C6F1FDE8BCC81D03A7CCC244231CB6606DBA6D0 - ] - + Op.PUSH15[0xC1C5158EF0DB6994192ACBD4CAC6AB] - + Op.PUSH11[0xC8449D80FC2C32471946E0] - + Op.PUSH18[0xD9606BD390266D7F712766F4765076283AD6] - + Op.PUSH9[0x7450D7AB4DF6F3F6EE] - + Op.SWAP7 - + Op.MSTORE8(offset=0xB802EC9D7ED96DC0B9CE7BD14B193DC1F0, value=0x14A) - + Op.PUSH23[0xD11CE19283C7F651D4D2E7C180715FF7FCBC995EA8B276] - + Op.PUSH3[0x13CC51] - + Op.PUSH30[ - 0x6DAD16D17F29A93220CE0DDB0A65D3D474DBC39CBA5BCB3D4FCF9FEF1910 - ] - + Op.PUSH1[0x7D] - + Op.PUSH5[0xC04511DF27] - + Op.PUSH32[ - 0x522AB2475FBB2BA0720711A903DBECFA0429BF11E6E90CBB0F13D4EE050C52C8 - ] - + Op.PUSH20[0x65E0216B4096186FC604FB563FA59F1263EE91D5] - + Op.PUSH10[0x5E407FDFFE82CA1558F7] - + Op.DUP8 - + Op.PUSH11[0x93F3A218DD9BA6901FDEA9] - + Op.RETURNDATASIZE - + Op.PUSH12[0xE498F0B0E1874331115E31AA] - + Op.PUSH16[0xAD4D87227362A9EC3E1C1BE11CDB2309] - + Op.PUSH10[0x7BBC0C692EEADFA91616] - + Op.PUSH10[0xB8AEC24564487DC74F8E] - + Op.PUSH30[ - 0x17E6A133B5DBE576838697DE73F856197203EF1A3A54F7EDB0DBD60F9D52 - ] - + Op.PUSH21[0xDB6B5C1477169B77F0D817ED731A20DB4B9E5B83D2] - + Op.PUSH25[0x6BFFEFAB084A31C4AFDA168156612F281DA0BE688E5BDB1F31] - + Op.PUSH23[0xED78BC62343A7665ABAD6573482449E68B3ACFE820993D] - + Op.PUSH24[0xDF5785384D51AAA0612DAB5DDBF2A9BF550736AD42293387] - + Op.DUP9 - + Op.REVERT(offset=0x23F, size=0x119) - + Op.CALL( - gas=0x792C6916, - address=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, - value=0x5AF7465B, - args_offset=0x36E, - args_size=0x216, - ret_offset=0x22D, - ret_size=0x8F, - ) - + Op.PUSH15[0xD70693587DF6CCFAE5218D01559BAC] - + Op.PUSH1[0x15] - + Op.REVERT(offset=0x1AD, size=0x200), - balance=0x5B1936A53E6E440F, - nonce=21, - address=Address(0xE7E620C9CF6045209EDCAD4D6EF43413BEDF0949), # noqa: E501 - ) - # Source: raw - # 0x610326610100f379c940b5f2046740058558468f238b85db7f6bbe3f3d51e92a3e3268b7f7c4147541c695f376705288410b81b217e80726fb9e4c5c7b4c49eca0c1b6b97e117c16c26c9816459f38396ffc36da48d65defdc7d055cbc846c07e81cfab0fb607c6cbc968774d4de7df8e3236f581e688cc2081a96b1cad9e0609b70f4fddda49ae97714e7d325ceab23acd5f46ba15b5210474116121921a04f68f3f933b9ad91b735bf71bfe41da706499c5d47b6de1fe398cb91fdf66481cbb8661d71d457cf3cef75dabf5ea496d7012f4c56b9fe70e6c4204720e3ce66874cead08499d57a547b97d37744ce205e051f296fb116fc9e5f3c280919aff3c93c5d5cefff9a6102d86103ca6364b68c8ef07d # noqa: E501 - coinbase = pre.deploy_contract( # noqa: F841 - code=bytes.fromhex( - "610326610100f379c940b5f2046740058558468f238b85db7f6bbe3f3d51e92a3e3268b7f7c4147541c695f376705288410b81b217e80726fb9e4c5c7b4c49eca0c1b6b97e117c16c26c9816459f38396ffc36da48d65defdc7d055cbc846c07e81cfab0fb607c6cbc968774d4de7df8e3236f581e688cc2081a96b1cad9e0609b70f4fddda49ae97714e7d325ceab23acd5f46ba15b5210474116121921a04f68f3f933b9ad91b735bf71bfe41da706499c5d47b6de1fe398cb91fdf66481cbb8661d71d457cf3cef75dabf5ea496d7012f4c56b9fe70e6c4204720e3ce66874cead08499d57a547b97d37744ce205e051f296fb116fc9e5f3c280919aff3c93c5d5cefff9a6102d86103ca6364b68c8ef07d" # noqa: E501 - ), - balance=0x54C814F188394C8, - nonce=29, - address=Address(0xF7B2E80637A148B5E46945E29388928DAFD5AA25), # noqa: E501 - ) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRevertTest/test_revert_in_static_call.py b/tests/ported_static/stRevertTest/test_revert_in_static_call.py index 1e4a9eeba00..929e0272517 100644 --- a/tests/ported_static/stRevertTest/test_revert_in_static_call.py +++ b/tests/ported_static/stRevertTest/test_revert_in_static_call.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_revert_in_static_call( ) -> None: """Test_revert_in_static_call.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xA2333EEF5630066B928DEA5FD85A239F511B5B067D1441EE7AC290D0122B917B - ) + sender = pre.fund_eoa(amount=0x5F5E100) env = Environment( fee_recipient=coinbase, @@ -46,6 +43,12 @@ def test_revert_in_static_call( gas_limit=1000000, ) + # Source: lll + # { (REVERT 0 0) } + addr = pre.deploy_contract( # noqa: F841 + code=Op.REVERT(offset=0x0, size=0x0) + Op.STOP, + nonce=0, + ) # Source: lll # { [[ 0 ]] (STATICCALL 50000 0 64 0 64 )} # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -53,7 +56,7 @@ def test_revert_in_static_call( key=0x0, value=Op.STATICCALL( gas=0xC350, - address=0x33FCF0576AB8B4527C9426094E2E355A7FFC7E71, + address=addr, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -63,16 +66,7 @@ def test_revert_in_static_call( + Op.STOP, balance=1000, nonce=0, - address=Address(0x30F7398D20AFE518491069C036185CAF69D5AAE9), # noqa: E501 - ) - # Source: lll - # { (REVERT 0 0) } - addr = pre.deploy_contract( # noqa: F841 - code=Op.REVERT(offset=0x0, size=0x0) + Op.STOP, - nonce=0, - address=Address(0x33FCF0576AB8B4527C9426094E2E355A7FFC7E71), # noqa: E501 ) - pre[sender] = Account(balance=0x5F5E100) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stRevertTest/test_revert_on_empty_stack.py b/tests/ported_static/stRevertTest/test_revert_on_empty_stack.py index 15e2b17b1d7..6809ead9e64 100644 --- a/tests/ported_static/stRevertTest/test_revert_on_empty_stack.py +++ b/tests/ported_static/stRevertTest/test_revert_on_empty_stack.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_revert_on_empty_stack( ) -> None: """Calling a runtime code that contains only a single `REVERT` should...""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x3327048BBC0B8C348A6352BE62994144E64B8FF2CEC68D9FF4CA4E911ECD5D22 - ) + sender = pre.fund_eoa(amount=0x5AF3107A4000) env = Environment( fee_recipient=coinbase, @@ -46,13 +43,11 @@ def test_revert_on_empty_stack( gas_limit=10000000, ) - pre[sender] = Account(balance=0x5AF3107A4000) # Source: raw # 0xfd target = pre.deploy_contract( # noqa: F841 code=Op.REVERT, nonce=0, - address=Address(0x3141BB954E8294E47A14EBD08229F30E6294BA83), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stRevertTest/test_revert_opcode.py b/tests/ported_static/stRevertTest/test_revert_opcode.py index 58f0e64e247..e76a7ee25f2 100644 --- a/tests/ported_static/stRevertTest/test_revert_opcode.py +++ b/tests/ported_static/stRevertTest/test_revert_opcode.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -70,9 +69,7 @@ def test_revert_opcode( ) -> None: """Test_revert_opcode.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x4F31B3206FBF0E0E598B9B1A7D8AC86302A0FF1D8930738F1BEBAE9B67173E52 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -83,7 +80,6 @@ def test_revert_opcode( gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) # Source: raw # 0x600160005560016000fd6011600155 target = pre.deploy_contract( # noqa: F841 @@ -91,7 +87,6 @@ def test_revert_opcode( + Op.REVERT(offset=0x0, size=0x1) + Op.SSTORE(key=0x1, value=0x11), nonce=0, - address=Address(0xF5EAF70F313AB7C223DED96F5A804ABC49BF804A), # noqa: E501 ) expect_entries_: list[dict] = [ diff --git a/tests/ported_static/stRevertTest/test_revert_opcode_in_calls_on_non_empty_return_data.py b/tests/ported_static/stRevertTest/test_revert_opcode_in_calls_on_non_empty_return_data.py index 2d520c359c8..83e34b96b21 100644 --- a/tests/ported_static/stRevertTest/test_revert_opcode_in_calls_on_non_empty_return_data.py +++ b/tests/ported_static/stRevertTest/test_revert_opcode_in_calls_on_non_empty_return_data.py @@ -111,8 +111,29 @@ def test_revert_opcode_in_calls_on_non_empty_return_data( pre[sender] = Account(balance=0xE8D4A51000) # Source: lll - # { (CALL 0 0 0 0 0 0) [[10]] (CALL 260000 (CALLDATALOAD 0) 0 0 0 0 0)} # noqa: E501 - target = pre.deploy_contract( # noqa: F841 + # { [[1]] 12 (REVERT 0 1) [[3]] 13 } + addr_6 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x1, value=0xC) + + Op.REVERT(offset=0x0, size=0x1) + + Op.SSTORE(key=0x3, value=0xD) + + Op.STOP, + balance=1, + nonce=0, + address=Address(0x93A599BDE9A3B6390AFDB06952AA5EC0B8C44F3B), # noqa: E501 + ) + # Source: lll + # { [1] 12 (RETURN 0 64) } + addr_7 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x1, value=0xC) + + Op.RETURN(offset=0x0, size=0x40) + + Op.STOP, + balance=1, + nonce=0, + address=Address(0x127EAF7E31D691A8393B7A2F84A6E94372190C01), # noqa: E501 + ) + # Source: lll + # { (CALL 0 0 0 0 0 0) [[0]] (DELEGATECALL 50000 0 0 0 0) [[2]] (RETURNDATASIZE) } # noqa: E501 + addr_3 = pre.deploy_contract( # noqa: F841 code=Op.POP( Op.CALL( gas=0x0, @@ -125,26 +146,25 @@ def test_revert_opcode_in_calls_on_non_empty_return_data( ) ) + Op.SSTORE( - key=0xA, - value=Op.CALL( - gas=0x3F7A0, - address=Op.CALLDATALOAD(offset=0x0), - value=0x0, + key=0x0, + value=Op.DELEGATECALL( + gas=0xC350, + address=0x93A599BDE9A3B6390AFDB06952AA5EC0B8C44F3B, args_offset=0x0, args_size=0x0, ret_offset=0x0, ret_size=0x0, ), ) + + Op.SSTORE(key=0x2, value=Op.RETURNDATASIZE) + Op.STOP, - storage={10: 255}, balance=1, nonce=0, - address=Address(0x172A8F572404293AA810685DFDC6F740C300CC4B), # noqa: E501 + address=Address(0xF20CCAF271BEAA36E7CF4C9CED2867FAC9558F14), # noqa: E501 ) # Source: lll - # { (CALL 0 0 0 0 0 0) [[0]] (CALL 50000 0 0 0 0 0) [[2]] (RETURNDATASIZE) } # noqa: E501 - addr = pre.deploy_contract( # noqa: F841 + # { (CALL 0 0 0 0 0 0) [[0]] (CALLCODE 50000 0 0 0 0 0) [[2]] (RETURNDATASIZE) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 code=Op.POP( Op.CALL( gas=0x0, @@ -158,7 +178,7 @@ def test_revert_opcode_in_calls_on_non_empty_return_data( ) + Op.SSTORE( key=0x0, - value=Op.CALL( + value=Op.CALLCODE( gas=0xC350, address=0x93A599BDE9A3B6390AFDB06952AA5EC0B8C44F3B, value=0x0, @@ -172,11 +192,11 @@ def test_revert_opcode_in_calls_on_non_empty_return_data( + Op.STOP, balance=1, nonce=0, - address=Address(0xE73611B5B479B30C93AC377AEB3BFB199764F3C3), # noqa: E501 + address=Address(0xC9DA6CD8413F64323F12CD44C99671F280F15E1C), # noqa: E501 ) # Source: lll - # { (CALL 0 0 0 0 0 0) [[0]] (CALLCODE 50000 0 0 0 0 0) [[2]] (RETURNDATASIZE) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 + # { (CALL 0 0 0 0 0 0) [[4]] (CALL 50000 0 0 0 0 0) [[5]] (RETURNDATASIZE) } # noqa: E501 + addr_5 = pre.deploy_contract( # noqa: F841 code=Op.POP( Op.CALL( gas=0x0, @@ -189,8 +209,8 @@ def test_revert_opcode_in_calls_on_non_empty_return_data( ) ) + Op.SSTORE( - key=0x0, - value=Op.CALLCODE( + key=0x4, + value=Op.CALL( gas=0xC350, address=0x93A599BDE9A3B6390AFDB06952AA5EC0B8C44F3B, value=0x0, @@ -200,15 +220,15 @@ def test_revert_opcode_in_calls_on_non_empty_return_data( ret_size=0x0, ), ) - + Op.SSTORE(key=0x2, value=Op.RETURNDATASIZE) + + Op.SSTORE(key=0x5, value=Op.RETURNDATASIZE) + Op.STOP, balance=1, nonce=0, - address=Address(0xC9DA6CD8413F64323F12CD44C99671F280F15E1C), # noqa: E501 + address=Address(0xEA519C47889074E6378B0D83747F2C3EA0B9CBC9), # noqa: E501 ) # Source: lll - # { (CALL 0 0 0 0 0 0) [[0]] (DELEGATECALL 50000 0 0 0 0) [[2]] (RETURNDATASIZE) } # noqa: E501 - addr_3 = pre.deploy_contract( # noqa: F841 + # { (CALL 0 0 0 0 0 0) [[0]] (CALL 50000 0 0 0 0 0) [[2]] (RETURNDATASIZE) } # noqa: E501 + addr = pre.deploy_contract( # noqa: F841 code=Op.POP( Op.CALL( gas=0x0, @@ -222,9 +242,10 @@ def test_revert_opcode_in_calls_on_non_empty_return_data( ) + Op.SSTORE( key=0x0, - value=Op.DELEGATECALL( + value=Op.CALL( gas=0xC350, address=0x93A599BDE9A3B6390AFDB06952AA5EC0B8C44F3B, + value=0x0, args_offset=0x0, args_size=0x0, ret_offset=0x0, @@ -235,11 +256,11 @@ def test_revert_opcode_in_calls_on_non_empty_return_data( + Op.STOP, balance=1, nonce=0, - address=Address(0xF20CCAF271BEAA36E7CF4C9CED2867FAC9558F14), # noqa: E501 + address=Address(0xE73611B5B479B30C93AC377AEB3BFB199764F3C3), # noqa: E501 ) # Source: lll - # { (CALL 0 0 0 0 0 0) [[0]] (CALL 100000 0 0 0 0 0) [[2]] (RETURNDATASIZE) } # noqa: E501 - addr_4 = pre.deploy_contract( # noqa: F841 + # { (CALL 0 0 0 0 0 0) [[10]] (CALL 260000 (CALLDATALOAD 0) 0 0 0 0 0)} # noqa: E501 + target = pre.deploy_contract( # noqa: F841 code=Op.POP( Op.CALL( gas=0x0, @@ -252,10 +273,10 @@ def test_revert_opcode_in_calls_on_non_empty_return_data( ) ) + Op.SSTORE( - key=0x0, + key=0xA, value=Op.CALL( - gas=0x186A0, - address=0xEA519C47889074E6378B0D83747F2C3EA0B9CBC9, + gas=0x3F7A0, + address=Op.CALLDATALOAD(offset=0x0), value=0x0, args_offset=0x0, args_size=0x0, @@ -263,15 +284,15 @@ def test_revert_opcode_in_calls_on_non_empty_return_data( ret_size=0x0, ), ) - + Op.SSTORE(key=0x2, value=Op.RETURNDATASIZE) + Op.STOP, + storage={10: 255}, balance=1, nonce=0, - address=Address(0x6BACDFA8216DBB2A09819F8739E57AE3574C9FFF), # noqa: E501 + address=Address(0x172A8F572404293AA810685DFDC6F740C300CC4B), # noqa: E501 ) # Source: lll - # { (CALL 0 0 0 0 0 0) [[4]] (CALL 50000 0 0 0 0 0) [[5]] (RETURNDATASIZE) } # noqa: E501 - addr_5 = pre.deploy_contract( # noqa: F841 + # { (CALL 0 0 0 0 0 0) [[0]] (CALL 100000 0 0 0 0 0) [[2]] (RETURNDATASIZE) } # noqa: E501 + addr_4 = pre.deploy_contract( # noqa: F841 code=Op.POP( Op.CALL( gas=0x0, @@ -284,10 +305,10 @@ def test_revert_opcode_in_calls_on_non_empty_return_data( ) ) + Op.SSTORE( - key=0x4, + key=0x0, value=Op.CALL( - gas=0xC350, - address=0x93A599BDE9A3B6390AFDB06952AA5EC0B8C44F3B, + gas=0x186A0, + address=0xEA519C47889074E6378B0D83747F2C3EA0B9CBC9, value=0x0, args_offset=0x0, args_size=0x0, @@ -295,32 +316,11 @@ def test_revert_opcode_in_calls_on_non_empty_return_data( ret_size=0x0, ), ) - + Op.SSTORE(key=0x5, value=Op.RETURNDATASIZE) - + Op.STOP, - balance=1, - nonce=0, - address=Address(0xEA519C47889074E6378B0D83747F2C3EA0B9CBC9), # noqa: E501 - ) - # Source: lll - # { [[1]] 12 (REVERT 0 1) [[3]] 13 } - addr_6 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x1, value=0xC) - + Op.REVERT(offset=0x0, size=0x1) - + Op.SSTORE(key=0x3, value=0xD) - + Op.STOP, - balance=1, - nonce=0, - address=Address(0x93A599BDE9A3B6390AFDB06952AA5EC0B8C44F3B), # noqa: E501 - ) - # Source: lll - # { [1] 12 (RETURN 0 64) } - addr_7 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x1, value=0xC) - + Op.RETURN(offset=0x0, size=0x40) + + Op.SSTORE(key=0x2, value=Op.RETURNDATASIZE) + Op.STOP, balance=1, nonce=0, - address=Address(0x127EAF7E31D691A8393B7A2F84A6E94372190C01), # noqa: E501 + address=Address(0x6BACDFA8216DBB2A09819F8739E57AE3574C9FFF), # noqa: E501 ) expect_entries_: list[dict] = [ diff --git a/tests/ported_static/stRevertTest/test_revert_opcode_in_init.py b/tests/ported_static/stRevertTest/test_revert_opcode_in_init.py index d6997f18cdb..c5c7e8af07d 100644 --- a/tests/ported_static/stRevertTest/test_revert_opcode_in_init.py +++ b/tests/ported_static/stRevertTest/test_revert_opcode_in_init.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -44,7 +43,6 @@ ), ], ) -@pytest.mark.pre_alloc_mutable def test_revert_opcode_in_init( state_test: StateTestFiller, pre: Alloc, @@ -55,9 +53,7 @@ def test_revert_opcode_in_init( ) -> None: """TODO revertOpcodeInInit followed by OOG.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -68,8 +64,6 @@ def test_revert_opcode_in_init( gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) - tx_data = [ Op.SSTORE(key=0x0, value=0x1) + Op.REVERT(offset=0x0, size=0x1) diff --git a/tests/ported_static/stRevertTest/test_revert_opcode_with_big_output_in_init.py b/tests/ported_static/stRevertTest/test_revert_opcode_with_big_output_in_init.py index 96e57fe4b56..a50d18f316a 100644 --- a/tests/ported_static/stRevertTest/test_revert_opcode_with_big_output_in_init.py +++ b/tests/ported_static/stRevertTest/test_revert_opcode_with_big_output_in_init.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -44,7 +43,6 @@ ), ], ) -@pytest.mark.pre_alloc_mutable def test_revert_opcode_with_big_output_in_init( state_test: StateTestFiller, pre: Alloc, @@ -55,9 +53,7 @@ def test_revert_opcode_with_big_output_in_init( ) -> None: """A REVERT with a big output should not be confused with a big code...""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -68,8 +64,6 @@ def test_revert_opcode_with_big_output_in_init( gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) - tx_data = [ Op.SSTORE(key=0x0, value=0x1) + Op.REVERT(offset=0x0, size=0x1) diff --git a/tests/ported_static/stRevertTest/test_revert_precompiled_touch_nonce.py b/tests/ported_static/stRevertTest/test_revert_precompiled_touch_nonce.py index 0e607516f42..56cc3c019bf 100644 --- a/tests/ported_static/stRevertTest/test_revert_precompiled_touch_nonce.py +++ b/tests/ported_static/stRevertTest/test_revert_precompiled_touch_nonce.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -67,17 +66,15 @@ def test_revert_precompiled_touch_nonce( ) -> None: """Test_revert_precompiled_touch_nonce.""" coinbase = Address(0x68795C4AA09D6F4ED3E5DEDDF8C2AD3049A601DA) - addr_5 = Address(0xB478E245708BE95C33C6C35DEA161C0429D02DD2) - addr_6 = Address(0x6A22458E937F487E2DAFFA193B9C5FB610DC4789) - addr_7 = Address(0x8D1D883976DF004B96C383782A828DC5BC82EF9D) - addr_8 = Address(0x05A4FAF1EDE8E96AAE92AE51915074E42787F868) - addr_9 = Address(0xF8F0AEC70F4BBDADCE829783A0AFFF43F384C640) - addr_10 = Address(0x4BA6259BB96E9D7822A5FB3A1F8037BC68A08D43) - addr_11 = Address(0xBEB47E021A70649B079C4BDF150108C0D8C6ACCB) - addr_12 = Address(0xEB201D2887816E041F6E807E804F64F3A7A226FE) - sender = EOA( - key=0xFF8D58222F34F6890DDAA468C023B77D6691ED7D3C4DCDDAE38336212FAF54B - ) + addr_5 = Address(0x0000000000000000000000000000000000000001) + addr_6 = Address(0x0000000000000000000000000000000000000002) + addr_7 = Address(0x0000000000000000000000000000000000000003) + addr_8 = Address(0x0000000000000000000000000000000000000004) + addr_9 = Address(0x0000000000000000000000000000000000000005) + addr_10 = Address(0x0000000000000000000000000000000000000006) + addr_11 = Address(0x0000000000000000000000000000000000000007) + addr_12 = Address(0x0000000000000000000000000000000000000008) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000, nonce=1) env = Environment( fee_recipient=coinbase, @@ -88,6 +85,14 @@ def test_revert_precompiled_touch_nonce( gas_limit=4012015, ) + pre[addr_5] = Account(balance=0, nonce=1) + pre[addr_6] = Account(balance=0, nonce=1) + pre[addr_7] = Account(balance=0, nonce=1) + pre[addr_8] = Account(balance=0, nonce=1) + pre[addr_9] = Account(balance=0, nonce=1) + pre[addr_10] = Account(balance=0, nonce=1) + pre[addr_11] = Account(balance=0, nonce=1) + pre[addr_12] = Account(balance=0, nonce=1) # Source: lll # { (CALLCODE (GAS) (CALLDATALOAD 0) 0 0 0 0 0) } target = pre.deploy_contract( # noqa: F841 @@ -480,15 +485,6 @@ def test_revert_precompiled_touch_nonce( nonce=0, address=Address(0x10EF6D6218ADA53728683CEC4D5160C8C72159BD), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000, nonce=1) - pre[addr_5] = Account(balance=0, nonce=1) - pre[addr_6] = Account(balance=0, nonce=1) - pre[addr_7] = Account(balance=0, nonce=1) - pre[addr_8] = Account(balance=0, nonce=1) - pre[addr_9] = Account(balance=0, nonce=1) - pre[addr_10] = Account(balance=0, nonce=1) - pre[addr_11] = Account(balance=0, nonce=1) - pre[addr_12] = Account(balance=0, nonce=1) tx_data = [ Hash(addr, left_padding=True), diff --git a/tests/ported_static/stRevertTest/test_revert_precompiled_touch_noncestorage.py b/tests/ported_static/stRevertTest/test_revert_precompiled_touch_noncestorage.py index 0c42b17c3e1..749bb8a785d 100644 --- a/tests/ported_static/stRevertTest/test_revert_precompiled_touch_noncestorage.py +++ b/tests/ported_static/stRevertTest/test_revert_precompiled_touch_noncestorage.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -69,17 +68,15 @@ def test_revert_precompiled_touch_noncestorage( ) -> None: """Test_revert_precompiled_touch_noncestorage.""" coinbase = Address(0x68795C4AA09D6F4ED3E5DEDDF8C2AD3049A601DA) - addr_5 = Address(0xB0A7B7B80BC0F95F8890E6E2070DDC906BBFDBCD) - addr_6 = Address(0xE2041123687B446E6F4BA274BFED4CE0206D4C8E) - addr_7 = Address(0x0D6D2DA01A9DA2C336E2AFFE3E6A9D0787069B56) - addr_8 = Address(0x1E28DB5341D617CCE6178F0BBCCB352C51C5909D) - addr_9 = Address(0xAE321AB38D9488985A884ED293F2C1466D2C806B) - addr_10 = Address(0xF6165BB84BEB5028557005861FAA9B085C1381D9) - addr_11 = Address(0x9BCE9E56A0A95F42D0B6A7B550E26604D7C5299F) - addr_12 = Address(0x0E145EDEA519E730A2C24124733E22E8B8DE1202) - sender = EOA( - key=0xFF8D58222F34F6890DDAA468C023B77D6691ED7D3C4DCDDAE38336212FAF54B - ) + addr_5 = Address(0x0000000000000000000000000000000000000001) + addr_6 = Address(0x0000000000000000000000000000000000000002) + addr_7 = Address(0x0000000000000000000000000000000000000003) + addr_8 = Address(0x0000000000000000000000000000000000000004) + addr_9 = Address(0x0000000000000000000000000000000000000005) + addr_10 = Address(0x0000000000000000000000000000000000000006) + addr_11 = Address(0x0000000000000000000000000000000000000007) + addr_12 = Address(0x0000000000000000000000000000000000000008) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000, nonce=1) env = Environment( fee_recipient=coinbase, @@ -90,6 +87,14 @@ def test_revert_precompiled_touch_noncestorage( gas_limit=4012015, ) + pre[addr_5] = Account(balance=0, nonce=1, storage={0: addr_5}) + pre[addr_6] = Account(balance=0, nonce=1, storage={0: addr_5}) + pre[addr_7] = Account(balance=0, nonce=1, storage={0: addr_5}) + pre[addr_8] = Account(balance=0, nonce=1, storage={0: addr_5}) + pre[addr_9] = Account(balance=0, nonce=1, storage={0: addr_5}) + pre[addr_10] = Account(balance=0, nonce=1, storage={0: addr_5}) + pre[addr_11] = Account(balance=0, nonce=1, storage={0: addr_5}) + pre[addr_12] = Account(balance=0, nonce=1, storage={0: addr_5}) # Source: lll # { (CALLCODE (GAS) (CALLDATALOAD 0) 0 0 0 0 0) } target = pre.deploy_contract( # noqa: F841 @@ -482,15 +487,6 @@ def test_revert_precompiled_touch_noncestorage( nonce=0, address=Address(0x10EF6D6218ADA53728683CEC4D5160C8C72159BD), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000, nonce=1) - pre[addr_5] = Account(balance=0, nonce=1, storage={0: 1}) - pre[addr_6] = Account(balance=0, nonce=1, storage={0: 1}) - pre[addr_7] = Account(balance=0, nonce=1, storage={0: 1}) - pre[addr_8] = Account(balance=0, nonce=1, storage={0: 1}) - pre[addr_9] = Account(balance=0, nonce=1, storage={0: 1}) - pre[addr_10] = Account(balance=0, nonce=1, storage={0: 1}) - pre[addr_11] = Account(balance=0, nonce=1, storage={0: 1}) - pre[addr_12] = Account(balance=0, nonce=1, storage={0: 1}) tx_data = [ Hash(addr, left_padding=True), @@ -509,14 +505,14 @@ def test_revert_precompiled_touch_noncestorage( ) post = { - addr_5: Account(storage={0: 1}, nonce=1), - addr_6: Account(storage={0: 1}, nonce=1), - addr_7: Account(storage={0: 1}, nonce=1), - addr_8: Account(storage={0: 1}, nonce=1), - addr_9: Account(storage={0: 1}, nonce=1), - addr_10: Account(storage={0: 1}, nonce=1), - addr_11: Account(storage={0: 1}, nonce=1), - addr_12: Account(storage={0: 1}, nonce=1), + addr_5: Account(storage={0: addr_5}, nonce=1), + addr_6: Account(storage={0: addr_5}, nonce=1), + addr_7: Account(storage={0: addr_5}, nonce=1), + addr_8: Account(storage={0: addr_5}, nonce=1), + addr_9: Account(storage={0: addr_5}, nonce=1), + addr_10: Account(storage={0: addr_5}, nonce=1), + addr_11: Account(storage={0: addr_5}, nonce=1), + addr_12: Account(storage={0: addr_5}, nonce=1), } state_test(env=env, pre=pre, post=post, tx=tx) diff --git a/tests/ported_static/stRevertTest/test_revert_precompiled_touch_paris.py b/tests/ported_static/stRevertTest/test_revert_precompiled_touch_paris.py index 2e938522306..5e3ebc1ede5 100644 --- a/tests/ported_static/stRevertTest/test_revert_precompiled_touch_paris.py +++ b/tests/ported_static/stRevertTest/test_revert_precompiled_touch_paris.py @@ -70,14 +70,14 @@ def test_revert_precompiled_touch_paris( ) -> None: """Test_revert_precompiled_touch_paris.""" coinbase = Address(0x68795C4AA09D6F4ED3E5DEDDF8C2AD3049A601DA) - addr_5 = Address(0x6EB9AFCB5D985B12549B7AC2E65C093F7113A0C7) - addr_6 = Address(0xF07A794E0F8AAB4242B86368503D3C1DE15481F8) - addr_7 = Address(0x9E6C35DECED6E05EB21D3465B5BBBB57B9CD57D6) - addr_8 = Address(0x1688023D9AE9E25EA02A2447A77B9CC9D22CE57B) - addr_9 = Address(0xD085AB47BC36D1238FC092679B21B10792746640) - addr_10 = Address(0xAD3DF2901B7C6642E397C35E0E9F3DEA5D098238) - addr_11 = Address(0xBE44B82021B08CFECC33A2E57FF5ADCB7FE3B049) - addr_12 = Address(0x85FDDE91FD0CE22A2968E1F1B2EBB9F9E5A180BA) + addr_5 = Address(0x0000000000000000000000000000000000000001) + addr_6 = Address(0x0000000000000000000000000000000000000002) + addr_7 = Address(0x0000000000000000000000000000000000000003) + addr_8 = Address(0x0000000000000000000000000000000000000004) + addr_9 = Address(0x0000000000000000000000000000000000000005) + addr_10 = Address(0x0000000000000000000000000000000000000006) + addr_11 = Address(0x0000000000000000000000000000000000000007) + addr_12 = Address(0x0000000000000000000000000000000000000008) sender = EOA( key=0xFF8D58222F34F6890DDAA468C023B77D6691ED7D3C4DCDDAE38336212FAF54B ) @@ -91,6 +91,15 @@ def test_revert_precompiled_touch_paris( gas_limit=4012015, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000, nonce=1) + pre[addr_5] = Account(balance=1) + pre[addr_6] = Account(balance=1) + pre[addr_7] = Account(balance=1) + pre[addr_8] = Account(balance=1) + pre[addr_9] = Account(balance=1) + pre[addr_10] = Account(balance=1) + pre[addr_11] = Account(balance=1) + pre[addr_12] = Account(balance=1) # Source: lll # { (CALLCODE (GAS) (CALLDATALOAD 0) 0 0 0 0 0) } target = pre.deploy_contract( # noqa: F841 @@ -483,15 +492,6 @@ def test_revert_precompiled_touch_paris( nonce=0, address=Address(0x10EF6D6218ADA53728683CEC4D5160C8C72159BD), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000, nonce=1) - pre[addr_5] = Account(balance=1) - pre[addr_6] = Account(balance=1) - pre[addr_7] = Account(balance=1) - pre[addr_8] = Account(balance=1) - pre[addr_9] = Account(balance=1) - pre[addr_10] = Account(balance=1) - pre[addr_11] = Account(balance=1) - pre[addr_12] = Account(balance=1) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stRevertTest/test_revert_precompiled_touch_storage_paris.py b/tests/ported_static/stRevertTest/test_revert_precompiled_touch_storage_paris.py index cd8295af53c..25d6fe6394e 100644 --- a/tests/ported_static/stRevertTest/test_revert_precompiled_touch_storage_paris.py +++ b/tests/ported_static/stRevertTest/test_revert_precompiled_touch_storage_paris.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -72,17 +71,15 @@ def test_revert_precompiled_touch_storage_paris( ) -> None: """Test_revert_precompiled_touch_storage_paris.""" coinbase = Address(0x68795C4AA09D6F4ED3E5DEDDF8C2AD3049A601DA) - addr_5 = Address(0x9DEB46A3B3E955BD56ECC4072DA4B42BD9B5DB2C) - addr_6 = Address(0xA8FD4CB9C2C538ED7FF94C3B711B2E08A08C7FB8) - addr_7 = Address(0x6D15138CE372D9B89EE38FC3973B715477426F11) - addr_8 = Address(0x46AC2E7E1550D911E5A72FBC51C15CA817DBB1D5) - addr_9 = Address(0x0DC4B229346287FE9FA441960081A9886B71C42D) - addr_10 = Address(0x3A3EEE808C401A574F92824DC64D89EDB05FAFE4) - addr_11 = Address(0xDA7F8ADD6896B7E58F28331A97B315DDE5FB8CD1) - addr_12 = Address(0x4757608F18B70777AE788DD4056EEED52F7AA68F) - sender = EOA( - key=0xFF8D58222F34F6890DDAA468C023B77D6691ED7D3C4DCDDAE38336212FAF54B - ) + addr_5 = Address(0x0000000000000000000000000000000000000001) + addr_6 = Address(0x0000000000000000000000000000000000000002) + addr_7 = Address(0x0000000000000000000000000000000000000003) + addr_8 = Address(0x0000000000000000000000000000000000000004) + addr_9 = Address(0x0000000000000000000000000000000000000005) + addr_10 = Address(0x0000000000000000000000000000000000000006) + addr_11 = Address(0x0000000000000000000000000000000000000007) + addr_12 = Address(0x0000000000000000000000000000000000000008) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000, nonce=1) env = Environment( fee_recipient=coinbase, @@ -93,6 +90,14 @@ def test_revert_precompiled_touch_storage_paris( gas_limit=4012015, ) + pre[addr_5] = Account(balance=10, storage={0: addr_5}) + pre[addr_6] = Account(balance=10, storage={0: addr_5}) + pre[addr_7] = Account(balance=10, storage={0: addr_5}) + pre[addr_8] = Account(balance=10, storage={0: addr_5}) + pre[addr_9] = Account(balance=10, storage={0: addr_5}) + pre[addr_10] = Account(balance=10, storage={0: addr_5}) + pre[addr_11] = Account(balance=10, storage={0: addr_5}) + pre[addr_12] = Account(balance=10, storage={0: addr_5}) # Source: lll # { (CALLCODE (GAS) (CALLDATALOAD 0) 0 0 0 0 0) } target = pre.deploy_contract( # noqa: F841 @@ -485,43 +490,34 @@ def test_revert_precompiled_touch_storage_paris( nonce=0, address=Address(0x10EF6D6218ADA53728683CEC4D5160C8C72159BD), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000, nonce=1) - pre[addr_5] = Account(balance=10, storage={0: 1}) - pre[addr_6] = Account(balance=10, storage={0: 1}) - pre[addr_7] = Account(balance=10, storage={0: 1}) - pre[addr_8] = Account(balance=10, storage={0: 1}) - pre[addr_9] = Account(balance=10, storage={0: 1}) - pre[addr_10] = Account(balance=10, storage={0: 1}) - pre[addr_11] = Account(balance=10, storage={0: 1}) - pre[addr_12] = Account(balance=10, storage={0: 1}) expect_entries_: list[dict] = [ { "indexes": {"data": [0, 3], "gas": -1, "value": -1}, "network": [">=Cancun"], "result": { - addr_5: Account(storage={0: 1}), - addr_6: Account(storage={0: 1}), + addr_5: Account(storage={0: addr_5}), + addr_6: Account(storage={0: addr_5}), addr_7: Account(balance=10), - addr_8: Account(storage={0: 1}), - addr_9: Account(storage={0: 1}), - addr_10: Account(storage={0: 1}), - addr_11: Account(storage={0: 1}), - addr_12: Account(storage={0: 1}), + addr_8: Account(storage={0: addr_5}), + addr_9: Account(storage={0: addr_5}), + addr_10: Account(storage={0: addr_5}), + addr_11: Account(storage={0: addr_5}), + addr_12: Account(storage={0: addr_5}), }, }, { "indexes": {"data": [1, 2], "gas": -1, "value": -1}, "network": [">=Cancun"], "result": { - addr_5: Account(storage={0: 1}), - addr_6: Account(storage={0: 1}), - addr_7: Account(storage={0: 1}), - addr_8: Account(storage={0: 1}), - addr_9: Account(storage={0: 1}), - addr_10: Account(storage={0: 1}), - addr_11: Account(storage={0: 1}), - addr_12: Account(storage={0: 1}), + addr_5: Account(storage={0: addr_5}), + addr_6: Account(storage={0: addr_5}), + addr_7: Account(storage={0: addr_5}), + addr_8: Account(storage={0: addr_5}), + addr_9: Account(storage={0: addr_5}), + addr_10: Account(storage={0: addr_5}), + addr_11: Account(storage={0: addr_5}), + addr_12: Account(storage={0: addr_5}), }, }, ] diff --git a/tests/ported_static/stRevertTest/test_revert_prefound_call.py b/tests/ported_static/stRevertTest/test_revert_prefound_call.py index 6edd7015083..6a0f2e314e3 100644 --- a/tests/ported_static/stRevertTest/test_revert_prefound_call.py +++ b/tests/ported_static/stRevertTest/test_revert_prefound_call.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,10 +32,7 @@ def test_revert_prefound_call( ) -> None: """Test_revert_prefound_call.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - addr = Address(0x85FDDE91FD0CE22A2968E1F1B2EBB9F9E5A180BA) - sender = EOA( - key=0x4F31B3206FBF0E0E598B9B1A7D8AC86302A0FF1D8930738F1BEBAE9B67173E52 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -47,8 +43,7 @@ def test_revert_prefound_call( gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) - pre[addr] = Account(balance=1) + addr = pre.fund_eoa(amount=1) # noqa: F841 # Source: lll # { [[0]] (CALL 50000 0 0 32 0 32) [[1]]12 } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -56,7 +51,7 @@ def test_revert_prefound_call( key=0x0, value=Op.CALL( gas=0xC350, - address=0x85FDDE91FD0CE22A2968E1F1B2EBB9F9E5A180BA, + address=addr, value=0x0, args_offset=0x0, args_size=0x20, @@ -68,7 +63,6 @@ def test_revert_prefound_call( + Op.STOP, balance=1, nonce=0, - address=Address(0x10E193907AA28773CC8F835C3B27BB02D064CE8C), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stRevertTest/test_revert_prefound_call_oog.py b/tests/ported_static/stRevertTest/test_revert_prefound_call_oog.py index 43f6cb9ff10..dfceed27321 100644 --- a/tests/ported_static/stRevertTest/test_revert_prefound_call_oog.py +++ b/tests/ported_static/stRevertTest/test_revert_prefound_call_oog.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,10 +32,7 @@ def test_revert_prefound_call_oog( ) -> None: """Test_revert_prefound_call_oog.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - addr = Address(0x85FDDE91FD0CE22A2968E1F1B2EBB9F9E5A180BA) - sender = EOA( - key=0x4F31B3206FBF0E0E598B9B1A7D8AC86302A0FF1D8930738F1BEBAE9B67173E52 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -47,8 +43,7 @@ def test_revert_prefound_call_oog( gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) - pre[addr] = Account(balance=1) + addr = pre.fund_eoa(amount=1) # noqa: F841 # Source: lll # { [[0]] (CALL 50000 0 0 32 0 32) [[1]]12 [[2]]12 } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -56,7 +51,7 @@ def test_revert_prefound_call_oog( key=0x0, value=Op.CALL( gas=0xC350, - address=0x85FDDE91FD0CE22A2968E1F1B2EBB9F9E5A180BA, + address=addr, value=0x0, args_offset=0x0, args_size=0x20, @@ -69,7 +64,6 @@ def test_revert_prefound_call_oog( + Op.STOP, balance=1, nonce=0, - address=Address(0xF679BFE5F61E7640B9A66DB191D5D86ABC7B5C0A), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stRevertTest/test_revert_prefound_empty_call_oog_paris.py b/tests/ported_static/stRevertTest/test_revert_prefound_empty_call_oog_paris.py index 9b1d30c4405..53b3b0a41b2 100644 --- a/tests/ported_static/stRevertTest/test_revert_prefound_empty_call_oog_paris.py +++ b/tests/ported_static/stRevertTest/test_revert_prefound_empty_call_oog_paris.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,10 +32,7 @@ def test_revert_prefound_empty_call_oog_paris( ) -> None: """Test_revert_prefound_empty_call_oog_paris.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - addr = Address(0x76FAE819612A29489A1A43208613D8F8557B8898) - sender = EOA( - key=0x4F31B3206FBF0E0E598B9B1A7D8AC86302A0FF1D8930738F1BEBAE9B67173E52 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -47,8 +43,7 @@ def test_revert_prefound_empty_call_oog_paris( gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) - pre[addr] = Account(balance=10) + addr = pre.fund_eoa(amount=10) # noqa: F841 # Source: lll # { [[0]] (CALL 50000 0 0 32 0 32) [[1]]12 [[2]]12 } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -56,7 +51,7 @@ def test_revert_prefound_empty_call_oog_paris( key=0x0, value=Op.CALL( gas=0xC350, - address=0x76FAE819612A29489A1A43208613D8F8557B8898, + address=addr, value=0x0, args_offset=0x0, args_size=0x20, @@ -69,7 +64,6 @@ def test_revert_prefound_empty_call_oog_paris( + Op.STOP, balance=1, nonce=0, - address=Address(0xF679BFE5F61E7640B9A66DB191D5D86ABC7B5C0A), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stRevertTest/test_revert_prefound_empty_call_paris.py b/tests/ported_static/stRevertTest/test_revert_prefound_empty_call_paris.py index 1d991f29514..83e7110f8cf 100644 --- a/tests/ported_static/stRevertTest/test_revert_prefound_empty_call_paris.py +++ b/tests/ported_static/stRevertTest/test_revert_prefound_empty_call_paris.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,10 +32,7 @@ def test_revert_prefound_empty_call_paris( ) -> None: """Test_revert_prefound_empty_call_paris.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - addr = Address(0x76FAE819612A29489A1A43208613D8F8557B8898) - sender = EOA( - key=0x4F31B3206FBF0E0E598B9B1A7D8AC86302A0FF1D8930738F1BEBAE9B67173E52 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -47,8 +43,7 @@ def test_revert_prefound_empty_call_paris( gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) - pre[addr] = Account(balance=10) + addr = pre.fund_eoa(amount=10) # noqa: F841 # Source: lll # { [[0]] (CALL 50000 0 0 32 0 32) [[1]]12 } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -56,7 +51,7 @@ def test_revert_prefound_empty_call_paris( key=0x0, value=Op.CALL( gas=0xC350, - address=0x76FAE819612A29489A1A43208613D8F8557B8898, + address=addr, value=0x0, args_offset=0x0, args_size=0x20, @@ -68,7 +63,6 @@ def test_revert_prefound_empty_call_paris( + Op.STOP, balance=1, nonce=0, - address=Address(0x10E193907AA28773CC8F835C3B27BB02D064CE8C), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stRevertTest/test_revert_prefound_empty_oog_paris.py b/tests/ported_static/stRevertTest/test_revert_prefound_empty_oog_paris.py index a60de2e277b..230847cde3b 100644 --- a/tests/ported_static/stRevertTest/test_revert_prefound_empty_oog_paris.py +++ b/tests/ported_static/stRevertTest/test_revert_prefound_empty_oog_paris.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,10 +32,7 @@ def test_revert_prefound_empty_oog_paris( ) -> None: """Test_revert_prefound_empty_oog_paris.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - addr = Address(0x76FAE819612A29489A1A43208613D8F8557B8898) - sender = EOA( - key=0x4F31B3206FBF0E0E598B9B1A7D8AC86302A0FF1D8930738F1BEBAE9B67173E52 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -47,8 +43,7 @@ def test_revert_prefound_empty_oog_paris( gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) - pre[addr] = Account(balance=10) + addr = pre.fund_eoa(amount=10) # noqa: F841 # Source: lll # { [[0]] (CREATE 0 0 32) (KECCAK256 0x00 0x2fffff) } target = pre.deploy_contract( # noqa: F841 @@ -59,7 +54,6 @@ def test_revert_prefound_empty_oog_paris( + Op.STOP, balance=1, nonce=0, - address=Address(0x35B3F8CA79C46F2CBC3DB596A2162ADE570B0ADD), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stRevertTest/test_revert_prefound_oog.py b/tests/ported_static/stRevertTest/test_revert_prefound_oog.py index 4b1599d2595..7f1e1984a35 100644 --- a/tests/ported_static/stRevertTest/test_revert_prefound_oog.py +++ b/tests/ported_static/stRevertTest/test_revert_prefound_oog.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,10 +32,7 @@ def test_revert_prefound_oog( ) -> None: """Test_revert_prefound_oog.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - addr = Address(0x85FDDE91FD0CE22A2968E1F1B2EBB9F9E5A180BA) - sender = EOA( - key=0x4F31B3206FBF0E0E598B9B1A7D8AC86302A0FF1D8930738F1BEBAE9B67173E52 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -47,8 +43,7 @@ def test_revert_prefound_oog( gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) - pre[addr] = Account(balance=1) + addr = pre.fund_eoa(amount=1) # noqa: F841 # Source: lll # { [[0]] (CREATE 0 0 32) (KECCAK256 0x00 0x2fffff) } target = pre.deploy_contract( # noqa: F841 @@ -59,7 +54,6 @@ def test_revert_prefound_oog( + Op.STOP, balance=1, nonce=0, - address=Address(0x35B3F8CA79C46F2CBC3DB596A2162ADE570B0ADD), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stRevertTest/test_state_revert.py b/tests/ported_static/stRevertTest/test_state_revert.py index 3b215dcea25..85f9817b996 100644 --- a/tests/ported_static/stRevertTest/test_state_revert.py +++ b/tests/ported_static/stRevertTest/test_state_revert.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -86,9 +85,7 @@ def test_state_revert( ) -> None: """Ori Pomerantz qbzzt1@gmail.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xA62D63F95900B04CCD3FEE13360DE78966F24695945E8B2C09E646352BC5AF94 - ) + sender = pre.fund_eoa(amount=0x100000000000) env = Environment( fee_recipient=coinbase, @@ -274,7 +271,6 @@ def test_state_revert( nonce=0, address=Address(0x3559AFE49654B532B7E67E6ACD87DEB8C569E7AD), # noqa: E501 ) - pre[sender] = Account(balance=0x100000000000) tx_data = [ Bytes("693c6139") + Hash(0x0), diff --git a/tests/ported_static/stRevertTest/test_touch_to_empty_account_revert2_paris.py b/tests/ported_static/stRevertTest/test_touch_to_empty_account_revert2_paris.py index a47979fd9d7..29bd0114ae8 100644 --- a/tests/ported_static/stRevertTest/test_touch_to_empty_account_revert2_paris.py +++ b/tests/ported_static/stRevertTest/test_touch_to_empty_account_revert2_paris.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,10 +32,7 @@ def test_touch_to_empty_account_revert2_paris( ) -> None: """Test_touch_to_empty_account_revert2_paris.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - addr = Address(0x76FAE819612A29489A1A43208613D8F8557B8898) - sender = EOA( - key=0x4F31B3206FBF0E0E598B9B1A7D8AC86302A0FF1D8930738F1BEBAE9B67173E52 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -47,16 +43,15 @@ def test_touch_to_empty_account_revert2_paris( gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) - pre[addr] = Account(balance=10) + addr = pre.fund_eoa(amount=10) # noqa: F841 # Source: lll - # { [[0]](CALL 130000 0 0 0 0 0) [[1]](CALL 130000 0 0 0 0 0) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 + # { [[2]](CALL 130000 0 0 0 0 0) (KECCAK256 0x00 0x2fffff) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x0, + key=0x2, value=Op.CALL( gas=0x1FBD0, - address=0x76FAE819612A29489A1A43208613D8F8557B8898, + address=addr, value=0x0, args_offset=0x0, args_size=0x0, @@ -64,11 +59,18 @@ def test_touch_to_empty_account_revert2_paris( ret_size=0x0, ), ) - + Op.SSTORE( - key=0x1, + + Op.SHA3(offset=0x0, size=0x2FFFFF) + + Op.STOP, + nonce=0, + ) + # Source: lll + # { [[0]](CALL 130000 0 0 0 0 0) [[1]](CALL 130000 0 0 0 0 0) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, value=Op.CALL( gas=0x1FBD0, - address=0xFC4D79463BC948EB3FE54196270DE2B78C201506, + address=addr, value=0x0, args_offset=0x0, args_size=0x0, @@ -76,18 +78,11 @@ def test_touch_to_empty_account_revert2_paris( ret_size=0x0, ), ) - + Op.STOP, - nonce=0, - address=Address(0x0982DE98D43928669EC4ED9FEA05F2B852BBEC41), # noqa: E501 - ) - # Source: lll - # { [[2]](CALL 130000 0 0 0 0 0) (KECCAK256 0x00 0x2fffff) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x2, + + Op.SSTORE( + key=0x1, value=Op.CALL( gas=0x1FBD0, - address=0x76FAE819612A29489A1A43208613D8F8557B8898, + address=addr_2, value=0x0, args_offset=0x0, args_size=0x0, @@ -95,10 +90,8 @@ def test_touch_to_empty_account_revert2_paris( ret_size=0x0, ), ) - + Op.SHA3(offset=0x0, size=0x2FFFFF) + Op.STOP, nonce=0, - address=Address(0xFC4D79463BC948EB3FE54196270DE2B78C201506), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stRevertTest/test_touch_to_empty_account_revert3_paris.py b/tests/ported_static/stRevertTest/test_touch_to_empty_account_revert3_paris.py index 4aba629a847..842d8334f4b 100644 --- a/tests/ported_static/stRevertTest/test_touch_to_empty_account_revert3_paris.py +++ b/tests/ported_static/stRevertTest/test_touch_to_empty_account_revert3_paris.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,10 +32,7 @@ def test_touch_to_empty_account_revert3_paris( ) -> None: """Test_touch_to_empty_account_revert3_paris.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - addr = Address(0x76FAE819612A29489A1A43208613D8F8557B8898) - sender = EOA( - key=0x4F31B3206FBF0E0E598B9B1A7D8AC86302A0FF1D8930738F1BEBAE9B67173E52 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -47,16 +43,27 @@ def test_touch_to_empty_account_revert3_paris( gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) - pre[addr] = Account(balance=10) + addr = pre.fund_eoa(amount=10) # noqa: F841 # Source: lll - # { [[0]](CALL 130000 0 0 0 0 0) [[1]](CALL 130000 0 0 0 0 0) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 + # { (SELFDESTRUCT ) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SELFDESTRUCT(address=addr) + Op.STOP, + nonce=0, + ) + # Source: lll + # { (SELFDESTRUCT ) } + addr_4 = pre.deploy_contract( # noqa: F841 + code=Op.SELFDESTRUCT(address=addr) + Op.STOP, + nonce=0, + ) + # Source: lll + # { [[2]](CALL 100000 0 0 0 0 0) (KECCAK256 0x00 0x2fffff) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x0, + key=0x2, value=Op.CALL( - gas=0x1FBD0, - address=0x51CD6399DE7E11930D3AA146D45A2E327B5894B9, + gas=0x186A0, + address=addr_4, value=0x0, args_offset=0x0, args_size=0x0, @@ -64,11 +71,18 @@ def test_touch_to_empty_account_revert3_paris( ret_size=0x0, ), ) - + Op.SSTORE( - key=0x1, + + Op.SHA3(offset=0x0, size=0x2FFFFF) + + Op.STOP, + nonce=0, + ) + # Source: lll + # { [[0]](CALL 130000 0 0 0 0 0) [[1]](CALL 130000 0 0 0 0 0) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, value=Op.CALL( gas=0x1FBD0, - address=0x2620916B2F3D6B185F4D9DD1ECEE4A1F665D5C36, + address=addr_3, value=0x0, args_offset=0x0, args_size=0x0, @@ -76,18 +90,11 @@ def test_touch_to_empty_account_revert3_paris( ret_size=0x0, ), ) - + Op.STOP, - nonce=0, - address=Address(0xCD48E0C45933CFA7AA1345807CF2D6B02875F627), # noqa: E501 - ) - # Source: lll - # { [[2]](CALL 100000 0 0 0 0 0) (KECCAK256 0x00 0x2fffff) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x2, + + Op.SSTORE( + key=0x1, value=Op.CALL( - gas=0x186A0, - address=0x28207E524CCB9DBC79BB3044819ACD87D630F27A, + gas=0x1FBD0, + address=addr_2, value=0x0, args_offset=0x0, args_size=0x0, @@ -95,30 +102,8 @@ def test_touch_to_empty_account_revert3_paris( ret_size=0x0, ), ) - + Op.SHA3(offset=0x0, size=0x2FFFFF) - + Op.STOP, - nonce=0, - address=Address(0x2620916B2F3D6B185F4D9DD1ECEE4A1F665D5C36), # noqa: E501 - ) - # Source: lll - # { (SELFDESTRUCT ) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SELFDESTRUCT( - address=0x76FAE819612A29489A1A43208613D8F8557B8898 - ) - + Op.STOP, - nonce=0, - address=Address(0x51CD6399DE7E11930D3AA146D45A2E327B5894B9), # noqa: E501 - ) - # Source: lll - # { (SELFDESTRUCT ) } - addr_4 = pre.deploy_contract( # noqa: F841 - code=Op.SELFDESTRUCT( - address=0x76FAE819612A29489A1A43208613D8F8557B8898 - ) + Op.STOP, nonce=0, - address=Address(0x28207E524CCB9DBC79BB3044819ACD87D630F27A), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stRevertTest/test_touch_to_empty_account_revert_paris.py b/tests/ported_static/stRevertTest/test_touch_to_empty_account_revert_paris.py index 956e446364b..8f01e8ee6c1 100644 --- a/tests/ported_static/stRevertTest/test_touch_to_empty_account_revert_paris.py +++ b/tests/ported_static/stRevertTest/test_touch_to_empty_account_revert_paris.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,10 +32,7 @@ def test_touch_to_empty_account_revert_paris( ) -> None: """Test_touch_to_empty_account_revert_paris.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - addr = Address(0x76FAE819612A29489A1A43208613D8F8557B8898) - sender = EOA( - key=0x4F31B3206FBF0E0E598B9B1A7D8AC86302A0FF1D8930738F1BEBAE9B67173E52 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -47,16 +43,15 @@ def test_touch_to_empty_account_revert_paris( gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) - pre[addr] = Account(balance=10) + addr = pre.fund_eoa(amount=10) # noqa: F841 # Source: lll - # { [[0]](CALL 30000 0 0 0 0 0) [[2]] 1 } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 + # { [[1]](CALL 30000 0 0 0 0 0) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x0, + key=0x1, value=Op.CALL( gas=0x7530, - address=0xBA4D09EB64FDDCEC11D7587E1F51AC0B07C5069C, + address=addr, value=0x0, args_offset=0x0, args_size=0x0, @@ -64,19 +59,17 @@ def test_touch_to_empty_account_revert_paris( ret_size=0x0, ), ) - + Op.SSTORE(key=0x2, value=0x1) + Op.STOP, nonce=0, - address=Address(0x68B5E303DA0AD3DFBA8B2134BAB64274DE666F37), # noqa: E501 ) # Source: lll - # { [[1]](CALL 30000 0 0 0 0 0) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 + # { [[0]](CALL 30000 0 0 0 0 0) [[2]] 1 } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( - key=0x1, + key=0x0, value=Op.CALL( gas=0x7530, - address=0x76FAE819612A29489A1A43208613D8F8557B8898, + address=addr_2, value=0x0, args_offset=0x0, args_size=0x0, @@ -84,9 +77,9 @@ def test_touch_to_empty_account_revert_paris( ret_size=0x0, ), ) + + Op.SSTORE(key=0x2, value=0x1) + Op.STOP, nonce=0, - address=Address(0xBA4D09EB64FDDCEC11D7587E1F51AC0B07C5069C), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stSStoreTest/test_sstore_call_to_self_sub_refund_below_zero.py b/tests/ported_static/stSStoreTest/test_sstore_call_to_self_sub_refund_below_zero.py index d0363ffc99a..71052640eb1 100644 --- a/tests/ported_static/stSStoreTest/test_sstore_call_to_self_sub_refund_below_zero.py +++ b/tests/ported_static/stSStoreTest/test_sstore_call_to_self_sub_refund_below_zero.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_sstore_call_to_self_sub_refund_below_zero( ) -> None: """Test where accnt has slot 1 value of '2', is cleared, then calls...""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xAF50993BA9FD52F2A61FCD1DC6D59A44E7AF39F4289201CC19EA7D30E8E27E83 - ) + sender = pre.fund_eoa(amount=0xFFFFFFFFFFFFFFFF) env = Environment( fee_recipient=coinbase, @@ -66,9 +63,7 @@ def test_sstore_call_to_self_sub_refund_below_zero( + Op.STOP, storage={1: 2}, nonce=0, - address=Address(0xB48023055B6C3D565A6F5488459D64EFAB79B6C7), # noqa: E501 ) - pre[sender] = Account(balance=0xFFFFFFFFFFFFFFFF) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stSStoreTest/test_sstore_gas.py b/tests/ported_static/stSStoreTest/test_sstore_gas.py index 059c539c049..975d3765c56 100644 --- a/tests/ported_static/stSStoreTest/test_sstore_gas.py +++ b/tests/ported_static/stSStoreTest/test_sstore_gas.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_sstore_gas( ) -> None: """Ori Pomerantz qbzzt1@gmail.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x48DC5A9F099CAAAA557742CA3A990A94BE45B9969126A1BC74E5E8BE5A2B5B47 - ) + sender = pre.fund_eoa(amount=0xBA1A9CE0BA1A9CE, nonce=1) env = Environment( fee_recipient=coinbase, @@ -164,9 +161,7 @@ def test_sstore_gas( storage={0: 24743, 1: 24743}, balance=0xBA1A9CE0BA1A9CE, nonce=1, - address=Address(0x84E1DC6705B8B9B7FFACA256C9266792BDD0943B), # noqa: E501 ) - pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE, nonce=1) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stShift/test_sar00.py b/tests/ported_static/stShift/test_sar00.py index bab4d933456..14480fdf678 100644 --- a/tests/ported_static/stShift/test_sar00.py +++ b/tests/ported_static/stShift/test_sar00.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_sar00( ) -> None: """Test_sar00.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -53,9 +50,7 @@ def test_sar00( storage={0: 3}, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x9AD94489822593B54793E82913F291C9207D1310), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stShift/test_sar01.py b/tests/ported_static/stShift/test_sar01.py index 299444854af..a80bacfb039 100644 --- a/tests/ported_static/stShift/test_sar01.py +++ b/tests/ported_static/stShift/test_sar01.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_sar01( ) -> None: """Test_sar01.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -53,9 +50,7 @@ def test_sar01( storage={0: 3}, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x2DDE5F71C0D0ECC67A9AE94C2CAFA14FBB93B84C), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stShift/test_sar10.py b/tests/ported_static/stShift/test_sar10.py index 3f76aa5730a..8073e9ba4a0 100644 --- a/tests/ported_static/stShift/test_sar10.py +++ b/tests/ported_static/stShift/test_sar10.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_sar10( ) -> None: """Test_sar10.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -53,9 +50,7 @@ def test_sar10( storage={0: 3}, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xA3460B99A5BCB7697BEFBFFF895F60BDF7984363), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stShift/test_sar11.py b/tests/ported_static/stShift/test_sar11.py index 0d593ab415d..3663b7b651d 100644 --- a/tests/ported_static/stShift/test_sar11.py +++ b/tests/ported_static/stShift/test_sar11.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_sar11( ) -> None: """Test_sar11.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -53,9 +50,7 @@ def test_sar11( storage={0: 3}, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x7362D25017F41B7D56BC5878CBB1FB9B03C39E26), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stShift/test_sar_0_256_minus_1.py b/tests/ported_static/stShift/test_sar_0_256_minus_1.py index 2072027865b..5d4794477c7 100644 --- a/tests/ported_static/stShift/test_sar_0_256_minus_1.py +++ b/tests/ported_static/stShift/test_sar_0_256_minus_1.py @@ -46,6 +46,7 @@ def test_sar_0_256_minus_1( gas_limit=1000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { (SSTORE 0 (SAR 0 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -62,7 +63,6 @@ def test_sar_0_256_minus_1( nonce=0, address=Address(0xD1E074895679E6AFB7A9F3CB1AC3FFA300D2A5E8), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stShift/test_sar_2_254_254.py b/tests/ported_static/stShift/test_sar_2_254_254.py index 77350fa415e..1e56f56b8cf 100644 --- a/tests/ported_static/stShift/test_sar_2_254_254.py +++ b/tests/ported_static/stShift/test_sar_2_254_254.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_sar_2_254_254( ) -> None: """Test_sar_2_254_254.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -59,9 +56,7 @@ def test_sar_2_254_254( storage={0: 3}, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x6F6A7E06C68B63202842C646A7EB4F01880D8AF0), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stShift/test_sar_2_255_1.py b/tests/ported_static/stShift/test_sar_2_255_1.py index 0019f19ade1..c6903037aee 100644 --- a/tests/ported_static/stShift/test_sar_2_255_1.py +++ b/tests/ported_static/stShift/test_sar_2_255_1.py @@ -46,6 +46,7 @@ def test_sar_2_255_1( gas_limit=1000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: raw # 0x7f800000000000000000000000000000000000000000000000000000000000000060011d600055 # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -61,7 +62,6 @@ def test_sar_2_255_1( nonce=0, address=Address(0xB6587B163F780EAAA5C216DD3DDF2E381FEAA96C), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stShift/test_sar_2_255_255.py b/tests/ported_static/stShift/test_sar_2_255_255.py index 935617c7ad9..b250ba79a06 100644 --- a/tests/ported_static/stShift/test_sar_2_255_255.py +++ b/tests/ported_static/stShift/test_sar_2_255_255.py @@ -46,6 +46,7 @@ def test_sar_2_255_255( gas_limit=1000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: raw # 0x7f800000000000000000000000000000000000000000000000000000000000000060ff1d600055 # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -61,7 +62,6 @@ def test_sar_2_255_255( nonce=0, address=Address(0xED3A766218E6436FD80F97075B08DF750F226F0D), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stShift/test_sar_2_255_256.py b/tests/ported_static/stShift/test_sar_2_255_256.py index d4d2eb6db16..1939c68afef 100644 --- a/tests/ported_static/stShift/test_sar_2_255_256.py +++ b/tests/ported_static/stShift/test_sar_2_255_256.py @@ -46,6 +46,7 @@ def test_sar_2_255_256( gas_limit=1000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: raw # 0x7f80000000000000000000000000000000000000000000000000000000000000006101001d600055 # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -61,7 +62,6 @@ def test_sar_2_255_256( nonce=0, address=Address(0xAF9B43858D7F35038AEA2ACF1FFFEA3DF1AB4BCC), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stShift/test_sar_2_255_257.py b/tests/ported_static/stShift/test_sar_2_255_257.py index 4572c012fbc..be83634889e 100644 --- a/tests/ported_static/stShift/test_sar_2_255_257.py +++ b/tests/ported_static/stShift/test_sar_2_255_257.py @@ -46,6 +46,7 @@ def test_sar_2_255_257( gas_limit=1000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: raw # 0x7f80000000000000000000000000000000000000000000000000000000000000006101011d600055 # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -61,7 +62,6 @@ def test_sar_2_255_257( nonce=0, address=Address(0xF1B108EB4DE4C7A4C0B2258442C550D23DF640A0), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stShift/test_sar_2_255_minus_1_248.py b/tests/ported_static/stShift/test_sar_2_255_minus_1_248.py index f8ea1bb304b..6b17e228638 100644 --- a/tests/ported_static/stShift/test_sar_2_255_minus_1_248.py +++ b/tests/ported_static/stShift/test_sar_2_255_minus_1_248.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_sar_2_255_minus_1_248( ) -> None: """Test_sar_2_255_minus_1_248.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -59,9 +56,7 @@ def test_sar_2_255_minus_1_248( storage={0: 3}, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xACA270CA7F9E766B84A13DE48F52DAFC92B80F8E), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stShift/test_sar_2_255_minus_1_254.py b/tests/ported_static/stShift/test_sar_2_255_minus_1_254.py index 4b7bcca5a1b..8c5b0743ac9 100644 --- a/tests/ported_static/stShift/test_sar_2_255_minus_1_254.py +++ b/tests/ported_static/stShift/test_sar_2_255_minus_1_254.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_sar_2_255_minus_1_254( ) -> None: """Test_sar_2_255_minus_1_254.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -59,9 +56,7 @@ def test_sar_2_255_minus_1_254( storage={0: 3}, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x21F937F03A969139CFD6A0C20959317D0A4AE6BA), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stShift/test_sar_2_255_minus_1_255.py b/tests/ported_static/stShift/test_sar_2_255_minus_1_255.py index 657353f00bb..d6b7bee6ae0 100644 --- a/tests/ported_static/stShift/test_sar_2_255_minus_1_255.py +++ b/tests/ported_static/stShift/test_sar_2_255_minus_1_255.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_sar_2_255_minus_1_255( ) -> None: """Test_sar_2_255_minus_1_255.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -59,9 +56,7 @@ def test_sar_2_255_minus_1_255( storage={0: 3}, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x38EF04946EAFCF6E172CC1AB51F731A7DF62AE9C), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stShift/test_sar_2_255_minus_1_256.py b/tests/ported_static/stShift/test_sar_2_255_minus_1_256.py index 1cecc9bd5db..fcf388e727d 100644 --- a/tests/ported_static/stShift/test_sar_2_255_minus_1_256.py +++ b/tests/ported_static/stShift/test_sar_2_255_minus_1_256.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_sar_2_255_minus_1_256( ) -> None: """Test_sar_2_255_minus_1_256.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -59,9 +56,7 @@ def test_sar_2_255_minus_1_256( storage={0: 3}, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x2FC6CB11C70CD31A1BB03C5149F434D6C9C553AA), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stShift/test_sar_2_256_minus_1_0.py b/tests/ported_static/stShift/test_sar_2_256_minus_1_0.py index 4b743fc4888..76f07ec032e 100644 --- a/tests/ported_static/stShift/test_sar_2_256_minus_1_0.py +++ b/tests/ported_static/stShift/test_sar_2_256_minus_1_0.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_sar_2_256_minus_1_0( ) -> None: """Test_sar_2_256_minus_1_0.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -60,9 +57,7 @@ def test_sar_2_256_minus_1_0( storage={0: 3}, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x488DE231F3302A744E2D40ECC611A66F21B4DB06), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stShift/test_sar_2_256_minus_1_1.py b/tests/ported_static/stShift/test_sar_2_256_minus_1_1.py index 7a534b8e955..6956a3d508b 100644 --- a/tests/ported_static/stShift/test_sar_2_256_minus_1_1.py +++ b/tests/ported_static/stShift/test_sar_2_256_minus_1_1.py @@ -46,6 +46,7 @@ def test_sar_2_256_minus_1_1( gas_limit=1000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: raw # 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60011d600055 # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -61,7 +62,6 @@ def test_sar_2_256_minus_1_1( nonce=0, address=Address(0x37A6DF595C7AE4907CF940CE2ED9301836379BE0), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stShift/test_sar_2_256_minus_1_255.py b/tests/ported_static/stShift/test_sar_2_256_minus_1_255.py index 8b81faafff7..bf1335a9f18 100644 --- a/tests/ported_static/stShift/test_sar_2_256_minus_1_255.py +++ b/tests/ported_static/stShift/test_sar_2_256_minus_1_255.py @@ -46,6 +46,7 @@ def test_sar_2_256_minus_1_255( gas_limit=1000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: raw # 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff1d600055 # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -61,7 +62,6 @@ def test_sar_2_256_minus_1_255( nonce=0, address=Address(0xD7953AA3795F1835AC719193B028850319F530EB), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stShift/test_sar_2_256_minus_1_256.py b/tests/ported_static/stShift/test_sar_2_256_minus_1_256.py index 715e5efbbb8..fac94aaf67a 100644 --- a/tests/ported_static/stShift/test_sar_2_256_minus_1_256.py +++ b/tests/ported_static/stShift/test_sar_2_256_minus_1_256.py @@ -46,6 +46,7 @@ def test_sar_2_256_minus_1_256( gas_limit=1000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: raw # 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101001d600055 # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -61,7 +62,6 @@ def test_sar_2_256_minus_1_256( nonce=0, address=Address(0x3E8CC6A056C48EDCE9E2ABB7F1857F69318ADD34), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stShift/test_shift_signed_combinations.py b/tests/ported_static/stShift/test_shift_signed_combinations.py index ead97a9b356..20e54feebf5 100644 --- a/tests/ported_static/stShift/test_shift_signed_combinations.py +++ b/tests/ported_static/stShift/test_shift_signed_combinations.py @@ -47,6 +47,7 @@ def test_shift_signed_combinations( gas_limit=100000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { # (def 'sstore_n 0) @@ -310,7 +311,6 @@ def test_shift_signed_combinations( nonce=0, address=Address(0x6C08B7236EE4784E5499B9A576902679D8F863D5), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stShift/test_shl01.py b/tests/ported_static/stShift/test_shl01.py index aa480116f36..01f8cfd4069 100644 --- a/tests/ported_static/stShift/test_shl01.py +++ b/tests/ported_static/stShift/test_shl01.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_shl01( ) -> None: """Test_shl01.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -53,9 +50,7 @@ def test_shl01( storage={0: 3}, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xD968E3655CBD1FA49753B38AF57F8F335062470F), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stShift/test_shl01_minus_0100.py b/tests/ported_static/stShift/test_shl01_minus_0100.py index da671796802..d269b6d435c 100644 --- a/tests/ported_static/stShift/test_shl01_minus_0100.py +++ b/tests/ported_static/stShift/test_shl01_minus_0100.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_shl01_minus_0100( ) -> None: """Test_shl01_minus_0100.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -53,9 +50,7 @@ def test_shl01_minus_0100( storage={0: 3}, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xA90096F3CEEE40E87EC1AFC1052BBBC98616E3E9), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stShift/test_shl01_minus_0101.py b/tests/ported_static/stShift/test_shl01_minus_0101.py index c4c2fc59590..039c045a6f3 100644 --- a/tests/ported_static/stShift/test_shl01_minus_0101.py +++ b/tests/ported_static/stShift/test_shl01_minus_0101.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_shl01_minus_0101( ) -> None: """Test_shl01_minus_0101.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -53,9 +50,7 @@ def test_shl01_minus_0101( storage={0: 3}, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x0AD09D9167B6FD7013F4A95E9A67DAA83FBDF6FE), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stShift/test_shl01_minus_ff.py b/tests/ported_static/stShift/test_shl01_minus_ff.py index 809390060d6..278d2f2ac8d 100644 --- a/tests/ported_static/stShift/test_shl01_minus_ff.py +++ b/tests/ported_static/stShift/test_shl01_minus_ff.py @@ -46,6 +46,7 @@ def test_shl01_minus_ff( gas_limit=1000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: raw # 0x600160ff1b600055 target = pre.deploy_contract( # noqa: F841 @@ -55,7 +56,6 @@ def test_shl01_minus_ff( nonce=0, address=Address(0x6750CCB18BD2D092093F25BF1EAEBE77F4ECB9A2), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stShift/test_shl10.py b/tests/ported_static/stShift/test_shl10.py index 1a9c9ee33f9..dc3ff71839e 100644 --- a/tests/ported_static/stShift/test_shl10.py +++ b/tests/ported_static/stShift/test_shl10.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_shl10( ) -> None: """Test_shl10.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -53,9 +50,7 @@ def test_shl10( storage={0: 3}, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x8162885EED8441D008AAEC61134E7B159360A9CB), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stShift/test_shl11.py b/tests/ported_static/stShift/test_shl11.py index 074955f3da6..330c5034512 100644 --- a/tests/ported_static/stShift/test_shl11.py +++ b/tests/ported_static/stShift/test_shl11.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_shl11( ) -> None: """Test_shl11.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -53,9 +50,7 @@ def test_shl11( storage={0: 3}, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x470AF4E9738D2348BF28D09F712BB06A118F6146), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stShift/test_shl_2_255_minus_1_1.py b/tests/ported_static/stShift/test_shl_2_255_minus_1_1.py index 034bdaf3ace..dcae03b38f5 100644 --- a/tests/ported_static/stShift/test_shl_2_255_minus_1_1.py +++ b/tests/ported_static/stShift/test_shl_2_255_minus_1_1.py @@ -46,6 +46,7 @@ def test_shl_2_255_minus_1_1( gas_limit=1000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: raw # 0x7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60011b600055 # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -61,7 +62,6 @@ def test_shl_2_255_minus_1_1( nonce=0, address=Address(0x3CE647DC9F67841B40DF3DDD90FEF6FA3C44CCBC), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stShift/test_shl_minus_1_0.py b/tests/ported_static/stShift/test_shl_minus_1_0.py index 24d77d8c6b2..1ed996b4e72 100644 --- a/tests/ported_static/stShift/test_shl_minus_1_0.py +++ b/tests/ported_static/stShift/test_shl_minus_1_0.py @@ -46,6 +46,7 @@ def test_shl_minus_1_0( gas_limit=1000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: raw # 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b600055 # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -61,7 +62,6 @@ def test_shl_minus_1_0( nonce=0, address=Address(0x0630E2AC09069A9263D8D96BCB426B35D3E29A6A), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stShift/test_shl_minus_1_1.py b/tests/ported_static/stShift/test_shl_minus_1_1.py index 95730ca0366..455e23e905a 100644 --- a/tests/ported_static/stShift/test_shl_minus_1_1.py +++ b/tests/ported_static/stShift/test_shl_minus_1_1.py @@ -46,6 +46,7 @@ def test_shl_minus_1_1( gas_limit=1000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: raw # 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60011b600055 # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -61,7 +62,6 @@ def test_shl_minus_1_1( nonce=0, address=Address(0xBCA8D83175FB98FAAE32481A974BBFEE99B931F3), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stShift/test_shl_minus_1_255.py b/tests/ported_static/stShift/test_shl_minus_1_255.py index 5a24b4fc2d0..403433f6bc1 100644 --- a/tests/ported_static/stShift/test_shl_minus_1_255.py +++ b/tests/ported_static/stShift/test_shl_minus_1_255.py @@ -46,6 +46,7 @@ def test_shl_minus_1_255( gas_limit=1000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: raw # 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff1b600055 # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -61,7 +62,6 @@ def test_shl_minus_1_255( nonce=0, address=Address(0x09718BD7395AAFDC3E1AF2B747902980B036BEA8), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stShift/test_shl_minus_1_256.py b/tests/ported_static/stShift/test_shl_minus_1_256.py index 7031ae2dd97..75c679ab014 100644 --- a/tests/ported_static/stShift/test_shl_minus_1_256.py +++ b/tests/ported_static/stShift/test_shl_minus_1_256.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_shl_minus_1_256( ) -> None: """Test_shl_minus_1_256.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -59,9 +56,7 @@ def test_shl_minus_1_256( storage={0: 3}, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xFC4F633F1E963E8685A1E9F4A70AB46901B51FB3), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stShift/test_shr01.py b/tests/ported_static/stShift/test_shr01.py index 1d66e665952..440b1720d94 100644 --- a/tests/ported_static/stShift/test_shr01.py +++ b/tests/ported_static/stShift/test_shr01.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_shr01( ) -> None: """Taken from https://github.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -53,9 +50,7 @@ def test_shr01( storage={0: 3}, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x16408314E05C2677E2AC6A3A832D740AA9E1E99F), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stShift/test_shr10.py b/tests/ported_static/stShift/test_shr10.py index e88087f4dd5..f530f482917 100644 --- a/tests/ported_static/stShift/test_shr10.py +++ b/tests/ported_static/stShift/test_shr10.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_shr10( ) -> None: """Taken from https://github.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -53,9 +50,7 @@ def test_shr10( storage={0: 3}, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xEBFE51D0BD88B6EFF720C820FB552E868F78C681), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stShift/test_shr11.py b/tests/ported_static/stShift/test_shr11.py index 113120c289e..f63d0c0da5f 100644 --- a/tests/ported_static/stShift/test_shr11.py +++ b/tests/ported_static/stShift/test_shr11.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_shr11( ) -> None: """Taken from https://github.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -53,9 +50,7 @@ def test_shr11( storage={0: 3}, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xCD5C8D543415CCD7AC98C6FB1E8A64E2BB9EF8AC), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stShift/test_shr_2_255_1.py b/tests/ported_static/stShift/test_shr_2_255_1.py index a53132eb96a..e5098e15523 100644 --- a/tests/ported_static/stShift/test_shr_2_255_1.py +++ b/tests/ported_static/stShift/test_shr_2_255_1.py @@ -46,6 +46,7 @@ def test_shr_2_255_1( gas_limit=1000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: raw # 0x7f800000000000000000000000000000000000000000000000000000000000000060011c600055 # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -61,7 +62,6 @@ def test_shr_2_255_1( nonce=0, address=Address(0xA389B98748A90663FA4E2B16D2AE848EBC2069D2), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stShift/test_shr_2_255_255.py b/tests/ported_static/stShift/test_shr_2_255_255.py index b96fc123e30..32b6c243015 100644 --- a/tests/ported_static/stShift/test_shr_2_255_255.py +++ b/tests/ported_static/stShift/test_shr_2_255_255.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_shr_2_255_255( ) -> None: """Taken from https://github.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -59,9 +56,7 @@ def test_shr_2_255_255( storage={0: 3}, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xAD48C928474B5D7BC2AD4C8E769133BCD5988894), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stShift/test_shr_2_255_256.py b/tests/ported_static/stShift/test_shr_2_255_256.py index cda32d8de64..e94dd6b51b0 100644 --- a/tests/ported_static/stShift/test_shr_2_255_256.py +++ b/tests/ported_static/stShift/test_shr_2_255_256.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_shr_2_255_256( ) -> None: """Taken from https://github.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -59,9 +56,7 @@ def test_shr_2_255_256( storage={0: 3}, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x634045B2E9EF0249256F6C175BEDDB252CCDCC65), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stShift/test_shr_2_255_257.py b/tests/ported_static/stShift/test_shr_2_255_257.py index 06826a861d2..eb5e71253f3 100644 --- a/tests/ported_static/stShift/test_shr_2_255_257.py +++ b/tests/ported_static/stShift/test_shr_2_255_257.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_shr_2_255_257( ) -> None: """Taken from https://github.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -59,9 +56,7 @@ def test_shr_2_255_257( storage={0: 3}, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x00FE70B13953D2DAB2D13CE453CC42C47E3AB8CA), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stShift/test_shr_minus_1_0.py b/tests/ported_static/stShift/test_shr_minus_1_0.py index 9c78c1d9238..340c476af04 100644 --- a/tests/ported_static/stShift/test_shr_minus_1_0.py +++ b/tests/ported_static/stShift/test_shr_minus_1_0.py @@ -46,6 +46,7 @@ def test_shr_minus_1_0( gas_limit=1000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: raw # 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001c600055 # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -61,7 +62,6 @@ def test_shr_minus_1_0( nonce=0, address=Address(0xCB148BF8DF8A38A6478678824EEB7EADD61E3E59), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stShift/test_shr_minus_1_1.py b/tests/ported_static/stShift/test_shr_minus_1_1.py index 54892484c65..aff1657f6c4 100644 --- a/tests/ported_static/stShift/test_shr_minus_1_1.py +++ b/tests/ported_static/stShift/test_shr_minus_1_1.py @@ -46,6 +46,7 @@ def test_shr_minus_1_1( gas_limit=1000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: raw # 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60011c600055 # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -61,7 +62,6 @@ def test_shr_minus_1_1( nonce=0, address=Address(0x3610B43FF3BAB81BD5772E01915AC9CBB67782B9), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stShift/test_shr_minus_1_255.py b/tests/ported_static/stShift/test_shr_minus_1_255.py index c4ec6e09447..7bba31f619b 100644 --- a/tests/ported_static/stShift/test_shr_minus_1_255.py +++ b/tests/ported_static/stShift/test_shr_minus_1_255.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_shr_minus_1_255( ) -> None: """Taken from https://github.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -59,9 +56,7 @@ def test_shr_minus_1_255( storage={0: 3}, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xCBA06AF5AF94BE2ECF98FCE20D1D965296D6FA02), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stShift/test_shr_minus_1_256.py b/tests/ported_static/stShift/test_shr_minus_1_256.py index 01c3fa3e930..4d519360577 100644 --- a/tests/ported_static/stShift/test_shr_minus_1_256.py +++ b/tests/ported_static/stShift/test_shr_minus_1_256.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_shr_minus_1_256( ) -> None: """Taken from https://github.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -59,9 +56,7 @@ def test_shr_minus_1_256( storage={0: 3}, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xF703BF410C7F3337C04F281F6EB8E44D83323F55), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stSolidityTest/test_ambiguous_method.py b/tests/ported_static/stSolidityTest/test_ambiguous_method.py index 0d09857e7a9..fa6f1e8de36 100644 --- a/tests/ported_static/stSolidityTest/test_ambiguous_method.py +++ b/tests/ported_static/stSolidityTest/test_ambiguous_method.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_ambiguous_method( ) -> None: """Test_ambiguous_method.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xA9AE12CB2700C0214F86B9796881BC03A1FD5605D0E76D2DA2CA592E62D53E52 - ) + sender = pre.fund_eoa(amount=0x12A05F200) env = Environment( fee_recipient=coinbase, @@ -70,9 +67,7 @@ def test_ambiguous_method( + Op.JUMP, balance=0x186A0, nonce=0, - address=Address(0x235C9320B0F4D30204334C1DDB008DFE1D75B1B9), # noqa: E501 ) - pre[sender] = Account(balance=0x12A05F200) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stSolidityTest/test_by_zero.py b/tests/ported_static/stSolidityTest/test_by_zero.py index 4d58b14d717..5fc45ecfe07 100644 --- a/tests/ported_static/stSolidityTest/test_by_zero.py +++ b/tests/ported_static/stSolidityTest/test_by_zero.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -56,7 +55,6 @@ ), ], ) -@pytest.mark.pre_alloc_mutable def test_by_zero( state_test: StateTestFiller, pre: Alloc, @@ -67,9 +65,7 @@ def test_by_zero( ) -> None: """DIV/SDIV/MOD/SMOD by zero tests.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0x8AC7230489E80000) env = Environment( fee_recipient=coinbase, @@ -80,8 +76,6 @@ def test_by_zero( gas_limit=1000000, ) - pre[sender] = Account(balance=0x8AC7230489E80000) - tx_data = [ Op.SSTORE(key=Op.DIV(0x1, 0x0), value=0x1) + Op.STOP, Op.SSTORE(key=Op.SDIV(0x1, 0x0), value=0x1) + Op.STOP, diff --git a/tests/ported_static/stSolidityTest/test_call_infinite_loop.py b/tests/ported_static/stSolidityTest/test_call_infinite_loop.py index dca1b0e5172..a1a00522ae6 100644 --- a/tests/ported_static/stSolidityTest/test_call_infinite_loop.py +++ b/tests/ported_static/stSolidityTest/test_call_infinite_loop.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_call_infinite_loop( ) -> None: """Test_call_infinite_loop.""" coinbase = Address(0xEB201D2887816E041F6E807E804F64F3A7A226FE) - sender = EOA( - key=0x96C07046493EC8728482079AB999D2994420D9CF4D3491DFD06871B106D9D87B - ) + sender = pre.fund_eoa(amount=0x1DCD6500) env = Environment( fee_recipient=coinbase, @@ -90,9 +87,7 @@ def test_call_infinite_loop( + Op.JUMP, balance=0x186A0, nonce=0, - address=Address(0xF9B9CCB6160CE3574DF5D096CA9FD12BA81D97EE), # noqa: E501 ) - pre[sender] = Account(balance=0x1DCD6500) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stSolidityTest/test_call_recursive_methods.py b/tests/ported_static/stSolidityTest/test_call_recursive_methods.py index eafae5d0d5e..bb578a72397 100644 --- a/tests/ported_static/stSolidityTest/test_call_recursive_methods.py +++ b/tests/ported_static/stSolidityTest/test_call_recursive_methods.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_call_recursive_methods( ) -> None: """Test_call_recursive_methods.""" coinbase = Address(0xEB201D2887816E041F6E807E804F64F3A7A226FE) - sender = EOA( - key=0xA9AE12CB2700C0214F86B9796881BC03A1FD5605D0E76D2DA2CA592E62D53E52 - ) + sender = pre.fund_eoa(amount=0x12A05F200) env = Environment( fee_recipient=coinbase, @@ -90,9 +87,7 @@ def test_call_recursive_methods( + Op.JUMP, balance=0x186A0, nonce=0, - address=Address(0xC7C7851C7F3291BED1039BB4FFA166C290A605A9), # noqa: E501 ) - pre[sender] = Account(balance=0x12A05F200) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stSolidityTest/test_contract_inheritance.py b/tests/ported_static/stSolidityTest/test_contract_inheritance.py index 080b62b5a9d..d0b8c2f3cd5 100644 --- a/tests/ported_static/stSolidityTest/test_contract_inheritance.py +++ b/tests/ported_static/stSolidityTest/test_contract_inheritance.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,9 +33,7 @@ def test_contract_inheritance( ) -> None: """Test_contract_inheritance.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xA9AE12CB2700C0214F86B9796881BC03A1FD5605D0E76D2DA2CA592E62D53E52 - ) + sender = pre.fund_eoa(amount=0x12A05F200) env = Environment( fee_recipient=coinbase, @@ -206,9 +203,7 @@ def test_contract_inheritance( + Op.RETURN, balance=0x186A0, nonce=0, - address=Address(0x3809B123C157B2D0D3B998255F35B5F8B8AE4789), # noqa: E501 ) - pre[sender] = Account(balance=0x12A05F200) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stSolidityTest/test_create_contract_from_method.py b/tests/ported_static/stSolidityTest/test_create_contract_from_method.py index 827cdb3ff7c..c53bad1118b 100644 --- a/tests/ported_static/stSolidityTest/test_create_contract_from_method.py +++ b/tests/ported_static/stSolidityTest/test_create_contract_from_method.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_create_contract_from_method( """Test_create_contract_from_method.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) contract_0 = Address(0x095E7BAEA6A6C7C4C2DFEB977EFAC326AF552D87) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0x5F5E100) env = Environment( fee_recipient=coinbase, @@ -125,9 +122,7 @@ def test_create_contract_from_method( + Op.JUMP, balance=0x186A0, nonce=0, - address=Address(0x095E7BAEA6A6C7C4C2DFEB977EFAC326AF552D87), # noqa: E501 ) - pre[sender] = Account(balance=0x5F5E100) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stSolidityTest/test_recursive_create_contracts.py b/tests/ported_static/stSolidityTest/test_recursive_create_contracts.py index 0c335e0368c..836f16024d1 100644 --- a/tests/ported_static/stSolidityTest/test_recursive_create_contracts.py +++ b/tests/ported_static/stSolidityTest/test_recursive_create_contracts.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -36,9 +35,7 @@ def test_recursive_create_contracts( """Test_recursive_create_contracts.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) contract_0 = Address(0x095E7BAEA6A6C7C4C2DFEB977EFAC326AF552D87) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0x1DCD6500) env = Environment( fee_recipient=coinbase, @@ -248,7 +245,6 @@ def test_recursive_create_contracts( nonce=0, address=Address(0x095E7BAEA6A6C7C4C2DFEB977EFAC326AF552D87), # noqa: E501 ) - pre[sender] = Account(balance=0x1DCD6500) tx = Transaction( sender=sender, @@ -260,10 +256,7 @@ def test_recursive_create_contracts( post = { contract_0: Account( - storage={ - 0: 0x95E7BAEA6A6C7C4C2DFEB977EFAC326AF552D87, - 1: 772, - }, + storage={0: contract_0, 1: 772}, balance=0x314DC6448D9338C15B0A00000001, nonce=1, ), diff --git a/tests/ported_static/stSolidityTest/test_test_block_and_transaction_properties.py b/tests/ported_static/stSolidityTest/test_test_block_and_transaction_properties.py index 2bec0c9098c..0bcbd18e2f1 100644 --- a/tests/ported_static/stSolidityTest/test_test_block_and_transaction_properties.py +++ b/tests/ported_static/stSolidityTest/test_test_block_and_transaction_properties.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_test_block_and_transaction_properties( ) -> None: """Test_test_block_and_transaction_properties.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xA2333EEF5630066B928DEA5FD85A239F511B5B067D1441EE7AC290D0122B917B - ) + sender = pre.fund_eoa(amount=0x5F5E100) env = Environment( fee_recipient=coinbase, @@ -145,7 +142,7 @@ def test_test_block_and_transaction_properties( 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, Op.COINBASE, ), - 0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA, + coinbase, ) ) ), @@ -195,7 +192,7 @@ def test_test_block_and_transaction_properties( 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, Op.CALLER, ), - 0x7F3F285918D9B5E764174551E10B7539B97BBB27, + sender, ) ) ), @@ -230,7 +227,7 @@ def test_test_block_and_transaction_properties( 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, Op.ORIGIN, ), - 0x7F3F285918D9B5E764174551E10B7539B97BBB27, + sender, ) ) ), @@ -244,9 +241,7 @@ def test_test_block_and_transaction_properties( + Op.JUMP, balance=0x186A0, nonce=0, - address=Address(0xAD24D212286AB785EFE98AB6F5A3ECDE73054EE5), # noqa: E501 ) - pre[sender] = Account(balance=0x5F5E100) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stSolidityTest/test_test_contract_interaction.py b/tests/ported_static/stSolidityTest/test_test_contract_interaction.py index 16b73bd74bf..0bcc63132a1 100644 --- a/tests/ported_static/stSolidityTest/test_test_contract_interaction.py +++ b/tests/ported_static/stSolidityTest/test_test_contract_interaction.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_test_contract_interaction( ) -> None: """Test_test_contract_interaction.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xA2333EEF5630066B928DEA5FD85A239F511B5B067D1441EE7AC290D0122B917B - ) + sender = pre.fund_eoa(amount=0x5F5E100) env = Environment( fee_recipient=coinbase, @@ -162,9 +159,7 @@ def test_test_contract_interaction( + Op.JUMP, balance=0x186A0, nonce=0, - address=Address(0x087DFEC56D6DA95FD3A1BCF8CCF995EE51645950), # noqa: E501 ) - pre[sender] = Account(balance=0x5F5E100) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stSolidityTest/test_test_contract_suicide.py b/tests/ported_static/stSolidityTest/test_test_contract_suicide.py index b1d73f75b60..1dd26ffea76 100644 --- a/tests/ported_static/stSolidityTest/test_test_contract_suicide.py +++ b/tests/ported_static/stSolidityTest/test_test_contract_suicide.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_test_contract_suicide( ) -> None: """Test_test_contract_suicide.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xA2333EEF5630066B928DEA5FD85A239F511B5B067D1441EE7AC290D0122B917B - ) + sender = pre.fund_eoa(amount=0x5F5E100) env = Environment( fee_recipient=coinbase, @@ -184,9 +181,7 @@ def test_test_contract_suicide( + Op.JUMP, balance=0x186A0, nonce=0, - address=Address(0xFE34831DF57F026AFBFFFD7E7B51B4ADBFE135E1), # noqa: E501 ) - pre[sender] = Account(balance=0x5F5E100) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stSolidityTest/test_test_cryptographic_functions.py b/tests/ported_static/stSolidityTest/test_test_cryptographic_functions.py index 0cfc59089a0..deec53219f6 100644 --- a/tests/ported_static/stSolidityTest/test_test_cryptographic_functions.py +++ b/tests/ported_static/stSolidityTest/test_test_cryptographic_functions.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_test_cryptographic_functions( """Test_test_cryptographic_functions.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) contract_0 = Address(0x095E7BAEA6A6C7C4C2DFEB977EFAC326AF552D87) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0x12A05F200) env = Environment( fee_recipient=coinbase, @@ -241,9 +238,7 @@ def test_test_cryptographic_functions( + Op.JUMP, balance=0x186A0, nonce=0, - address=Address(0x095E7BAEA6A6C7C4C2DFEB977EFAC326AF552D87), # noqa: E501 ) - pre[sender] = Account(balance=0x12A05F200) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stSolidityTest/test_test_keywords.py b/tests/ported_static/stSolidityTest/test_test_keywords.py index 08468d531de..5772cd6d269 100644 --- a/tests/ported_static/stSolidityTest/test_test_keywords.py +++ b/tests/ported_static/stSolidityTest/test_test_keywords.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_test_keywords( ) -> None: """Test_test_keywords.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xA2333EEF5630066B928DEA5FD85A239F511B5B067D1441EE7AC290D0122B917B - ) + sender = pre.fund_eoa(amount=0x5F5E100) env = Environment( fee_recipient=coinbase, @@ -143,9 +140,7 @@ def test_test_keywords( + Op.JUMP, balance=0x186A0, nonce=0, - address=Address(0xE7DCB339943A6DB535FFE618EC32D1E4E5A50F37), # noqa: E501 ) - pre[sender] = Account(balance=0x5F5E100) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stSolidityTest/test_test_store_gas_prices.py b/tests/ported_static/stSolidityTest/test_test_store_gas_prices.py index e896aeafc40..6cea8d54e29 100644 --- a/tests/ported_static/stSolidityTest/test_test_store_gas_prices.py +++ b/tests/ported_static/stSolidityTest/test_test_store_gas_prices.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,9 +33,7 @@ def test_test_store_gas_prices( ) -> None: """Test_test_store_gas_prices.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x185FBEA9F643C40E33475353B07FA51D0695CA94789492166B67D60FDB6EF7FB - ) + sender = pre.fund_eoa(amount=0x746A528800) env = Environment( fee_recipient=coinbase, @@ -102,9 +99,7 @@ def test_test_store_gas_prices( + Op.JUMP, balance=0x186A0, nonce=0, - address=Address(0xFE58F48415DCF9D527F770E3148B769A76EF83F1), # noqa: E501 ) - pre[sender] = Account(balance=0x746A528800) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stSpecialTest/test_block504980.py b/tests/ported_static/stSpecialTest/test_block504980.py index de0856afa03..ecf3d159cfa 100644 --- a/tests/ported_static/stSpecialTest/test_block504980.py +++ b/tests/ported_static/stSpecialTest/test_block504980.py @@ -59,6 +59,7 @@ def test_block504980( gas_limit=3141592, ) + pre[sender] = Account(balance=0xD8D726B7177A800000) # Source: hex # 0x contract_0 = pre.deploy_contract( # noqa: F841 @@ -99,37 +100,30 @@ def test_block504980( nonce=0, address=Address(0x0000000000000000000000000000000000000004), # noqa: E501 ) + # Source: hex + # 0x + coinbase = pre.deploy_contract( # noqa: F841 + code="", + balance=1, + nonce=0, + address=Address(0x1CDC8315BDB1362DE8B7B2FA9EE75DC873037179), # noqa: E501 + ) # Source: raw - # 0x600061289f537c01000000000000000000000000000000000000000000000000000000006000350473c9ae5868651bf7b7db6e360217db49ce4e69c07e60205263c4982a8581141561012757600435606052602435608052608060805990590160009052600081526060518160200152608051816040015260008160600152809050205460a05260a051806020026020015990590160009052818152602081019050905060e0526000610140525b60a05161014051121561010b5760a060a0599059016000905260008152606051816020015260805181604001526001816060015261014051816080015280905020546101405160200260e051015260016101405101610140526100ad565b60e05160206040820352602060208203510260400160408203f3505b63cc1c944e8114156101765760043560605260243560805260806080599059016000905260008152606051816020015260805181604001526000816060015280905020546101a05260206101a0f35b6395a405b98114156101d5576004356060526024356080526044356101e05260a060a059905901600090526000815260605181602001526080518160400152600181606001526101e05181608001528090502054610200526020610200f35b6371ebb662811415610224576004356060526024356080526080608059905901600090526000815260605181602001526080518160400152600281606001528090502054610240526020610240f35b637a57a3db811415610325576004356060526024356080526044356102805260c060c0599059016000905260008152606051816020015260805181604001526003816060015261028051816080015260008160a0015280905020608060805990590160009052600081526060518160200152608051816040015260008160600152809050205460200280806020015990590160009052818152602081019050905060005b602083048112156102e95780840154816020028301526001810190506102c8565b602083066020036101000a60000381850154168160200283015281905090509050905060206040820352602060208203510260400160408203f3505b63f73dc690811415610394576004356060526024356080526044356103c0526064356103e05260c060c059905901600090526000815260605181602001526080518160400152600381606001526103c05181608001526103e0518160a001528090502054610400526020610400f35b6354cc61098114156103f3576004356060526024356080526044356103c05260a060a059905901600090526000815260605181602001526080518160400152600481606001526103c05181608001528090502054610440526020610440f35b63c63ef546811415610442576004356060526024356080526080608059905901600090526000815260605181602001526080518160400152600581606001528090502054610480526020610480f35b639381779b8114156105335760043560605260243560805260a060a059905901600090526000815260605181602001526080518160400152600681606001526000816080015280905020608060805990590160009052600081526060518160200152608051816040015260058160600152809050205460200280806020015990590160009052818152602081019050905060005b602083048112156104f75780840154816020028301526001810190506104d6565b602083066020036101000a60000381850154168160200283015281905090509050905060206040820352602060208203510260400160408203f3505b634f9c6eeb8114156106245760043560605260243560805260a060a059905901600090526000815260605181602001526080518160400152600781606001526000816080015280905020608060805990590160009052600081526060518160200152608051816040015260058160600152809050205460200280806020015990590160009052818152602081019050905060005b602083048112156105e85780840154816020028301526001810190506105c7565b602083066020036101000a60000381850154168160200283015281905090509050905060206040820352602060208203510260400160408203f3505b637dc121958114156107155760043560605260243560805260a060a059905901600090526000815260605181602001526080518160400152600881606001526000816080015280905020608060805990590160009052600081526060518160200152608051816040015260058160600152809050205460200280806020015990590160009052818152602081019050905060005b602083048112156106d95780840154816020028301526001810190506106b8565b602083066020036101000a60000381850154168160200283015281905090509050905060206040820352602060208203510260400160408203f3505b63fa9832d18114156108065760043560605260243560805260a060a059905901600090526000815260605181602001526080518160400152600981606001526000816080015280905020608060805990590160009052600081526060518160200152608051816040015260008160600152809050205460200280806020015990590160009052818152602081019050905060005b602083048112156107ca5780840154816020028301526001810190506107a9565b602083066020036101000a60000381850154168160200283015281905090509050905060206040820352602060208203510260400160408203f3505b632c5a40d58114156108f75760043560605260243560805260a060a059905901600090526000815260605181602001526080518160400152600a81606001526000816080015280905020608060805990590160009052600081526060518160200152608051816040015260058160600152809050205460200280806020015990590160009052818152602081019050905060005b602083048112156108bb57808401548160200283015260018101905061089a565b602083066020036101000a60000381850154168160200283015281905090509050905060206040820352602060208203510260400160408203f3505b63e05dcb568114156109eb5760043560605260243560805260a060a059905901600090526000815260605181602001526080518160400152600b81606001526000816080015280905020600260806080599059016000905260008152606051816020015260805181604001526000816060015280905020546020020180806020015990590160009052818152602081019050905060005b602083048112156109af57808401548160200283015260018101905061098e565b602083066020036101000a60000381850154168160200283015281905090509050905060206040820352602060208203510260400160408203f3505b63586b5be0811415610a3a576004356060526024356080526080608059905901600090526000815260605181602001526080518160400152600c81606001528090502054610b80526020610b80f35b63eb8af5aa811415610b585760043560605260243560805260a060a059905901600090526000815260605181602001526080518160400152600d81606001526000816080015280905020608060805990590160009052600081526060518160200152608051816040015260008160600152809050205460806080599059016000905260008152606051816020015260805181604001526005816060015280905020540560200280806020015990590160009052818152602081019050905060005b60208304811215610b1c578084015481602002830152600181019050610afb565b602083066020036101000a60000381850154168160200283015281905090509050905060206040820352602060208203510260400160408203f3505b637ab6ea8a811415610c765760043560605260243560805260a060a059905901600090526000815260605181602001526080518160400152600e81606001526000816080015280905020608060805990590160009052600081526060518160200152608051816040015260008160600152809050205460806080599059016000905260008152606051816020015260805181604001526005816060015280905020540560200280806020015990590160009052818152602081019050905060005b60208304811215610c3a578084015481602002830152600181019050610c19565b602083066020036101000a60000381850154168160200283015281905090509050905060206040820352602060208203510260400160408203f3505b632b810cb9811415610d945760043560605260243560805260a060a059905901600090526000815260605181602001526080518160400152600f81606001526000816080015280905020608060805990590160009052600081526060518160200152608051816040015260008160600152809050205460806080599059016000905260008152606051816020015260805181604001526005816060015280905020540560200280806020015990590160009052818152602081019050905060005b60208304811215610d58578084015481602002830152600181019050610d37565b602083066020036101000a60000381850154168160200283015281905090509050905060206040820352602060208203510260400160408203f3505b637fb42e46811415610e855760043560605260243560805260a060a059905901600090526000815260605181602001526080518160400152601081606001526000816080015280905020608060805990590160009052600081526060518160200152608051816040015260008160600152809050205460200280806020015990590160009052818152602081019050905060005b60208304811215610e49578084015481602002830152600181019050610e28565b602083066020036101000a60000381850154168160200283015281905090509050905060206040820352602060208203510260400160408203f3505b63734fa727811415610f765760043560605260243560805260a060a059905901600090526000815260605181602001526080518160400152601181606001526000816080015280905020608060805990590160009052600081526060518160200152608051816040015260008160600152809050205460200280806020015990590160009052818152602081019050905060005b60208304811215610f3a578084015481602002830152600181019050610f19565b602083066020036101000a60000381850154168160200283015281905090509050905060206040820352602060208203510260400160408203f3505b63c67fa8578114156110675760043560605260243560805260a060a059905901600090526000815260605181602001526080518160400152601281606001526000816080015280905020608060805990590160009052600081526060518160200152608051816040015260008160600152809050205460200280806020015990590160009052818152602081019050905060005b6020830481121561102b57808401548160200283015260018101905061100a565b602083066020036101000a60000381850154168160200283015281905090509050905060206040820352602060208203510260400160408203f3505b635ed853e48114156111855760043560605260243560805260a060a059905901600090526000815260605181602001526080518160400152601381606001526000816080015280905020608060805990590160009052600081526060518160200152608051816040015260008160600152809050205460806080599059016000905260008152606051816020015260805181604001526005816060015280905020540560200280806020015990590160009052818152602081019050905060005b60208304811215611149578084015481602002830152600181019050611128565b602083066020036101000a60000381850154168160200283015281905090509050905060206040820352602060208203510260400160408203f3505b63b86f51258114156112a35760043560605260243560805260a060a059905901600090526000815260605181602001526080518160400152601481606001526000816080015280905020608060805990590160009052600081526060518160200152608051816040015260008160600152809050205460806080599059016000905260008152606051816020015260805181604001526005816060015280905020540560200280806020015990590160009052818152602081019050905060005b60208304811215611267578084015481602002830152600181019050611246565b602083066020036101000a60000381850154168160200283015281905090509050905060206040820352602060208203510260400160408203f3505b63bc3d7d858114156113945760043560605260243560805260a060a059905901600090526000815260605181602001526080518160400152601581606001526000816080015280905020608060805990590160009052600081526060518160200152608051816040015260008160600152809050205460200280806020015990590160009052818152602081019050905060005b60208304811215611358578084015481602002830152600181019050611337565b602083066020036101000a60000381850154168160200283015281905090509050905060206040820352602060208203510260400160408203f3505b63a2302f2f81141561148157600435606052602435611680526044356116a0526116a05160a060a0599059016000905260008152606051816020015261168051816040015260018160600152608060805990590160009052600081526060518160200152611680518160400152600081606001528090502054816080015280905020556001608060805990590160009052600081526060518160200152611680518160400152600081606001528090502054016080608059905901600090526000815260605181602001526116805181604001526000816060015280905020556001611740526020611740f35b63058ca2bc8114156114dd576004356060526024356080526044356117605261176051608060805990590160009052600081526060518160200152608051816040015260028160600152809050205560016117a05260206117a0f35b635d3b965b8114156116175736599059016000905236600482376004356060526024356080526044356102805260643560208201016117e052608435611800525060c060c0599059016000905260008152606051816020015260805181604001526003816060015261028051816080015260008160a001528090502060206117e05103516020026020810460005b8181121561158c57806020026117e05101518482015560018101905061156b565b602083066020036101000a600003816020026117e05101511684820155505050506118005160806080599059016000905260008152606051816020015260805181604001526002816060015280905020540160806080599059016000905260008152606051816020015260805181604001526002816060015280905020556001611900526020611900f35b63b0e14f0f81141561167357600435606052602435608052604435611920526119205160806080599059016000905260008152606051816020015260805181604001526005816060015280905020556001611960526020611960f35b636acccdbc8114156117395736599059016000905236600482376004356060526024356080526044356020820101611980525060a060a05990590160009052600081526060518160200152608051816040015260068160600152600081608001528090502060206119805103516020026020810460005b8181121561170b5780602002611980510151848201556001810190506116ea565b602083066020036101000a600003816020026119805101511684820155505050506001611a40526020611a40f35b63a1fa51f98114156117ff5736599059016000905236600482376004356060526024356080526044356020820101611a60525060a060a0599059016000905260008152606051816020015260805181604001526007816060015260008160800152809050206020611a605103516020026020810460005b818112156117d15780602002611a60510151848201556001810190506117b0565b602083066020036101000a60000381602002611a605101511684820155505050506001611b20526020611b20f35b63cd87f43a8114156118c55736599059016000905236600482376004356060526024356080526044356020820101611b40525060a060a0599059016000905260008152606051816020015260805181604001526008816060015260008160800152809050206020611b405103516020026020810460005b818112156118975780602002611b4051015184820155600181019050611876565b602083066020036101000a60000381602002611b405101511684820155505050506001611c00526020611c00f35b63222a866381141561198b5736599059016000905236600482376004356060526024356080526044356020820101611c20525060a060a0599059016000905260008152606051816020015260805181604001526009816060015260008160800152809050206020611c205103516020026020810460005b8181121561195d5780602002611c205101518482015560018101905061193c565b602083066020036101000a60000381602002611c205101511684820155505050506001611ce0526020611ce0f35b63b39e1faa811415611a515736599059016000905236600482376004356060526024356080526044356020820101611d00525060a060a059905901600090526000815260605181602001526080518160400152600a816060015260008160800152809050206020611d005103516020026020810460005b81811215611a235780602002611d0051015184820155600181019050611a02565b602083066020036101000a60000381602002611d005101511684820155505050506001611dc0526020611dc0f35b63e365736b811415611b175736599059016000905236600482376004356060526024356080526044356020820101611de0525060a060a059905901600090526000815260605181602001526080518160400152600b816060015260008160800152809050206020611de05103516020026020810460005b81811215611ae95780602002611de051015184820155600181019050611ac8565b602083066020036101000a60000381602002611de05101511684820155505050506001611ea0526020611ea0f35b63aad7d6e3811415611b7357600435606052602435608052604435611ec052611ec0516080608059905901600090526000815260605181602001526080518160400152600c816060015280905020556001611f00526020611f00f35b6301112b27811415611c395736599059016000905236600482376004356060526024356080526044356020820101611f20525060a060a059905901600090526000815260605181602001526080518160400152600d816060015260008160800152809050206020611f205103516020026020810460005b81811215611c0b5780602002611f2051015184820155600181019050611bea565b602083066020036101000a60000381602002611f205101511684820155505050506001611fe0526020611fe0f35b63bdbb239b811415611cff5736599059016000905236600482376004356060526024356080526044356020820101612000525060a060a059905901600090526000815260605181602001526080518160400152600e8160600152600081608001528090502060206120005103516020026020810460005b81811215611cd1578060200261200051015184820155600181019050611cb0565b602083066020036101000a6000038160200261200051015116848201555050505060016120c05260206120c0f35b6305a0cd48811415611dc557365990590160009052366004823760043560605260243560805260443560208201016120e0525060a060a059905901600090526000815260605181602001526080518160400152600f8160600152600081608001528090502060206120e05103516020026020810460005b81811215611d9757806020026120e051015184820155600181019050611d76565b602083066020036101000a600003816020026120e051015116848201555050505060016121a05260206121a0f35b63aaa1fe35811415611e8b57365990590160009052366004823760043560605260243560805260443560208201016121c0525060a060a05990590160009052600081526060518160200152608051816040015260108160600152600081608001528090502060206121c05103516020026020810460005b81811215611e5d57806020026121c051015184820155600181019050611e3c565b602083066020036101000a600003816020026121c05101511684820155505050506001612280526020612280f35b632be4935d811415611f5157365990590160009052366004823760043560605260243560805260443560208201016122a0525060a060a05990590160009052600081526060518160200152608051816040015260118160600152600081608001528090502060206122a05103516020026020810460005b81811215611f2357806020026122a051015184820155600181019050611f02565b602083066020036101000a600003816020026122a05101511684820155505050506001612360526020612360f35b6313a8350d8114156120175736599059016000905236600482376004356060526024356080526044356020820101612380525060a060a05990590160009052600081526060518160200152608051816040015260128160600152600081608001528090502060206123805103516020026020810460005b81811215611fe9578060200261238051015184820155600181019050611fc8565b602083066020036101000a600003816020026123805101511684820155505050506001612440526020612440f35b63cb540b458114156120dd5736599059016000905236600482376004356060526024356080526044356020820101612460525060a060a05990590160009052600081526060518160200152608051816040015260138160600152600081608001528090502060206124605103516020026020810460005b818112156120af57806020026124605101518482015560018101905061208e565b602083066020036101000a600003816020026124605101511684820155505050506001612520526020612520f35b63be0306278114156121a35736599059016000905236600482376004356060526024356080526044356020820101612540525060a060a05990590160009052600081526060518160200152608051816040015260148160600152600081608001528090502060206125405103516020026020810460005b81811215612175578060200261254051015184820155600181019050612154565b602083066020036101000a600003816020026125405101511684820155505050506001612600526020612600f35b6383fd77f08114156122695736599059016000905236600482376004356060526024356080526044356020820101612620525060a060a05990590160009052600081526060518160200152608051816040015260158160600152600081608001528090502060206126205103516020026020810460005b8181121561223b57806020026126205101518482015560018101905061221a565b602083066020036101000a6000038160200261262051015116848201555050505060016126e05260206126e0f35b63594622058114156122d5576004356060526024356080526044356103c052606435612700526127005160a060a059905901600090526000815260605181602001526080518160400152600481606001526103c051816080015280905020556001612740526020612740f35b63bb8e419681141561244857600435606052602435612760526044356127805260006127a0525b6080608059905901600090526000815260605181602001526001612760510381604001526000816060015280905020546127a051121561243b5760a060a05990590160009052600081526060518160200152600161276051038160400152600181606001526127a0518160800152809050205460a060a05990590160009052600081526060518160200152612780518160400152600181606001526080608059905901600090526000815260605181602001526127805181604001526000816060015280905020548160800152809050205560016080608059905901600090526000815260605181602001526127805181604001526000816060015280905020540160806080599059016000905260008152606051816020015261278051816040015260008160600152809050205560016127a051016127a0526122fc565b6001612880526020612880f35b50 # noqa: E501 - contract_5 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE8(offset=0x289F, value=0x0) + # 0x600061067f537c010000000000000000000000000000000000000000000000000000000060003504632f300bee8114156100ac576004356040526024356060526044356080526002608051018080602002602001599059016000905281815260208101905090506801000000000000000081526060516080516020028201526001604051036001608051016020028201528060206040820352602060208203510260400160408203f35050505b63a647a5b98114156102c85736599059016000905236600482376004356020820101610100526024356020820101610160526044356020820101610180526064356101a05260843560805250602061010051035180806020026020015990590160009052818152602081019050905060005b6101a0518112156101d557600060005b608051811215610162578060200261010051015181608051850201602002610160510151028201915060018101905061012e565b50680100000000000000008105905060005b6080518112156101c857700100000000000000000000000000000000836020026101805101518260805186020160200261016051015184020205816020028501510381602002850152600181019050610174565b505060018101905061011e565b50600060005b60805181121561020357806020028301518160200284015102820191506001810190506101db565b5068010000000000000000810590506002810560005b600b81121561024257600282680100000000000000008502058301059150600181019050610219565b5060005b60805181121561027657816801000000000000000082602002860151020581602002850152600181019050610246565b5050506001608051602002610100510151036080516020028201526001608051016020026101005101516001608051016020028201528060206040820352602060208203510260400160408203f35050505b635b18022981141561037957365990590160009052366004823760043560208201016103005260243560208201016103205260443560805250600060005b60805181121561033f57680100000000000000008160200261032051015182602002610300510151020582019150600181019050610306565b6000610320515114151561036657610320515168010000000000000000830205915061036b565b600091505b81610380526020610380f350505b63f4ca7dc481141561057157365990590160009052366004823760043560208201016103a05260243560208201016103c0526044356101a0526064356080525060206103c051035160026080510a806020026020015990590160009052818152602081019050905060005b60805181121561044d5760005b6080518112156104415768010000000000000000816020026103a0510151836020026103a051015102058160805184020160200284015101816080518402016020028401526001810190506103f1565b506001810190506103e4565b81905090508180602002602001599059016000905281815260208101905090506080516101a05102806020026020015990590160009052818152602081019050905060005b6101a05181121561051e5760005b6080518112156105125760005b608051811215610506576801000000000000000082608051830201602002870151826080518602016020026103c051015102058260805185020160200285015101826080518502016020028501526001810190506104ad565b506001810190506104a0565b50600181019050610492565b819050905060005b848112156105525780602002820151816020026103c05101510381602002840152600181019050610526565b508160206040820352602060208203510260400160408203f350505050505b63232b273481141561069d57365990590160009052366004823760043560208201016106205260243560208201016102805260443560208201016103c052606435610640526084356101a05260a435608052506000610280515112156106025760005b6080518112156106005780602002610280510151600003816020026102805101526001810190506105d4565b505b60005b6101a05181121561067f5760005b60805181121561067357680100000000000000006801000000000000000082602002610280510151610640510205826080518502016020026103c05101510205826020026106205101510182602002610620510152600181019050610613565b50600181019050610605565b6106205160206040820352602060208203510260400160408203f350505b50 # noqa: E501 + contract_11 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE8(offset=0x67F, value=0x0) + Op.DIV( Op.CALLDATALOAD(offset=0x0), 0x100000000000000000000000000000000000000000000000000000000, ) - + Op.MSTORE( - offset=0x20, value=0xC9AE5868651BF7B7DB6E360217DB49CE4E69C07E + + Op.JUMPI( + pc=Op.PUSH2[0xAC], condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x2F300BEE)) ) - + Op.JUMPI(pc=0x127, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0xC4982A85))) - + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) - + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) - + Op.PUSH1[0x80] * 2 - + Op.MSIZE - + Op.SWAP1 - + Op.MSIZE - + Op.ADD - + Op.PUSH1[0x0] - + Op.SWAP1 - + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x0) + + Op.MSTORE(offset=0x40, value=Op.CALLDATALOAD(offset=0x4)) + + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x24)) + + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x44)) + + Op.ADD(Op.MLOAD(offset=0x80), 0x2) + Op.DUP1 - + Op.SWAP1 - + Op.POP - + Op.MSTORE(offset=0xA0, value=Op.SLOAD(key=Op.SHA3)) - + Op.MLOAD(offset=0xA0) + Op.ADD(0x20, Op.MUL(0x20, Op.DUP1)) + Op.MSIZE + Op.SWAP1 @@ -144,42 +138,18 @@ def test_block504980( + Op.POP + Op.SWAP1 + Op.POP - + Op.PUSH1[0xE0] - + Op.MSTORE - + Op.MSTORE(offset=0x140, value=0x0) - + Op.JUMPDEST - + Op.JUMPI( - pc=0x10B, - condition=Op.ISZERO( - Op.SLT(Op.MLOAD(offset=0x140), Op.MLOAD(offset=0xA0)) - ), + + Op.MSTORE(offset=Op.DUP2, value=0x10000000000000000) + + Op.MSTORE( + offset=Op.ADD(Op.DUP3, Op.MUL(0x20, Op.MLOAD(offset=0x80))), + value=Op.MLOAD(offset=0x60), ) - + Op.PUSH1[0xA0] * 2 - + Op.MSIZE - + Op.SWAP1 - + Op.MSIZE - + Op.ADD - + Op.PUSH1[0x0] - + Op.SWAP1 - + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x1) - + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=Op.MLOAD(offset=0x140)) - + Op.DUP1 - + Op.SWAP1 - + Op.POP + Op.MSTORE( offset=Op.ADD( - Op.MLOAD(offset=0xE0), Op.MUL(0x20, Op.MLOAD(offset=0x140)) + Op.DUP3, Op.MUL(0x20, Op.ADD(Op.MLOAD(offset=0x80), 0x1)) ), - value=Op.SLOAD(key=Op.SHA3), + value=Op.SUB(Op.MLOAD(offset=0x40), 0x1), ) - + Op.MSTORE(offset=0x140, value=Op.ADD(Op.MLOAD(offset=0x140), 0x1)) - + Op.JUMP(pc=Op.PUSH2[0xAD]) - + Op.JUMPDEST - + Op.MLOAD(offset=0xE0) + + Op.DUP1 + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x40), value=0x20) + Op.RETURN( offset=Op.SUB(Op.DUP3, 0x40), @@ -187,96 +157,10 @@ def test_block504980( 0x40, Op.MUL(Op.MLOAD(offset=Op.SUB(Op.DUP3, 0x20)), 0x20) ), ) - + Op.POP - + Op.JUMPDEST - + Op.JUMPI(pc=0x176, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0xCC1C944E))) - + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) - + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) - + Op.PUSH1[0x80] * 2 - + Op.MSIZE - + Op.SWAP1 - + Op.MSIZE - + Op.ADD - + Op.PUSH1[0x0] - + Op.SWAP1 - + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x0) - + Op.DUP1 - + Op.SWAP1 - + Op.POP - + Op.MSTORE(offset=0x1A0, value=Op.SLOAD(key=Op.SHA3)) - + Op.RETURN(offset=0x1A0, size=0x20) - + Op.JUMPDEST - + Op.JUMPI(pc=0x1D5, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x95A405B9))) - + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) - + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) - + Op.MSTORE(offset=0x1E0, value=Op.CALLDATALOAD(offset=0x44)) - + Op.PUSH1[0xA0] * 2 - + Op.MSIZE - + Op.SWAP1 - + Op.MSIZE - + Op.ADD - + Op.PUSH1[0x0] - + Op.SWAP1 - + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x1) - + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=Op.MLOAD(offset=0x1E0)) - + Op.DUP1 - + Op.SWAP1 - + Op.POP - + Op.MSTORE(offset=0x200, value=Op.SLOAD(key=Op.SHA3)) - + Op.RETURN(offset=0x200, size=0x20) - + Op.JUMPDEST - + Op.JUMPI(pc=0x224, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x71EBB662))) - + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) - + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) - + Op.PUSH1[0x80] * 2 - + Op.MSIZE - + Op.SWAP1 - + Op.MSIZE - + Op.ADD - + Op.PUSH1[0x0] - + Op.SWAP1 - + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x2) - + Op.DUP1 - + Op.SWAP1 - + Op.POP - + Op.MSTORE(offset=0x240, value=Op.SLOAD(key=Op.SHA3)) - + Op.RETURN(offset=0x240, size=0x20) + + Op.POP * 3 + Op.JUMPDEST - + Op.JUMPI(pc=0x325, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x7A57A3DB))) - + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) - + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) - + Op.MSTORE(offset=0x280, value=Op.CALLDATALOAD(offset=0x44)) - + Op.PUSH1[0xC0] * 2 - + Op.MSIZE - + Op.SWAP1 - + Op.MSIZE - + Op.ADD - + Op.PUSH1[0x0] - + Op.SWAP1 - + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x3) - + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=Op.MLOAD(offset=0x280)) - + Op.MSTORE(offset=Op.ADD(0xA0, Op.DUP2), value=0x0) - + Op.DUP1 - + Op.SWAP1 - + Op.POP - + Op.SHA3 - + Op.PUSH1[0x80] * 2 + + Op.JUMPI(pc=0x2C8, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0xA647A5B9))) + + Op.CALLDATASIZE + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -284,16 +168,27 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x0) - + Op.DUP1 - + Op.SWAP1 + + Op.CALLDATACOPY( + dest_offset=Op.DUP3, offset=0x4, size=Op.CALLDATASIZE + ) + + Op.MSTORE( + offset=0x100, + value=Op.ADD(Op.ADD(Op.DUP3, 0x20), Op.CALLDATALOAD(offset=0x4)), + ) + + Op.MSTORE( + offset=0x160, + value=Op.ADD(Op.ADD(Op.DUP3, 0x20), Op.CALLDATALOAD(offset=0x24)), + ) + + Op.MSTORE( + offset=0x180, + value=Op.ADD(Op.ADD(Op.DUP3, 0x20), Op.CALLDATALOAD(offset=0x44)), + ) + + Op.MSTORE(offset=0x1A0, value=Op.CALLDATALOAD(offset=0x64)) + + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x84)) + Op.POP - + Op.MUL(0x20, Op.SLOAD(key=Op.SHA3)) + + Op.MLOAD(offset=Op.SUB(Op.MLOAD(offset=0x100), 0x20)) + Op.DUP1 - + Op.ADD(0x20, Op.DUP1) + + Op.ADD(0x20, Op.MUL(0x20, Op.DUP1)) + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -310,198 +205,186 @@ def test_block504980( + Op.PUSH1[0x0] + Op.JUMPDEST + Op.JUMPI( - pc=0x2E9, - condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.DIV(Op.DUP4, 0x20))), - ) - + Op.MSTORE( - offset=Op.ADD(Op.DUP4, Op.MUL(0x20, Op.DUP2)), - value=Op.SLOAD(key=Op.ADD(Op.DUP5, Op.DUP1)), + pc=0x1D5, + condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.MLOAD(offset=0x1A0))), ) - + Op.ADD(Op.DUP2, 0x1) - + Op.SWAP1 - + Op.POP - + Op.JUMP(pc=0x2C8) + + Op.PUSH1[0x0] * 2 + Op.JUMPDEST - + Op.MSTORE( - offset=Op.ADD(Op.DUP4, Op.MUL(0x20, Op.DUP2)), - value=Op.AND( - Op.SLOAD(key=Op.ADD(Op.DUP6, Op.DUP2)), - Op.SUB( - 0x0, Op.EXP(0x100, Op.SUB(0x20, Op.MOD(Op.DUP4, 0x20))) + + Op.JUMPI( + pc=0x162, + condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.MLOAD(offset=0x80))), + ) + + Op.ADD( + Op.DUP3, + Op.MUL( + Op.MLOAD( + offset=Op.ADD( + Op.MLOAD(offset=0x160), + Op.MUL( + 0x20, + Op.ADD( + Op.MUL(Op.DUP6, Op.MLOAD(offset=0x80)), Op.DUP2 + ), + ), + ) + ), + Op.MLOAD( + offset=Op.ADD( + Op.MLOAD(offset=0x100), Op.MUL(0x20, Op.DUP1) + ) ), ), ) - + Op.DUP2 - + Op.SWAP1 + + Op.SWAP2 + Op.POP + + Op.ADD(Op.DUP2, 0x1) + Op.SWAP1 + Op.POP - + Op.SWAP1 + + Op.JUMP(pc=0x12E) + + Op.JUMPDEST + Op.POP + + Op.SDIV(Op.DUP2, 0x10000000000000000) + Op.SWAP1 + Op.POP - + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x40), value=0x20) - + Op.RETURN( - offset=Op.SUB(Op.DUP3, 0x40), - size=Op.ADD( - 0x40, Op.MUL(Op.MLOAD(offset=Op.SUB(Op.DUP3, 0x20)), 0x20) - ), - ) - + Op.POP - + Op.JUMPDEST - + Op.JUMPI(pc=0x394, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0xF73DC690))) - + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) - + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) - + Op.MSTORE(offset=0x3C0, value=Op.CALLDATALOAD(offset=0x44)) - + Op.MSTORE(offset=0x3E0, value=Op.CALLDATALOAD(offset=0x64)) - + Op.PUSH1[0xC0] * 2 - + Op.MSIZE - + Op.SWAP1 - + Op.MSIZE - + Op.ADD + Op.PUSH1[0x0] - + Op.SWAP1 - + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x3) - + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=Op.MLOAD(offset=0x3C0)) - + Op.MSTORE(offset=Op.ADD(0xA0, Op.DUP2), value=Op.MLOAD(offset=0x3E0)) - + Op.DUP1 + + Op.JUMPDEST + + Op.JUMPI( + pc=0x1C8, + condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.MLOAD(offset=0x80))), + ) + + Op.MSTORE( + offset=Op.ADD(Op.DUP6, Op.MUL(0x20, Op.DUP2)), + value=Op.SUB( + Op.MLOAD(offset=Op.ADD(Op.DUP6, Op.MUL(0x20, Op.DUP2))), + Op.SDIV( + Op.MUL( + Op.MUL( + Op.DUP5, + Op.MLOAD( + offset=Op.ADD( + Op.MLOAD(offset=0x160), + Op.MUL( + 0x20, + Op.ADD( + Op.MUL( + Op.DUP7, Op.MLOAD(offset=0x80) + ), + Op.DUP3, + ), + ), + ) + ), + ), + Op.MLOAD( + offset=Op.ADD( + Op.MLOAD(offset=0x180), Op.MUL(0x20, Op.DUP4) + ) + ), + ), + 0x100000000000000000000000000000000, + ), + ), + ) + + Op.ADD(Op.DUP2, 0x1) + Op.SWAP1 + Op.POP - + Op.MSTORE(offset=0x400, value=Op.SLOAD(key=Op.SHA3)) - + Op.RETURN(offset=0x400, size=0x20) + + Op.JUMP(pc=0x174) + Op.JUMPDEST - + Op.JUMPI(pc=0x3F3, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x54CC6109))) - + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) - + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) - + Op.MSTORE(offset=0x3C0, value=Op.CALLDATALOAD(offset=0x44)) - + Op.PUSH1[0xA0] * 2 - + Op.MSIZE - + Op.SWAP1 - + Op.MSIZE - + Op.ADD - + Op.PUSH1[0x0] - + Op.SWAP1 - + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x4) - + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=Op.MLOAD(offset=0x3C0)) - + Op.DUP1 + + Op.POP * 2 + + Op.ADD(Op.DUP2, 0x1) + Op.SWAP1 + Op.POP - + Op.MSTORE(offset=0x440, value=Op.SLOAD(key=Op.SHA3)) - + Op.RETURN(offset=0x440, size=0x20) + + Op.JUMP(pc=0x11E) + Op.JUMPDEST - + Op.JUMPI(pc=0x442, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0xC63EF546))) - + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) - + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) - + Op.PUSH1[0x80] * 2 - + Op.MSIZE - + Op.SWAP1 - + Op.MSIZE - + Op.ADD - + Op.PUSH1[0x0] - + Op.SWAP1 - + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x5) - + Op.DUP1 - + Op.SWAP1 + Op.POP - + Op.MSTORE(offset=0x480, value=Op.SLOAD(key=Op.SHA3)) - + Op.RETURN(offset=0x480, size=0x20) + + Op.PUSH1[0x0] * 2 + Op.JUMPDEST - + Op.JUMPI(pc=0x533, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x9381779B))) - + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) - + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) - + Op.PUSH1[0xA0] * 2 - + Op.MSIZE - + Op.SWAP1 - + Op.MSIZE - + Op.ADD - + Op.PUSH1[0x0] - + Op.SWAP1 - + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x6) - + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x0) - + Op.DUP1 - + Op.SWAP1 + + Op.JUMPI( + pc=0x203, + condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.MLOAD(offset=0x80))), + ) + + Op.ADD( + Op.DUP3, + Op.MUL( + Op.MLOAD(offset=Op.ADD(Op.DUP5, Op.MUL(0x20, Op.DUP2))), + Op.MLOAD(offset=Op.ADD(Op.DUP4, Op.MUL(0x20, Op.DUP1))), + ), + ) + + Op.SWAP2 + Op.POP - + Op.SHA3 - + Op.PUSH1[0x80] * 2 - + Op.MSIZE - + Op.SWAP1 - + Op.MSIZE - + Op.ADD - + Op.PUSH1[0x0] - + Op.SWAP1 - + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x5) - + Op.DUP1 + + Op.ADD(Op.DUP2, 0x1) + Op.SWAP1 + Op.POP - + Op.MUL(0x20, Op.SLOAD(key=Op.SHA3)) - + Op.DUP1 - + Op.ADD(0x20, Op.DUP1) - + Op.MSIZE + + Op.JUMP(pc=0x1DB) + + Op.JUMPDEST + + Op.POP + + Op.SDIV(Op.DUP2, 0x10000000000000000) + Op.SWAP1 - + Op.MSIZE - + Op.ADD + + Op.POP + + Op.SDIV(Op.DUP2, 0x2) + Op.PUSH1[0x0] - + Op.SWAP1 - + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=Op.DUP2) - + Op.ADD(Op.DUP2, 0x20) - + Op.SWAP1 + + Op.JUMPDEST + + Op.JUMPI(pc=0x242, condition=Op.ISZERO(Op.SLT(Op.DUP2, 0xB))) + + Op.SDIV( + Op.ADD( + Op.DUP4, Op.SDIV(Op.MUL(Op.DUP6, 0x10000000000000000), Op.DUP3) + ), + 0x2, + ) + + Op.SWAP2 + Op.POP + + Op.ADD(Op.DUP2, 0x1) + Op.SWAP1 + Op.POP + + Op.JUMP(pc=0x219) + + Op.JUMPDEST + + Op.POP + Op.PUSH1[0x0] + Op.JUMPDEST + Op.JUMPI( - pc=0x4F7, - condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.DIV(Op.DUP4, 0x20))), + pc=0x276, + condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.MLOAD(offset=0x80))), ) + Op.MSTORE( - offset=Op.ADD(Op.DUP4, Op.MUL(0x20, Op.DUP2)), - value=Op.SLOAD(key=Op.ADD(Op.DUP5, Op.DUP1)), + offset=Op.ADD(Op.DUP6, Op.MUL(0x20, Op.DUP2)), + value=Op.SDIV( + Op.MUL( + Op.MLOAD(offset=Op.ADD(Op.DUP7, Op.MUL(0x20, Op.DUP3))), + 0x10000000000000000, + ), + Op.DUP2, + ), ) + Op.ADD(Op.DUP2, 0x1) + Op.SWAP1 + Op.POP - + Op.JUMP(pc=0x4D6) + + Op.JUMP(pc=0x246) + Op.JUMPDEST + + Op.POP * 3 + Op.MSTORE( - offset=Op.ADD(Op.DUP4, Op.MUL(0x20, Op.DUP2)), - value=Op.AND( - Op.SLOAD(key=Op.ADD(Op.DUP6, Op.DUP2)), - Op.SUB( - 0x0, Op.EXP(0x100, Op.SUB(0x20, Op.MOD(Op.DUP4, 0x20))) + offset=Op.ADD(Op.DUP3, Op.MUL(0x20, Op.MLOAD(offset=0x80))), + value=Op.SUB( + Op.MLOAD( + offset=Op.ADD( + Op.MLOAD(offset=0x100), + Op.MUL(0x20, Op.MLOAD(offset=0x80)), + ) ), + 0x1, ), ) - + Op.DUP2 - + Op.SWAP1 - + Op.POP - + Op.SWAP1 - + Op.POP - + Op.SWAP1 - + Op.POP - + Op.SWAP1 - + Op.POP + + Op.MSTORE( + offset=Op.ADD( + Op.DUP3, Op.MUL(0x20, Op.ADD(Op.MLOAD(offset=0x80), 0x1)) + ), + value=Op.MLOAD( + offset=Op.ADD( + Op.MLOAD(offset=0x100), + Op.MUL(0x20, Op.ADD(Op.MLOAD(offset=0x80), 0x1)), + ) + ), + ) + + Op.DUP1 + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x40), value=0x20) + Op.RETURN( offset=Op.SUB(Op.DUP3, 0x40), @@ -509,29 +392,10 @@ def test_block504980( 0x40, Op.MUL(Op.MLOAD(offset=Op.SUB(Op.DUP3, 0x20)), 0x20) ), ) - + Op.POP + + Op.POP * 3 + Op.JUMPDEST - + Op.JUMPI(pc=0x624, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x4F9C6EEB))) - + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) - + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) - + Op.PUSH1[0xA0] * 2 - + Op.MSIZE - + Op.SWAP1 - + Op.MSIZE - + Op.ADD - + Op.PUSH1[0x0] - + Op.SWAP1 - + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x7) - + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x0) - + Op.DUP1 - + Op.SWAP1 - + Op.POP - + Op.SHA3 - + Op.PUSH1[0x80] * 2 + + Op.JUMPI(pc=0x379, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x5B180229))) + + Op.CALLDATASIZE + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -539,92 +403,74 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x5) - + Op.DUP1 - + Op.SWAP1 - + Op.POP - + Op.MUL(0x20, Op.SLOAD(key=Op.SHA3)) - + Op.DUP1 - + Op.ADD(0x20, Op.DUP1) - + Op.MSIZE - + Op.SWAP1 - + Op.MSIZE - + Op.ADD - + Op.PUSH1[0x0] - + Op.SWAP1 - + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=Op.DUP2) - + Op.ADD(Op.DUP2, 0x20) - + Op.SWAP1 - + Op.POP - + Op.SWAP1 - + Op.POP - + Op.PUSH1[0x0] - + Op.JUMPDEST - + Op.JUMPI( - pc=0x5E8, - condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.DIV(Op.DUP4, 0x20))), + + Op.CALLDATACOPY( + dest_offset=Op.DUP3, offset=0x4, size=Op.CALLDATASIZE ) + Op.MSTORE( - offset=Op.ADD(Op.DUP4, Op.MUL(0x20, Op.DUP2)), - value=Op.SLOAD(key=Op.ADD(Op.DUP5, Op.DUP1)), + offset=0x300, + value=Op.ADD(Op.ADD(Op.DUP3, 0x20), Op.CALLDATALOAD(offset=0x4)), ) - + Op.ADD(Op.DUP2, 0x1) - + Op.SWAP1 + + Op.MSTORE( + offset=0x320, + value=Op.ADD(Op.ADD(Op.DUP3, 0x20), Op.CALLDATALOAD(offset=0x24)), + ) + + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x44)) + Op.POP - + Op.JUMP(pc=0x5C7) + + Op.PUSH1[0x0] * 2 + Op.JUMPDEST - + Op.MSTORE( - offset=Op.ADD(Op.DUP4, Op.MUL(0x20, Op.DUP2)), - value=Op.AND( - Op.SLOAD(key=Op.ADD(Op.DUP6, Op.DUP2)), - Op.SUB( - 0x0, Op.EXP(0x100, Op.SUB(0x20, Op.MOD(Op.DUP4, 0x20))) + + Op.JUMPI( + pc=0x33F, + condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.MLOAD(offset=0x80))), + ) + + Op.ADD( + Op.DUP3, + Op.SDIV( + Op.MUL( + Op.MLOAD( + offset=Op.ADD( + Op.MLOAD(offset=0x300), Op.MUL(0x20, Op.DUP3) + ) + ), + Op.MLOAD( + offset=Op.ADD( + Op.MLOAD(offset=0x320), Op.MUL(0x20, Op.DUP2) + ) + ), ), + 0x10000000000000000, ), ) - + Op.DUP2 - + Op.SWAP1 - + Op.POP - + Op.SWAP1 - + Op.POP - + Op.SWAP1 + + Op.SWAP2 + Op.POP + + Op.ADD(Op.DUP2, 0x1) + Op.SWAP1 + Op.POP - + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x40), value=0x20) - + Op.RETURN( - offset=Op.SUB(Op.DUP3, 0x40), - size=Op.ADD( - 0x40, Op.MUL(Op.MLOAD(offset=Op.SUB(Op.DUP3, 0x20)), 0x20) + + Op.JUMP(pc=0x306) + + Op.JUMPDEST + + Op.JUMPI( + pc=0x366, + condition=Op.ISZERO( + Op.ISZERO(Op.EQ(Op.MLOAD(offset=Op.MLOAD(offset=0x320)), 0x0)) ), ) + + Op.SDIV( + Op.MUL(Op.DUP4, 0x10000000000000000), + Op.MLOAD(offset=Op.MLOAD(offset=0x320)), + ) + + Op.SWAP2 + Op.POP + + Op.JUMP(pc=0x36B) + Op.JUMPDEST - + Op.JUMPI(pc=0x715, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x7DC12195))) - + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) - + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) - + Op.PUSH1[0xA0] * 2 - + Op.MSIZE - + Op.SWAP1 - + Op.MSIZE - + Op.ADD + Op.PUSH1[0x0] - + Op.SWAP1 - + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x8) - + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x0) - + Op.DUP1 - + Op.SWAP1 + + Op.SWAP2 + Op.POP - + Op.SHA3 - + Op.PUSH1[0x80] * 2 + + Op.JUMPDEST + + Op.MSTORE(offset=0x380, value=Op.DUP2) + + Op.RETURN(offset=0x380, size=0x20) + + Op.POP * 2 + + Op.JUMPDEST + + Op.JUMPI(pc=0x571, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0xF4CA7DC4))) + + Op.CALLDATASIZE + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -632,16 +478,23 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x5) - + Op.DUP1 - + Op.SWAP1 + + Op.CALLDATACOPY( + dest_offset=Op.DUP3, offset=0x4, size=Op.CALLDATASIZE + ) + + Op.MSTORE( + offset=0x3A0, + value=Op.ADD(Op.ADD(Op.DUP3, 0x20), Op.CALLDATALOAD(offset=0x4)), + ) + + Op.MSTORE( + offset=0x3C0, + value=Op.ADD(Op.ADD(Op.DUP3, 0x20), Op.CALLDATALOAD(offset=0x24)), + ) + + Op.MSTORE(offset=0x1A0, value=Op.CALLDATALOAD(offset=0x44)) + + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x64)) + Op.POP - + Op.MUL(0x20, Op.SLOAD(key=Op.SHA3)) - + Op.DUP1 - + Op.ADD(0x20, Op.DUP1) + + Op.MLOAD(offset=Op.SUB(Op.MLOAD(offset=0x3C0), 0x20)) + + Op.EXP(Op.MLOAD(offset=0x80), 0x2) + + Op.ADD(0x20, Op.MUL(0x20, Op.DUP1)) + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -658,49 +511,70 @@ def test_block504980( + Op.PUSH1[0x0] + Op.JUMPDEST + Op.JUMPI( - pc=0x6D9, - condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.DIV(Op.DUP4, 0x20))), - ) - + Op.MSTORE( - offset=Op.ADD(Op.DUP4, Op.MUL(0x20, Op.DUP2)), - value=Op.SLOAD(key=Op.ADD(Op.DUP5, Op.DUP1)), + pc=0x44D, + condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.MLOAD(offset=0x80))), ) - + Op.ADD(Op.DUP2, 0x1) - + Op.SWAP1 - + Op.POP - + Op.JUMP(pc=0x6B8) + + Op.PUSH1[0x0] + Op.JUMPDEST + + Op.JUMPI( + pc=0x441, + condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.MLOAD(offset=0x80))), + ) + Op.MSTORE( - offset=Op.ADD(Op.DUP4, Op.MUL(0x20, Op.DUP2)), - value=Op.AND( - Op.SLOAD(key=Op.ADD(Op.DUP6, Op.DUP2)), - Op.SUB( - 0x0, Op.EXP(0x100, Op.SUB(0x20, Op.MOD(Op.DUP4, 0x20))) + offset=Op.ADD( + Op.DUP5, + Op.MUL( + 0x20, + Op.ADD(Op.MUL(Op.DUP5, Op.MLOAD(offset=0x80)), Op.DUP2), + ), + ), + value=Op.ADD( + Op.MLOAD( + offset=Op.ADD( + Op.DUP5, + Op.MUL( + 0x20, + Op.ADD( + Op.MUL(Op.DUP5, Op.MLOAD(offset=0x80)), Op.DUP2 + ), + ), + ) + ), + Op.SDIV( + Op.MUL( + Op.MLOAD( + offset=Op.ADD( + Op.MLOAD(offset=0x3A0), Op.MUL(0x20, Op.DUP4) + ) + ), + Op.MLOAD( + offset=Op.ADD( + Op.MLOAD(offset=0x3A0), Op.MUL(0x20, Op.DUP2) + ) + ), + ), + 0x10000000000000000, ), ), ) - + Op.DUP2 + + Op.ADD(Op.DUP2, 0x1) + Op.SWAP1 + Op.POP - + Op.SWAP1 + + Op.JUMP(pc=0x3F1) + + Op.JUMPDEST + Op.POP + + Op.ADD(Op.DUP2, 0x1) + Op.SWAP1 + Op.POP + + Op.JUMP(pc=0x3E4) + + Op.JUMPDEST + + Op.DUP2 + Op.SWAP1 + Op.POP - + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x40), value=0x20) - + Op.RETURN( - offset=Op.SUB(Op.DUP3, 0x40), - size=Op.ADD( - 0x40, Op.MUL(Op.MLOAD(offset=Op.SUB(Op.DUP3, 0x20)), 0x20) - ), - ) + + Op.SWAP1 + Op.POP - + Op.JUMPDEST - + Op.JUMPI(pc=0x806, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0xFA9832D1))) - + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) - + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) - + Op.PUSH1[0xA0] * 2 + + Op.DUP2 + + Op.ADD(0x20, Op.MUL(0x20, Op.DUP1)) + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -708,33 +582,14 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x9) - + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x0) - + Op.DUP1 + + Op.MSTORE(offset=Op.DUP2, value=Op.DUP2) + + Op.ADD(Op.DUP2, 0x20) + Op.SWAP1 + Op.POP - + Op.SHA3 - + Op.PUSH1[0x80] * 2 - + Op.MSIZE - + Op.SWAP1 - + Op.MSIZE - + Op.ADD - + Op.PUSH1[0x0] - + Op.SWAP1 - + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x0) - + Op.DUP1 + Op.SWAP1 + Op.POP - + Op.MUL(0x20, Op.SLOAD(key=Op.SHA3)) - + Op.DUP1 - + Op.ADD(0x20, Op.DUP1) + + Op.MUL(Op.MLOAD(offset=0x1A0), Op.MLOAD(offset=0x80)) + + Op.ADD(0x20, Op.MUL(0x20, Op.DUP1)) + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -751,129 +606,115 @@ def test_block504980( + Op.PUSH1[0x0] + Op.JUMPDEST + Op.JUMPI( - pc=0x7CA, - condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.DIV(Op.DUP4, 0x20))), + pc=0x51E, + condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.MLOAD(offset=0x1A0))), ) - + Op.MSTORE( - offset=Op.ADD(Op.DUP4, Op.MUL(0x20, Op.DUP2)), - value=Op.SLOAD(key=Op.ADD(Op.DUP5, Op.DUP1)), + + Op.PUSH1[0x0] + + Op.JUMPDEST + + Op.JUMPI( + pc=0x512, + condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.MLOAD(offset=0x80))), ) - + Op.ADD(Op.DUP2, 0x1) - + Op.SWAP1 - + Op.POP - + Op.JUMP(pc=0x7A9) + + Op.PUSH1[0x0] + Op.JUMPDEST + + Op.JUMPI( + pc=0x506, + condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.MLOAD(offset=0x80))), + ) + Op.MSTORE( - offset=Op.ADD(Op.DUP4, Op.MUL(0x20, Op.DUP2)), - value=Op.AND( - Op.SLOAD(key=Op.ADD(Op.DUP6, Op.DUP2)), - Op.SUB( - 0x0, Op.EXP(0x100, Op.SUB(0x20, Op.MOD(Op.DUP4, 0x20))) + offset=Op.ADD( + Op.DUP6, + Op.MUL( + 0x20, + Op.ADD(Op.MUL(Op.DUP6, Op.MLOAD(offset=0x80)), Op.DUP3), + ), + ), + value=Op.ADD( + Op.MLOAD( + offset=Op.ADD( + Op.DUP6, + Op.MUL( + 0x20, + Op.ADD( + Op.MUL(Op.DUP6, Op.MLOAD(offset=0x80)), Op.DUP3 + ), + ), + ) + ), + Op.SDIV( + Op.MUL( + Op.MLOAD( + offset=Op.ADD( + Op.MLOAD(offset=0x3C0), + Op.MUL( + 0x20, + Op.ADD( + Op.MUL(Op.DUP7, Op.MLOAD(offset=0x80)), + Op.DUP3, + ), + ), + ) + ), + Op.MLOAD( + offset=Op.ADD( + Op.DUP8, + Op.MUL( + 0x20, + Op.ADD( + Op.MUL(Op.DUP4, Op.MLOAD(offset=0x80)), + Op.DUP3, + ), + ), + ) + ), + ), + 0x10000000000000000, ), ), ) - + Op.DUP2 - + Op.SWAP1 - + Op.POP + + Op.ADD(Op.DUP2, 0x1) + Op.SWAP1 + Op.POP - + Op.SWAP1 + + Op.JUMP(pc=0x4AD) + + Op.JUMPDEST + Op.POP + + Op.ADD(Op.DUP2, 0x1) + Op.SWAP1 + Op.POP - + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x40), value=0x20) - + Op.RETURN( - offset=Op.SUB(Op.DUP3, 0x40), - size=Op.ADD( - 0x40, Op.MUL(Op.MLOAD(offset=Op.SUB(Op.DUP3, 0x20)), 0x20) - ), - ) - + Op.POP + + Op.JUMP(pc=0x4A0) + Op.JUMPDEST - + Op.JUMPI(pc=0x8F7, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x2C5A40D5))) - + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) - + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) - + Op.PUSH1[0xA0] * 2 - + Op.MSIZE - + Op.SWAP1 - + Op.MSIZE - + Op.ADD - + Op.PUSH1[0x0] - + Op.SWAP1 - + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0xA) - + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x0) - + Op.DUP1 - + Op.SWAP1 + Op.POP - + Op.SHA3 - + Op.PUSH1[0x80] * 2 - + Op.MSIZE - + Op.SWAP1 - + Op.MSIZE - + Op.ADD - + Op.PUSH1[0x0] - + Op.SWAP1 - + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x5) - + Op.DUP1 + + Op.ADD(Op.DUP2, 0x1) + Op.SWAP1 + Op.POP - + Op.MUL(0x20, Op.SLOAD(key=Op.SHA3)) - + Op.DUP1 - + Op.ADD(0x20, Op.DUP1) - + Op.MSIZE - + Op.SWAP1 - + Op.MSIZE - + Op.ADD - + Op.PUSH1[0x0] - + Op.SWAP1 - + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=Op.DUP2) - + Op.ADD(Op.DUP2, 0x20) + + Op.JUMP(pc=0x492) + + Op.JUMPDEST + + Op.DUP2 + Op.SWAP1 + Op.POP + Op.SWAP1 + Op.POP + Op.PUSH1[0x0] + Op.JUMPDEST - + Op.JUMPI( - pc=0x8BB, - condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.DIV(Op.DUP4, 0x20))), - ) - + Op.MSTORE( - offset=Op.ADD(Op.DUP4, Op.MUL(0x20, Op.DUP2)), - value=Op.SLOAD(key=Op.ADD(Op.DUP5, Op.DUP1)), - ) - + Op.ADD(Op.DUP2, 0x1) - + Op.SWAP1 - + Op.POP - + Op.JUMP(pc=0x89A) - + Op.JUMPDEST + + Op.JUMPI(pc=0x552, condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.DUP5))) + Op.MSTORE( - offset=Op.ADD(Op.DUP4, Op.MUL(0x20, Op.DUP2)), - value=Op.AND( - Op.SLOAD(key=Op.ADD(Op.DUP6, Op.DUP2)), - Op.SUB( - 0x0, Op.EXP(0x100, Op.SUB(0x20, Op.MOD(Op.DUP4, 0x20))) + offset=Op.ADD(Op.DUP5, Op.MUL(0x20, Op.DUP2)), + value=Op.SUB( + Op.MLOAD( + offset=Op.ADD( + Op.MLOAD(offset=0x3C0), Op.MUL(0x20, Op.DUP2) + ) ), + Op.MLOAD(offset=Op.ADD(Op.DUP3, Op.MUL(0x20, Op.DUP1))), ), ) - + Op.DUP2 - + Op.SWAP1 - + Op.POP - + Op.SWAP1 - + Op.POP + + Op.ADD(Op.DUP2, 0x1) + Op.SWAP1 + Op.POP - + Op.SWAP1 + + Op.JUMP(pc=0x526) + + Op.JUMPDEST + Op.POP + + Op.DUP2 + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x40), value=0x20) + Op.RETURN( offset=Op.SUB(Op.DUP3, 0x40), @@ -881,48 +722,10 @@ def test_block504980( 0x40, Op.MUL(Op.MLOAD(offset=Op.SUB(Op.DUP3, 0x20)), 0x20) ), ) - + Op.POP + + Op.POP * 5 + Op.JUMPDEST - + Op.JUMPI(pc=0x9EB, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0xE05DCB56))) - + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) - + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) - + Op.PUSH1[0xA0] * 2 - + Op.MSIZE - + Op.SWAP1 - + Op.MSIZE - + Op.ADD - + Op.PUSH1[0x0] - + Op.SWAP1 - + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0xB) - + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x0) - + Op.DUP1 - + Op.SWAP1 - + Op.POP - + Op.SHA3 - + Op.PUSH1[0x2] - + Op.PUSH1[0x80] * 2 - + Op.MSIZE - + Op.SWAP1 - + Op.MSIZE - + Op.ADD - + Op.PUSH1[0x0] - + Op.SWAP1 - + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x0) - + Op.DUP1 - + Op.SWAP1 - + Op.POP - + Op.MUL(0x20, Op.SLOAD(key=Op.SHA3)) - + Op.ADD - + Op.DUP1 - + Op.ADD(0x20, Op.DUP1) + + Op.JUMPI(pc=0x69D, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x232B2734))) + + Op.CALLDATASIZE + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -930,45 +733,118 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=Op.DUP2) - + Op.ADD(Op.DUP2, 0x20) - + Op.SWAP1 - + Op.POP - + Op.SWAP1 - + Op.POP - + Op.PUSH1[0x0] - + Op.JUMPDEST - + Op.JUMPI( - pc=0x9AF, - condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.DIV(Op.DUP4, 0x20))), + + Op.CALLDATACOPY( + dest_offset=Op.DUP3, offset=0x4, size=Op.CALLDATASIZE ) + Op.MSTORE( - offset=Op.ADD(Op.DUP4, Op.MUL(0x20, Op.DUP2)), - value=Op.SLOAD(key=Op.ADD(Op.DUP5, Op.DUP1)), + offset=0x620, + value=Op.ADD(Op.ADD(Op.DUP3, 0x20), Op.CALLDATALOAD(offset=0x4)), ) - + Op.ADD(Op.DUP2, 0x1) - + Op.SWAP1 - + Op.POP - + Op.JUMP(pc=0x98E) - + Op.JUMPDEST + Op.MSTORE( - offset=Op.ADD(Op.DUP4, Op.MUL(0x20, Op.DUP2)), - value=Op.AND( - Op.SLOAD(key=Op.ADD(Op.DUP6, Op.DUP2)), - Op.SUB( - 0x0, Op.EXP(0x100, Op.SUB(0x20, Op.MOD(Op.DUP4, 0x20))) - ), - ), + offset=0x280, + value=Op.ADD(Op.ADD(Op.DUP3, 0x20), Op.CALLDATALOAD(offset=0x24)), ) - + Op.DUP2 - + Op.SWAP1 - + Op.POP - + Op.SWAP1 + + Op.MSTORE( + offset=0x3C0, + value=Op.ADD(Op.ADD(Op.DUP3, 0x20), Op.CALLDATALOAD(offset=0x44)), + ) + + Op.MSTORE(offset=0x640, value=Op.CALLDATALOAD(offset=0x64)) + + Op.MSTORE(offset=0x1A0, value=Op.CALLDATALOAD(offset=0x84)) + + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0xA4)) + Op.POP - + Op.SWAP1 + + Op.JUMPI( + pc=0x602, + condition=Op.ISZERO( + Op.SLT(Op.MLOAD(offset=Op.MLOAD(offset=0x280)), 0x0) + ), + ) + + Op.PUSH1[0x0] + + Op.JUMPDEST + + Op.JUMPI( + pc=0x600, + condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.MLOAD(offset=0x80))), + ) + + Op.MSTORE( + offset=Op.ADD(Op.MLOAD(offset=0x280), Op.MUL(0x20, Op.DUP2)), + value=Op.SUB( + 0x0, + Op.MLOAD( + offset=Op.ADD( + Op.MLOAD(offset=0x280), Op.MUL(0x20, Op.DUP1) + ) + ), + ), + ) + + Op.ADD(Op.DUP2, 0x1) + + Op.SWAP1 + + Op.POP + + Op.JUMP(pc=0x5D4) + + Op.JUMPDEST + + Op.POP + + Op.JUMPDEST + + Op.PUSH1[0x0] + + Op.JUMPDEST + + Op.JUMPI( + pc=0x67F, + condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.MLOAD(offset=0x1A0))), + ) + + Op.PUSH1[0x0] + + Op.JUMPDEST + + Op.JUMPI( + pc=0x673, + condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.MLOAD(offset=0x80))), + ) + + Op.MSTORE( + offset=Op.ADD(Op.MLOAD(offset=0x620), Op.MUL(0x20, Op.DUP3)), + value=Op.ADD( + Op.MLOAD( + offset=Op.ADD( + Op.MLOAD(offset=0x620), Op.MUL(0x20, Op.DUP3) + ) + ), + Op.SDIV( + Op.MUL( + Op.MLOAD( + offset=Op.ADD( + Op.MLOAD(offset=0x3C0), + Op.MUL( + 0x20, + Op.ADD( + Op.MUL(Op.DUP6, Op.MLOAD(offset=0x80)), + Op.DUP3, + ), + ), + ) + ), + Op.SDIV( + Op.MUL( + Op.MLOAD(offset=0x640), + Op.MLOAD( + offset=Op.ADD( + Op.MLOAD(offset=0x280), + Op.MUL(0x20, Op.DUP3), + ) + ), + ), + 0x10000000000000000, + ), + ), + 0x10000000000000000, + ), + ), + ) + + Op.ADD(Op.DUP2, 0x1) + + Op.SWAP1 + + Op.POP + + Op.JUMP(pc=0x613) + + Op.JUMPDEST + Op.POP + + Op.ADD(Op.DUP2, 0x1) + Op.SWAP1 + Op.POP + + Op.JUMP(pc=0x605) + + Op.JUMPDEST + + Op.MLOAD(offset=0x620) + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x40), value=0x20) + Op.RETURN( offset=Op.SUB(Op.DUP3, 0x40), @@ -976,12 +852,25 @@ def test_block504980( 0x40, Op.MUL(Op.MLOAD(offset=Op.SUB(Op.DUP3, 0x20)), 0x20) ), ) - + Op.POP + + Op.POP * 2 + Op.JUMPDEST - + Op.JUMPI(pc=0xA3A, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x586B5BE0))) - + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) - + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) - + Op.PUSH1[0x80] * 2 + + Op.POP, + nonce=0, + address=Address(0xF1562E1C0D0BAA3EA746442BB7F11153FCF5CFDA), # noqa: E501 + ) + # Source: raw + # 0x600061083f537c010000000000000000000000000000000000000000000000000000000060003504637a66d7ca8114156100665760043560405260606060599059016000905260008152604051816020015260008160400152809050205460605260206060f35b63c60409c68114156100a55760043560405260606060599059016000905260008152604051816020015260018160400152809050205460a052602060a0f35b63186335768114156100e45760043560405260606060599059016000905260008152604051816020015260028160400152809050205460e052602060e0f35b63b3903c8a8114156101bc57600435604052606060605990590160009052600081526040518160200152600581604001528090502054610120526101205180602002602001599059016000905281815260208101905090506101605260006101c0525b610120516101c051121561019f57608060805990590160009052600081526040518160200152600481604001526101c051816060015280905020546101c05160200261016051015260016101c051016101c052610147565b6101605160206040820352602060208203510260400160408203f3505b636824e0fb8114156101fd57600435604052606060605990590160009052600081526040518160200152600581604001528090502054610220526020610220f35b633db16be381141561023e57600435604052606060605990590160009052600081526040518160200152600681604001528090502054610260526020610260f35b63c33878588114156102e05760006102a0526000546102c0526102c05180602002602001599059016000905281815260208101905090506102e0525b6102c0516102a05112156102c357604060405990590160009052600181526102a051816020015280905020546102a0516020026102e051015260016102a051016102a05261027a565b6102e05160206040820352602060208203510260400160408203f3505b63175c63228114156102fa57600054610380526020610380f35b63d861f2b4811415610336576004356103a052604060405990590160009052600181526103a051816020015280905020546103c05260206103c0f35b63b0dab01f81141561044f57600435610400526024356104205260443561044052606435610460526000606060605990590160009052600081526104005181602001526001816040015280905020541415610441576104205160606060599059016000905260008152610400518160200152600081604001528090502055610440516060606059905901600090526000815261040051816020015260018160400152809050205561046051606060605990590160009052600081526104005181602001526006816040015280905020556104005160406040599059016000905260018152600054816020015280905020556001600054016000556001610520526020610520f361044e565b6000610540526020610540f35b5b63aac2ffb58114156104b95760043560405260016060606059905901600090526000815260405181602001526002816040015280905020540160606060599059016000905260008152604051816020015260028160400152809050205560016105a05260206105a0f35b637265802d811415610507576004356040526024356105c0526105c0516060606059905901600090526000815260405181602001526002816040015280905020556001610600526020610600f35b63c5476efe811415610571576004356040526001606060605990590160009052600081526040518160200152600081604001528090502054016060606059905901600090526000815260405181602001526000816040015280905020556001610660526020610660f35b63c551e31e81141561063b576004356040526024356106805260606060599059016000905260008152604051816020015260058160400152809050205461012052610680516080608059905901600090526000815260405181602001526004816040015261012051816060015280905020556001606060605990590160009052600081526040518160200152600581604001528090502054016060606059905901600090526000815260405181602001526005816040015280905020556001610720526020610720f35b633d90504581141561067c57600435604052606060605990590160009052600081526040518160200152600381604001528090502054610740526020610740f35b631cda01ef8114156106e65760043560405260016060606059905901600090526000815260405181602001526003816040015280905020540160606060599059016000905260008152604051816020015260038160400152809050205560016107c05260206107c0f35b63c286273a811415610734576004356040526024356107e0526107e0516060606059905901600090526000815260405181602001526003816040015280905020556001610820526020610820f35b50 # noqa: E501 + contract_9 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE8(offset=0x83F, value=0x0) + + Op.DIV( + Op.CALLDATALOAD(offset=0x0), + 0x100000000000000000000000000000000000000000000000000000000, + ) + + Op.JUMPI( + pc=Op.PUSH2[0x66], condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x7A66D7CA)) + ) + + Op.MSTORE(offset=0x40, value=Op.CALLDATALOAD(offset=0x4)) + + Op.PUSH1[0x60] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -990,19 +879,19 @@ def test_block504980( + Op.SWAP1 + Op.MSTORE + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0xC) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x40)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x0) + Op.DUP1 + Op.SWAP1 + Op.POP - + Op.MSTORE(offset=0xB80, value=Op.SLOAD(key=Op.SHA3)) - + Op.RETURN(offset=0xB80, size=0x20) + + Op.MSTORE(offset=0x60, value=Op.SLOAD(key=Op.SHA3)) + + Op.RETURN(offset=0x60, size=0x20) + Op.JUMPDEST - + Op.JUMPI(pc=0xB58, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0xEB8AF5AA))) - + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) - + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) - + Op.PUSH1[0xA0] * 2 + + Op.JUMPI( + pc=Op.PUSH2[0xA5], condition=Op.ISZERO(Op.EQ(Op.DUP2, 0xC60409C6)) + ) + + Op.MSTORE(offset=0x40, value=Op.CALLDATALOAD(offset=0x4)) + + Op.PUSH1[0x60] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -1011,15 +900,19 @@ def test_block504980( + Op.SWAP1 + Op.MSTORE + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0xD) - + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x40)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x1) + Op.DUP1 + Op.SWAP1 + Op.POP - + Op.SHA3 - + Op.PUSH1[0x80] * 2 + + Op.MSTORE(offset=0xA0, value=Op.SLOAD(key=Op.SHA3)) + + Op.RETURN(offset=0xA0, size=0x20) + + Op.JUMPDEST + + Op.JUMPI( + pc=Op.PUSH2[0xE4], condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x18633576)) + ) + + Op.MSTORE(offset=0x40, value=Op.CALLDATALOAD(offset=0x4)) + + Op.PUSH1[0x60] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -1028,14 +921,17 @@ def test_block504980( + Op.SWAP1 + Op.MSTORE + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x40)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x2) + Op.DUP1 + Op.SWAP1 + Op.POP - + Op.SLOAD(key=Op.SHA3) - + Op.PUSH1[0x80] * 2 + + Op.MSTORE(offset=0xE0, value=Op.SLOAD(key=Op.SHA3)) + + Op.RETURN(offset=0xE0, size=0x20) + + Op.JUMPDEST + + Op.JUMPI(pc=0x1BC, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0xB3903C8A))) + + Op.MSTORE(offset=0x40, value=Op.CALLDATALOAD(offset=0x4)) + + Op.PUSH1[0x60] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -1044,16 +940,14 @@ def test_block504980( + Op.SWAP1 + Op.MSTORE + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x5) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x40)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x5) + Op.DUP1 + Op.SWAP1 + Op.POP - + Op.SLOAD(key=Op.SHA3) - + Op.MUL(0x20, Op.SDIV) - + Op.DUP1 - + Op.ADD(0x20, Op.DUP1) + + Op.MSTORE(offset=0x120, value=Op.SLOAD(key=Op.SHA3)) + + Op.MLOAD(offset=0x120) + + Op.ADD(0x20, Op.MUL(0x20, Op.DUP1)) + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -1067,39 +961,41 @@ def test_block504980( + Op.POP + Op.SWAP1 + Op.POP - + Op.PUSH1[0x0] + + Op.PUSH2[0x160] + + Op.MSTORE + + Op.MSTORE(offset=0x1C0, value=0x0) + Op.JUMPDEST + Op.JUMPI( - pc=0xB1C, - condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.DIV(Op.DUP4, 0x20))), - ) - + Op.MSTORE( - offset=Op.ADD(Op.DUP4, Op.MUL(0x20, Op.DUP2)), - value=Op.SLOAD(key=Op.ADD(Op.DUP5, Op.DUP1)), - ) - + Op.ADD(Op.DUP2, 0x1) - + Op.SWAP1 - + Op.POP - + Op.JUMP(pc=0xAFB) - + Op.JUMPDEST - + Op.MSTORE( - offset=Op.ADD(Op.DUP4, Op.MUL(0x20, Op.DUP2)), - value=Op.AND( - Op.SLOAD(key=Op.ADD(Op.DUP6, Op.DUP2)), - Op.SUB( - 0x0, Op.EXP(0x100, Op.SUB(0x20, Op.MOD(Op.DUP4, 0x20))) - ), + pc=0x19F, + condition=Op.ISZERO( + Op.SLT(Op.MLOAD(offset=0x1C0), Op.MLOAD(offset=0x120)) ), ) - + Op.DUP2 - + Op.SWAP1 - + Op.POP + + Op.PUSH1[0x80] * 2 + + Op.MSIZE + Op.SWAP1 - + Op.POP + + Op.MSIZE + + Op.ADD + + Op.PUSH1[0x0] + Op.SWAP1 - + Op.POP + + Op.MSTORE + + Op.MSTORE(offset=Op.DUP2, value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x40)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x4) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=Op.MLOAD(offset=0x1C0)) + + Op.DUP1 + Op.SWAP1 + Op.POP + + Op.MSTORE( + offset=Op.ADD( + Op.MLOAD(offset=0x160), Op.MUL(0x20, Op.MLOAD(offset=0x1C0)) + ), + value=Op.SLOAD(key=Op.SHA3), + ) + + Op.MSTORE(offset=0x1C0, value=Op.ADD(Op.MLOAD(offset=0x1C0), 0x1)) + + Op.JUMP(pc=0x147) + + Op.JUMPDEST + + Op.MLOAD(offset=0x160) + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x40), value=0x20) + Op.RETURN( offset=Op.SUB(Op.DUP3, 0x40), @@ -1109,10 +1005,9 @@ def test_block504980( ) + Op.POP + Op.JUMPDEST - + Op.JUMPI(pc=0xC76, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x7AB6EA8A))) - + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) - + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) - + Op.PUSH1[0xA0] * 2 + + Op.JUMPI(pc=0x1FD, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x6824E0FB))) + + Op.MSTORE(offset=0x40, value=Op.CALLDATALOAD(offset=0x4)) + + Op.PUSH1[0x60] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -1121,15 +1016,17 @@ def test_block504980( + Op.SWAP1 + Op.MSTORE + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0xE) - + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x40)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x5) + Op.DUP1 + Op.SWAP1 + Op.POP - + Op.SHA3 - + Op.PUSH1[0x80] * 2 + + Op.MSTORE(offset=0x220, value=Op.SLOAD(key=Op.SHA3)) + + Op.RETURN(offset=0x220, size=0x20) + + Op.JUMPDEST + + Op.JUMPI(pc=0x23E, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x3DB16BE3))) + + Op.MSTORE(offset=0x40, value=Op.CALLDATALOAD(offset=0x4)) + + Op.PUSH1[0x60] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -1138,32 +1035,19 @@ def test_block504980( + Op.SWAP1 + Op.MSTORE + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x40)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x6) + Op.DUP1 + Op.SWAP1 + Op.POP - + Op.SLOAD(key=Op.SHA3) - + Op.PUSH1[0x80] * 2 - + Op.MSIZE - + Op.SWAP1 - + Op.MSIZE - + Op.ADD - + Op.PUSH1[0x0] - + Op.SWAP1 - + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x5) - + Op.DUP1 - + Op.SWAP1 - + Op.POP - + Op.SLOAD(key=Op.SHA3) - + Op.MUL(0x20, Op.SDIV) - + Op.DUP1 - + Op.ADD(0x20, Op.DUP1) + + Op.MSTORE(offset=0x260, value=Op.SLOAD(key=Op.SHA3)) + + Op.RETURN(offset=0x260, size=0x20) + + Op.JUMPDEST + + Op.JUMPI(pc=0x2E0, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0xC3387858))) + + Op.MSTORE(offset=0x2A0, value=0x0) + + Op.MSTORE(offset=0x2C0, value=Op.SLOAD(key=0x0)) + + Op.MLOAD(offset=0x2C0) + + Op.ADD(0x20, Op.MUL(0x20, Op.DUP1)) + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -1177,39 +1061,38 @@ def test_block504980( + Op.POP + Op.SWAP1 + Op.POP - + Op.PUSH1[0x0] + + Op.PUSH2[0x2E0] + + Op.MSTORE + Op.JUMPDEST + Op.JUMPI( - pc=0xC3A, - condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.DIV(Op.DUP4, 0x20))), - ) - + Op.MSTORE( - offset=Op.ADD(Op.DUP4, Op.MUL(0x20, Op.DUP2)), - value=Op.SLOAD(key=Op.ADD(Op.DUP5, Op.DUP1)), - ) - + Op.ADD(Op.DUP2, 0x1) - + Op.SWAP1 - + Op.POP - + Op.JUMP(pc=0xC19) - + Op.JUMPDEST - + Op.MSTORE( - offset=Op.ADD(Op.DUP4, Op.MUL(0x20, Op.DUP2)), - value=Op.AND( - Op.SLOAD(key=Op.ADD(Op.DUP6, Op.DUP2)), - Op.SUB( - 0x0, Op.EXP(0x100, Op.SUB(0x20, Op.MOD(Op.DUP4, 0x20))) - ), + pc=0x2C3, + condition=Op.ISZERO( + Op.SLT(Op.MLOAD(offset=0x2A0), Op.MLOAD(offset=0x2C0)) ), ) - + Op.DUP2 - + Op.SWAP1 - + Op.POP + + Op.PUSH1[0x40] * 2 + + Op.MSIZE + Op.SWAP1 - + Op.POP + + Op.MSIZE + + Op.ADD + + Op.PUSH1[0x0] + Op.SWAP1 - + Op.POP + + Op.MSTORE + + Op.MSTORE(offset=Op.DUP2, value=0x1) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x2A0)) + + Op.DUP1 + Op.SWAP1 + Op.POP + + Op.MSTORE( + offset=Op.ADD( + Op.MLOAD(offset=0x2E0), Op.MUL(0x20, Op.MLOAD(offset=0x2A0)) + ), + value=Op.SLOAD(key=Op.SHA3), + ) + + Op.MSTORE(offset=0x2A0, value=Op.ADD(Op.MLOAD(offset=0x2A0), 0x1)) + + Op.JUMP(pc=0x27A) + + Op.JUMPDEST + + Op.MLOAD(offset=0x2E0) + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x40), value=0x20) + Op.RETURN( offset=Op.SUB(Op.DUP3, 0x40), @@ -1219,10 +1102,13 @@ def test_block504980( ) + Op.POP + Op.JUMPDEST - + Op.JUMPI(pc=0xD94, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x2B810CB9))) - + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) - + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) - + Op.PUSH1[0xA0] * 2 + + Op.JUMPI(pc=0x2FA, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x175C6322))) + + Op.MSTORE(offset=0x380, value=Op.SLOAD(key=0x0)) + + Op.RETURN(offset=0x380, size=0x20) + + Op.JUMPDEST + + Op.JUMPI(pc=0x336, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0xD861F2B4))) + + Op.MSTORE(offset=0x3A0, value=Op.CALLDATALOAD(offset=0x4)) + + Op.PUSH1[0x40] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -1230,16 +1116,21 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0xF) - + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x0) + + Op.MSTORE(offset=Op.DUP2, value=0x1) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x3A0)) + Op.DUP1 + Op.SWAP1 + Op.POP - + Op.SHA3 - + Op.PUSH1[0x80] * 2 + + Op.MSTORE(offset=0x3C0, value=Op.SLOAD(key=Op.SHA3)) + + Op.RETURN(offset=0x3C0, size=0x20) + + Op.JUMPDEST + + Op.JUMPI(pc=0x44F, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0xB0DAB01F))) + + Op.MSTORE(offset=0x400, value=Op.CALLDATALOAD(offset=0x4)) + + Op.MSTORE(offset=0x420, value=Op.CALLDATALOAD(offset=0x24)) + + Op.MSTORE(offset=0x440, value=Op.CALLDATALOAD(offset=0x44)) + + Op.MSTORE(offset=0x460, value=Op.CALLDATALOAD(offset=0x64)) + + Op.PUSH1[0x0] + + Op.PUSH1[0x60] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -1248,14 +1139,15 @@ def test_block504980( + Op.SWAP1 + Op.MSTORE + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x400)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x1) + Op.DUP1 + Op.SWAP1 + Op.POP + Op.SLOAD(key=Op.SHA3) - + Op.PUSH1[0x80] * 2 + + Op.JUMPI(pc=0x441, condition=Op.ISZERO(Op.EQ)) + + Op.MLOAD(offset=0x420) + + Op.PUSH1[0x60] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -1264,16 +1156,15 @@ def test_block504980( + Op.SWAP1 + Op.MSTORE + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x5) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x400)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x0) + Op.DUP1 + Op.SWAP1 + Op.POP - + Op.SLOAD(key=Op.SHA3) - + Op.MUL(0x20, Op.SDIV) - + Op.DUP1 - + Op.ADD(0x20, Op.DUP1) + + Op.SHA3 + + Op.SSTORE + + Op.MLOAD(offset=0x440) + + Op.PUSH1[0x60] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -1281,58 +1172,59 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=Op.DUP2) - + Op.ADD(Op.DUP2, 0x20) + + Op.MSTORE(offset=Op.DUP2, value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x400)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x1) + + Op.DUP1 + Op.SWAP1 + Op.POP + + Op.SHA3 + + Op.SSTORE + + Op.MLOAD(offset=0x460) + + Op.PUSH1[0x60] * 2 + + Op.MSIZE + Op.SWAP1 - + Op.POP + + Op.MSIZE + + Op.ADD + Op.PUSH1[0x0] - + Op.JUMPDEST - + Op.JUMPI( - pc=0xD58, - condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.DIV(Op.DUP4, 0x20))), - ) - + Op.MSTORE( - offset=Op.ADD(Op.DUP4, Op.MUL(0x20, Op.DUP2)), - value=Op.SLOAD(key=Op.ADD(Op.DUP5, Op.DUP1)), - ) - + Op.ADD(Op.DUP2, 0x1) + Op.SWAP1 - + Op.POP - + Op.JUMP(pc=0xD37) - + Op.JUMPDEST - + Op.MSTORE( - offset=Op.ADD(Op.DUP4, Op.MUL(0x20, Op.DUP2)), - value=Op.AND( - Op.SLOAD(key=Op.ADD(Op.DUP6, Op.DUP2)), - Op.SUB( - 0x0, Op.EXP(0x100, Op.SUB(0x20, Op.MOD(Op.DUP4, 0x20))) - ), - ), - ) - + Op.DUP2 + + Op.MSTORE + + Op.MSTORE(offset=Op.DUP2, value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x400)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x6) + + Op.DUP1 + Op.SWAP1 + Op.POP + + Op.SHA3 + + Op.SSTORE + + Op.MLOAD(offset=0x400) + + Op.PUSH1[0x40] * 2 + + Op.MSIZE + Op.SWAP1 - + Op.POP + + Op.MSIZE + + Op.ADD + + Op.PUSH1[0x0] + Op.SWAP1 - + Op.POP + + Op.MSTORE + + Op.MSTORE(offset=Op.DUP2, value=0x1) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.SLOAD(key=0x0)) + + Op.DUP1 + Op.SWAP1 + Op.POP - + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x40), value=0x20) - + Op.RETURN( - offset=Op.SUB(Op.DUP3, 0x40), - size=Op.ADD( - 0x40, Op.MUL(Op.MLOAD(offset=Op.SUB(Op.DUP3, 0x20)), 0x20) - ), - ) - + Op.POP + + Op.SHA3 + + Op.SSTORE + + Op.SSTORE(key=0x0, value=Op.ADD(Op.SLOAD(key=0x0), 0x1)) + + Op.MSTORE(offset=0x520, value=0x1) + + Op.RETURN(offset=0x520, size=0x20) + + Op.JUMP(pc=0x44E) + Op.JUMPDEST - + Op.JUMPI(pc=0xE85, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x7FB42E46))) - + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) - + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) - + Op.PUSH1[0xA0] * 2 + + Op.MSTORE(offset=0x540, value=0x0) + + Op.RETURN(offset=0x540, size=0x20) + + Op.JUMPDEST * 2 + + Op.JUMPI(pc=0x4B9, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0xAAC2FFB5))) + + Op.MSTORE(offset=0x40, value=Op.CALLDATALOAD(offset=0x4)) + + Op.PUSH1[0x1] + + Op.PUSH1[0x60] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -1341,15 +1233,14 @@ def test_block504980( + Op.SWAP1 + Op.MSTORE + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x10) - + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x40)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x2) + Op.DUP1 + Op.SWAP1 + Op.POP - + Op.SHA3 - + Op.PUSH1[0x80] * 2 + + Op.SLOAD(key=Op.SHA3) + + Op.ADD + + Op.PUSH1[0x60] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -1358,15 +1249,21 @@ def test_block504980( + Op.SWAP1 + Op.MSTORE + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x40)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x2) + Op.DUP1 + Op.SWAP1 + Op.POP - + Op.MUL(0x20, Op.SLOAD(key=Op.SHA3)) - + Op.DUP1 - + Op.ADD(0x20, Op.DUP1) + + Op.SHA3 + + Op.SSTORE + + Op.MSTORE(offset=0x5A0, value=0x1) + + Op.RETURN(offset=0x5A0, size=0x20) + + Op.JUMPDEST + + Op.JUMPI(pc=0x507, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x7265802D))) + + Op.MSTORE(offset=0x40, value=Op.CALLDATALOAD(offset=0x4)) + + Op.MSTORE(offset=0x5C0, value=Op.CALLDATALOAD(offset=0x24)) + + Op.MLOAD(offset=0x5C0) + + Op.PUSH1[0x60] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -1374,75 +1271,37 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=Op.DUP2) - + Op.ADD(Op.DUP2, 0x20) + + Op.MSTORE(offset=Op.DUP2, value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x40)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x2) + + Op.DUP1 + Op.SWAP1 + Op.POP + + Op.SHA3 + + Op.SSTORE + + Op.MSTORE(offset=0x600, value=0x1) + + Op.RETURN(offset=0x600, size=0x20) + + Op.JUMPDEST + + Op.JUMPI(pc=0x571, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0xC5476EFE))) + + Op.MSTORE(offset=0x40, value=Op.CALLDATALOAD(offset=0x4)) + + Op.PUSH1[0x1] + + Op.PUSH1[0x60] * 2 + + Op.MSIZE + Op.SWAP1 - + Op.POP - + Op.PUSH1[0x0] - + Op.JUMPDEST - + Op.JUMPI( - pc=0xE49, - condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.DIV(Op.DUP4, 0x20))), - ) - + Op.MSTORE( - offset=Op.ADD(Op.DUP4, Op.MUL(0x20, Op.DUP2)), - value=Op.SLOAD(key=Op.ADD(Op.DUP5, Op.DUP1)), - ) - + Op.ADD(Op.DUP2, 0x1) - + Op.SWAP1 - + Op.POP - + Op.JUMP(pc=0xE28) - + Op.JUMPDEST - + Op.MSTORE( - offset=Op.ADD(Op.DUP4, Op.MUL(0x20, Op.DUP2)), - value=Op.AND( - Op.SLOAD(key=Op.ADD(Op.DUP6, Op.DUP2)), - Op.SUB( - 0x0, Op.EXP(0x100, Op.SUB(0x20, Op.MOD(Op.DUP4, 0x20))) - ), - ), - ) - + Op.DUP2 - + Op.SWAP1 - + Op.POP - + Op.SWAP1 - + Op.POP - + Op.SWAP1 - + Op.POP - + Op.SWAP1 - + Op.POP - + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x40), value=0x20) - + Op.RETURN( - offset=Op.SUB(Op.DUP3, 0x40), - size=Op.ADD( - 0x40, Op.MUL(Op.MLOAD(offset=Op.SUB(Op.DUP3, 0x20)), 0x20) - ), - ) - + Op.POP - + Op.JUMPDEST - + Op.JUMPI(pc=0xF76, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x734FA727))) - + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) - + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) - + Op.PUSH1[0xA0] * 2 - + Op.MSIZE - + Op.SWAP1 - + Op.MSIZE - + Op.ADD + + Op.MSIZE + + Op.ADD + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x11) - + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x40)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x0) + Op.DUP1 + Op.SWAP1 + Op.POP - + Op.SHA3 - + Op.PUSH1[0x80] * 2 + + Op.SLOAD(key=Op.SHA3) + + Op.ADD + + Op.PUSH1[0x60] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -1451,15 +1310,20 @@ def test_block504980( + Op.SWAP1 + Op.MSTORE + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x40)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x0) + Op.DUP1 + Op.SWAP1 + Op.POP - + Op.MUL(0x20, Op.SLOAD(key=Op.SHA3)) - + Op.DUP1 - + Op.ADD(0x20, Op.DUP1) + + Op.SHA3 + + Op.SSTORE + + Op.MSTORE(offset=0x660, value=0x1) + + Op.RETURN(offset=0x660, size=0x20) + + Op.JUMPDEST + + Op.JUMPI(pc=0x63B, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0xC551E31E))) + + Op.MSTORE(offset=0x40, value=Op.CALLDATALOAD(offset=0x4)) + + Op.MSTORE(offset=0x680, value=Op.CALLDATALOAD(offset=0x24)) + + Op.PUSH1[0x60] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -1467,58 +1331,15 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=Op.DUP2) - + Op.ADD(Op.DUP2, 0x20) - + Op.SWAP1 - + Op.POP - + Op.SWAP1 - + Op.POP - + Op.PUSH1[0x0] - + Op.JUMPDEST - + Op.JUMPI( - pc=0xF3A, - condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.DIV(Op.DUP4, 0x20))), - ) - + Op.MSTORE( - offset=Op.ADD(Op.DUP4, Op.MUL(0x20, Op.DUP2)), - value=Op.SLOAD(key=Op.ADD(Op.DUP5, Op.DUP1)), - ) - + Op.ADD(Op.DUP2, 0x1) - + Op.SWAP1 - + Op.POP - + Op.JUMP(pc=0xF19) - + Op.JUMPDEST - + Op.MSTORE( - offset=Op.ADD(Op.DUP4, Op.MUL(0x20, Op.DUP2)), - value=Op.AND( - Op.SLOAD(key=Op.ADD(Op.DUP6, Op.DUP2)), - Op.SUB( - 0x0, Op.EXP(0x100, Op.SUB(0x20, Op.MOD(Op.DUP4, 0x20))) - ), - ), - ) - + Op.DUP2 - + Op.SWAP1 - + Op.POP - + Op.SWAP1 - + Op.POP - + Op.SWAP1 - + Op.POP + + Op.MSTORE(offset=Op.DUP2, value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x40)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x5) + + Op.DUP1 + Op.SWAP1 + Op.POP - + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x40), value=0x20) - + Op.RETURN( - offset=Op.SUB(Op.DUP3, 0x40), - size=Op.ADD( - 0x40, Op.MUL(Op.MLOAD(offset=Op.SUB(Op.DUP3, 0x20)), 0x20) - ), - ) - + Op.POP - + Op.JUMPDEST - + Op.JUMPI(pc=0x1067, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0xC67FA857))) - + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) - + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) - + Op.PUSH1[0xA0] * 2 + + Op.MSTORE(offset=0x120, value=Op.SLOAD(key=Op.SHA3)) + + Op.MLOAD(offset=0x680) + + Op.PUSH1[0x80] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -1527,15 +1348,16 @@ def test_block504980( + Op.SWAP1 + Op.MSTORE + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x12) - + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x40)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x4) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=Op.MLOAD(offset=0x120)) + Op.DUP1 + Op.SWAP1 + Op.POP + Op.SHA3 - + Op.PUSH1[0x80] * 2 + + Op.SSTORE + + Op.PUSH1[0x1] + + Op.PUSH1[0x60] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -1544,15 +1366,14 @@ def test_block504980( + Op.SWAP1 + Op.MSTORE + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x40)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x5) + Op.DUP1 + Op.SWAP1 + Op.POP - + Op.MUL(0x20, Op.SLOAD(key=Op.SHA3)) - + Op.DUP1 - + Op.ADD(0x20, Op.DUP1) + + Op.SLOAD(key=Op.SHA3) + + Op.ADD + + Op.PUSH1[0x60] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -1560,58 +1381,20 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=Op.DUP2) - + Op.ADD(Op.DUP2, 0x20) - + Op.SWAP1 - + Op.POP - + Op.SWAP1 - + Op.POP - + Op.PUSH1[0x0] - + Op.JUMPDEST - + Op.JUMPI( - pc=0x102B, - condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.DIV(Op.DUP4, 0x20))), - ) - + Op.MSTORE( - offset=Op.ADD(Op.DUP4, Op.MUL(0x20, Op.DUP2)), - value=Op.SLOAD(key=Op.ADD(Op.DUP5, Op.DUP1)), - ) - + Op.ADD(Op.DUP2, 0x1) - + Op.SWAP1 - + Op.POP - + Op.JUMP(pc=0x100A) - + Op.JUMPDEST - + Op.MSTORE( - offset=Op.ADD(Op.DUP4, Op.MUL(0x20, Op.DUP2)), - value=Op.AND( - Op.SLOAD(key=Op.ADD(Op.DUP6, Op.DUP2)), - Op.SUB( - 0x0, Op.EXP(0x100, Op.SUB(0x20, Op.MOD(Op.DUP4, 0x20))) - ), - ), - ) - + Op.DUP2 - + Op.SWAP1 - + Op.POP - + Op.SWAP1 - + Op.POP - + Op.SWAP1 - + Op.POP + + Op.MSTORE(offset=Op.DUP2, value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x40)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x5) + + Op.DUP1 + Op.SWAP1 + Op.POP - + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x40), value=0x20) - + Op.RETURN( - offset=Op.SUB(Op.DUP3, 0x40), - size=Op.ADD( - 0x40, Op.MUL(Op.MLOAD(offset=Op.SUB(Op.DUP3, 0x20)), 0x20) - ), - ) - + Op.POP + + Op.SHA3 + + Op.SSTORE + + Op.MSTORE(offset=0x720, value=0x1) + + Op.RETURN(offset=0x720, size=0x20) + Op.JUMPDEST - + Op.JUMPI(pc=0x1185, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x5ED853E4))) - + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) - + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) - + Op.PUSH1[0xA0] * 2 + + Op.JUMPI(pc=0x67C, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x3D905045))) + + Op.MSTORE(offset=0x40, value=Op.CALLDATALOAD(offset=0x4)) + + Op.PUSH1[0x60] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -1620,15 +1403,18 @@ def test_block504980( + Op.SWAP1 + Op.MSTORE + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x13) - + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x40)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x3) + Op.DUP1 + Op.SWAP1 + Op.POP - + Op.SHA3 - + Op.PUSH1[0x80] * 2 + + Op.MSTORE(offset=0x740, value=Op.SLOAD(key=Op.SHA3)) + + Op.RETURN(offset=0x740, size=0x20) + + Op.JUMPDEST + + Op.JUMPI(pc=0x6E6, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x1CDA01EF))) + + Op.MSTORE(offset=0x40, value=Op.CALLDATALOAD(offset=0x4)) + + Op.PUSH1[0x1] + + Op.PUSH1[0x60] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -1637,14 +1423,14 @@ def test_block504980( + Op.SWAP1 + Op.MSTORE + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x40)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x3) + Op.DUP1 + Op.SWAP1 + Op.POP + Op.SLOAD(key=Op.SHA3) - + Op.PUSH1[0x80] * 2 + + Op.ADD + + Op.PUSH1[0x60] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -1653,16 +1439,21 @@ def test_block504980( + Op.SWAP1 + Op.MSTORE + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x5) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x40)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x3) + Op.DUP1 + Op.SWAP1 + Op.POP - + Op.SLOAD(key=Op.SHA3) - + Op.MUL(0x20, Op.SDIV) - + Op.DUP1 - + Op.ADD(0x20, Op.DUP1) + + Op.SHA3 + + Op.SSTORE + + Op.MSTORE(offset=0x7C0, value=0x1) + + Op.RETURN(offset=0x7C0, size=0x20) + + Op.JUMPDEST + + Op.JUMPI(pc=0x734, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0xC286273A))) + + Op.MSTORE(offset=0x40, value=Op.CALLDATALOAD(offset=0x4)) + + Op.MSTORE(offset=0x7E0, value=Op.CALLDATALOAD(offset=0x24)) + + Op.MLOAD(offset=0x7E0) + + Op.PUSH1[0x60] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -1670,58 +1461,73 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=Op.DUP2) - + Op.ADD(Op.DUP2, 0x20) - + Op.SWAP1 - + Op.POP + + Op.MSTORE(offset=Op.DUP2, value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x40)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x3) + + Op.DUP1 + Op.SWAP1 + Op.POP - + Op.PUSH1[0x0] + + Op.SHA3 + + Op.SSTORE + + Op.MSTORE(offset=0x820, value=0x1) + + Op.RETURN(offset=0x820, size=0x20) + Op.JUMPDEST - + Op.JUMPI( - pc=0x1149, - condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.DIV(Op.DUP4, 0x20))), - ) - + Op.MSTORE( - offset=Op.ADD(Op.DUP4, Op.MUL(0x20, Op.DUP2)), - value=Op.SLOAD(key=Op.ADD(Op.DUP5, Op.DUP1)), + + Op.POP, + storage={ + 0: contract_1, + 0xA4470E9D0419DF71F6257FCDFD2C0A3BAD96A23F5AB414BC10AAF1A31A536A7: 0xB4876148229C22BD2291F1A4F5468C8C789B23639370C4D447F270BA341DBBEC, # noqa: E501 + 0x16EF4193A274568D283FF919C299729E07696D9ADA48187B81D68E12E7B962DE: 0xA103C04E7ECB9B3395F77C7B0CAD28E62C85F042DE4767CCC6C005E6F47F8D4, # noqa: E501 + 0x1F1866E966F321B84535705846689749D34D5DC02994613E2931973C605D9E93: 0xC723D0AA4A60529FE42277C8094AA19263AFF36650136EFC5EDFD0785D457634, # noqa: E501 + 0x252A4EC7133643FDDCDB22A86C415F78B2DD251F18D1EFCD6A44ACF590C4AE72: 0x9CAF94B82715869E71D3CEE986094EA612F0258570B7E5EF47B5D09E9515322B, # noqa: E501 + 0x41B451E8D86D28ADD758CBD3F48A18FD04B11A80288C1DC434A5BF2D8FB1CA64: 0xB602498F12A8B4AF3A1FCA357CEA6B19BCD163DFEC1D845364CE1395F7C21FA7, # noqa: E501 + 0x491D10658C1EC762152D8AD2D890AD59111B1EE7B4BC25736046923D3534D9A5: 25246, # noqa: E501 + 0x5B0E8552EFD72A845E47318ABBBEF9DC9FCDFE0D1A06CDA44494401301581511: 0xFBC98F4017AE5C20459DAADAA6BEE519B6DE871D3DBAA9AB3F34340FEF4CB643, # noqa: E501 + 0x5B672A107BA6FAB01CBDDF079042E9F6176A8E6F154584FC4DF4B15674C9456E: 0x1603DA41D610854D85536B37D000E5EB7CA09786C43F50E7441C0AFBFF1DE0A9, # noqa: E501 + 0x605B934BD26C9ECDF7029A7DC062D3A6B87338511CFF96E0C5F13DE9EEA3462E: 0xF0D24F3D0EDA573FC5D43E3D0680993C51293752CD6DE205040D3197F412F475, # noqa: E501 + 0x618355E25491DFE86175F9D9B3147E4D680AA561D98384E3621DC6A3088B0846: 0x6B2E6D2D5DEB27DFFEC973F23AF4CAF111E66D1397F467DBBEDF5AB2192FB6B6, # noqa: E501 + 0x65112936BEC0F1E84FDA6623FB54E12BAADC8A4A208C8C4EB3ED5E79CBD7E85F: 0xA59AC24E3E0663413D0F87516BA8FB44C6C3E14DA8EAABBDE80F8EE285F65934, # noqa: E501 + 0x687CB2122DE7BACF42B9CD380B04FF2A2CE92A0B63706A9A78263B3CE86F3313: 0x200000000000000, # noqa: E501 + 0x72A539B064C98D29A514EE55694225E05FB41FE63E5FE710E4536BD9BA3591B4: 0x338ECFE6C523ED1184918B19584D97DD1095ECAADC49C7BA9DA62B8B513026E0, # noqa: E501 + 0x7AEB0A0CE8882A12D853078382A2BC72F7A94AF6109F167DE37B36C0A7DEB828: 0x4C428400EA8A7BD7C46BA9895B508770EFA4551F0D793E1BEB1207DA01D9962F, # noqa: E501 + 0x7C8F4A98E086F64E28C75F54712B5D44BEC3C29B5C70519E8880D3046A5618DC: 0xAAFC1F2601752B114D722070F75539BFEC7FAF49F0D48A48D27862F0C3B09903, # noqa: E501 + 0x809C325F50ACF5787776E960985E72443B4330AD1E2F466557FFFEE16BA51D44: 0xB940A56E64B5B661D87919B8EF03640EC077A6D72DD0B524ADEDAA7DDC91FF7A, # noqa: E501 + 0x84E4A80D33C5D2ABD2B0A5AEC0FDC5EAEED90AB31DB556E404A81718EA286E39: 28, # noqa: E501 + 0x877305412FA2486F563C457B744E5C8B1E4D0ECA73371DE5E771F2ABC263F4DC: 0x7088A36F67276D475AA62127CFDE9790CC802FDF3A54DF49461A25EB8BF15707, # noqa: E501 + 0x922A8F2FC1CBE67C8ACC6A8A720983C366D71D3E2E78E3048949EBC913EA611A: 0x50FB9F913CA102534BB0A8EB8EBF19C68DFD16FFE5E207BCC580084CD4ECD8B4, # noqa: E501 + 0x987CB9ECFD8CE499D9D0E9E6B7DA29617AA02774A34F4A8EA54442F44A1E1936: 0x5179F98F555F1E9F1D4A335D16F41154579A53E361E9859269B6FA74EA9C7D21, # noqa: E501 + 0xADA5013122D395BA3C54772283FB069B10426056EF8CA54750CB9BB552A59E7D: 0xF69B5, # noqa: E501 + 0xB16B117660F31197087F4D6FE50D3D4579152244956F753F9653CCF85F4B35C4: 0x830272E3BB35226B047244CBDC46F1B6B864A280461E7A592F70E0863F4F1D33, # noqa: E501 + 0xB1F1AAEDFB83C7755A2BFFC9E2557F1723F9ABE5642397963E76248C9209AF57: 0xE9BE955C5FBFCD846D7425EAEA05CE897786AEFAD99665342CBF30761B352526, # noqa: E501 + 0xB7BD50FDF7B043411C9AC33F0AF2CEBC69C393EB0B91F4976946F9C7B15AD0DA: 0xFCCCA0E7832BAE9AFE799A6D6177DC3869FA6C5B5105F8DF6F365DE5723820EC, # noqa: E501 + 0xBC96058EB03504EE6F5C0A9582F8720D99A6E9738B171499507FACFF0B2C0B5B: 0x9DB6A4F2766B51013B8D2F9038131D1BB4AF725D019D111D7E26FF96C023B23F, # noqa: E501 + 0xC186C4F377B7F13892ADE9656ACD1522AA1F8AC151AC4F62457B5073241D79FC: 0x7289738FEF00F1770EEB098DB9BD486C01AC12398D79CDF935514A128C585C51, # noqa: E501 + 0xCAE57AE3017972D63EFFD8EAE44F5054402C3E890D154B905ED6B5B533327FA9: 0xD2E4BF465E61993D13089B940A7C55017A5117D8E43E4115550A139E1D4B3E3A, # noqa: E501 + 0xCF569EE7BF3ACCC0F893DFFD04F1A757F373EFE80893EFF504FB3678F688EC1D: contract_3, # noqa: E501 + 0xD69B7284545A9F5275DF64CE94848DC954FCB8A8B525E7AC801517C12A75AF84: 0x4202995350ABAE303B43E564AA79121A30B5F1AEA31F69CD25E07DD3FA64DCE7, # noqa: E501 + 0xD8F6F90F51E657690EE28D1CC80D81BC1B89290065891FDD853D09CAAAF756AA: contract_1, # noqa: E501 + 0xDE72F8EED43CC2A5A3EAA51483D14B17DC92BB26C154AE184CEE4B4895011EDC: 0x47CE2B6FDB72C3FABB9C74F82C1E3E522BCD42E614FD85C208AC3C4C840CEA72, # noqa: E501 + 0xE0E687DDF317F3D2B209AE3884148EFF0F636E16827F82EDED14ADA8FC603009: 0xFA7C8939F9B033162CF8D75EA69671BB8A27041BD4CDC76594E61E99333CB041, # noqa: E501 + 0xE8CDA339D72A1A350B62F1E3FA52E254C395CC9FDD9F60ADB21C7633FBDAB531: 0x128C4FDF4801A30EAE99DD58F0F3FF5CA65F71B66A9AC0F38DD450FB24B4AAAA, # noqa: E501 + 0xEC5E7F54FA5E516E616B04F9D5A0EE433A80E09ED47D7E5269AFD76C05FF251E: 20, # noqa: E501 + 0xF9A3BF5F2CCB903EE1A7644113B794DB0260DE404FB8F11203E75A7FFF151618: 0xBD94773C0D85C68240AE8DFD53D9D33CD137509BFC5D3433381299DF768C8377, # noqa: E501 + }, + nonce=0, + address=Address(0xC9AE5868651BF7B7DB6E360217DB49CE4E69C07E), # noqa: E501 + ) + # Source: raw + # 0x6000610b7f537c01000000000000000000000000000000000000000000000000000000006000350473c9ae5868651bf7b7db6e360217db49ce4e69c07e6020526308d3d58781141561024557600435606052606060605990590160009052600081526060518160200152600181604001528090502054608052600060806080599059016000905260008152606051816020015260028160400152328160600152809050205414151561014e57608060805990590160009052600081526060518160200152600281604001523281606001528090502054608052682f000000000000000060a060a059905901600090526000815260605181602001526000816040015260805181606001526000816080015280905020553260a060a05990590160009052600081526060518160200152600081604001526080518160600152600181608001528090502055610238565b608051608060805990590160009052600081526060518160200152600281604001523281606001528090502055682f000000000000000060a060a059905901600090526000815260605181602001526000816040015260805181606001526000816080015280905020553260a060a059905901600090526000815260605181602001526000816040015260805181606001526001816080015280905020556001606060605990590160009052600081526060518160200152600181604001528090502054016060606059905901600090526000815260605181602001526001816040015280905020555b60016101e05260206101e0f35b6328c8b31581141561029d576004356060526024356102005260a060a0599059016000905260008152606051816020015260008160400152610200518160600152600081608001528090502054610220526020610220f35b6374af23ec8114156103865760043560605260243561026052608060805990590160009052600081526060518160200152600281604001526102605181606001528090502054610200526000610200511415610332576102605160a060a05990590160009052600081526060518160200152600081604001526102005181606001526001816080015280905020541415610335565b60005b156103475760006102c05260206102c0f35b60a060a05990590160009052600081526060518160200152600081604001526102005181606001526000816080015280905020546102e05260206102e0f35b6384d646ee8114156103dc5760043560605260243560805260a060a05990590160009052600081526060518160200152600081604001526080518160600152600181608001528090502054610320526020610320f35b63f42294278114156106f45760043561026052601c602459905901600090520163175c6322601c82035260206103a06004836000602051602d5a03f1506103a0519050610360526102605115610581576103605160020280602002602001599059016000905281815260208101905090506103c05261036051806020026020015990590160009052818152602081019050905061042052601c602459905901600090520163c3387858601c8203526103605160408160200201599059016000905281602002604001816004856000602051602d5a03f150604081019050905090506104205260006104c05260006104e0525b610360516104c051121561057c576104c051602002610420510151606052601c60645990590160009052016374af23ec601c82035260605160048201526102605160248201526020610520604483600030602d5a03f1506105205190506105005260006105005114151561056c576060516104e0516020026103c05101526105005160016104e051016020026103c051015260026104e051016104e0525b60016104c051016104c0526104ce565b6106d7565b32610260526103605160020280602002602001599059016000905281815260208101905090506103c05261036051806020026020015990590160009052818152602081019050905061042052601c602459905901600090520163c3387858601c8203526103605160408160200201599059016000905281602002604001816004856000602051602d5a03f150604081019050905090506104205260006104c05260006104e0525b610360516104c05112156106d6576104c051602002610420510151606052601c60645990590160009052016374af23ec601c820352606051600482015261026051602482015260206105c0604483600030602d5a03f1506105c0519050610500526000610500511415156106c6576060516104e0516020026103c05101526105005160016104e051016020026103c051015260026104e051016104e0525b60016104c051016104c052610628565b5b6103c05160206040820352602060208203510260400160408203f3505b6380b5e7bd81141561073557600435606052606060605990590160009052600081526060518160200152600181604001528090502054610600526020610600f35b63156f1c328114156107865760043560605260243561064052608060805990590160009052600081526060518160200152600281604001526106405181606001528090502054610660526020610660f35b63b3a24fc081141561087857365990590160009052366004823760043560208201016106c0526024356106e05250600260206106c0510351018060200260200159905901600090528181526020810190509050610700523261070051526106e051602061070051015260026104c0525b600260206106c0510351016104c05112156108385760026104c051036020026106c05101516104c05160200261070051015260016104c051016104c0526107f6565b60206107005103516020026020599059016000905260208183610700516000600287604801f15080519050905061076052610760516107c05260206107c0f35b63e346f5fc811415610a1c576004356107e0526024356108005260006104c0525b606060605990590160009052600081526107e05181602001526001816040015280905020546104c05112156109e65760a060a05990590160009052600081526107e0518160200152600081604001526104c0518160600152600181608001528090502054610840526108405160a060a0599059016000905260008152610800518160200152600081604001526104c051816060015260018160800152809050205560a060a05990590160009052600081526107e0518160200152600081604001526104c051816060015260008160800152809050205460a060a0599059016000905260008152610800518160200152600081604001526104c05181606001526000816080015280905020556104c0516080608059905901600090526000815261080051816020015260028160400152610840518160600152809050205560016104c051016104c052610899565b6104c051606060605990590160009052600081526108005181602001526001816040015280905020556001610920526020610920f35b633fb57036811415610b5457600435606052602435610940526060606059905901600090526000815260605181602001526001816040015280905020546109605261096051608060805990590160009052600081526060518160200152600281604001526109405181606001528090502055600060a060a05990590160009052600081526060518160200152600081604001526109605181606001526000816080015280905020556109405160a060a05990590160009052600081526060518160200152600081604001526109605181606001526001816080015280905020556001606060605990590160009052600081526060518160200152600181604001528090502054016060606059905901600090526000815260605181602001526001816040015280905020556001610a40526020610a40f35b6312709a33811415610beb57600435606052602435608052604435610a6052610a605160a060a059905901600090526000815260605181602001526000816040015260805181606001526000816080015280905020540160a060a059905901600090526000815260605181602001526000816040015260805181606001526000816080015280905020556001610ac0526020610ac0f35b633229cf6e811415610c8257600435606052602435608052604435610a6052610a605160a060a059905901600090526000815260605181602001526000816040015260805181606001526000816080015280905020540360a060a059905901600090526000815260605181602001526000816040015260805181606001526000816080015280905020556001610b20526020610b20f35b63a75f5c6a811415610ce557600435606052602435608052604435610a6052610a605160a060a059905901600090526000815260605181602001526000816040015260805181606001526000816080015280905020556001610b60526020610b60f35b50 # noqa: E501 + contract_10 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE8(offset=0xB7F, value=0x0) + + Op.DIV( + Op.CALLDATALOAD(offset=0x0), + 0x100000000000000000000000000000000000000000000000000000000, ) - + Op.ADD(Op.DUP2, 0x1) - + Op.SWAP1 - + Op.POP - + Op.JUMP(pc=0x1128) - + Op.JUMPDEST + Op.MSTORE( - offset=Op.ADD(Op.DUP4, Op.MUL(0x20, Op.DUP2)), - value=Op.AND( - Op.SLOAD(key=Op.ADD(Op.DUP6, Op.DUP2)), - Op.SUB( - 0x0, Op.EXP(0x100, Op.SUB(0x20, Op.MOD(Op.DUP4, 0x20))) - ), - ), - ) - + Op.DUP2 - + Op.SWAP1 - + Op.POP - + Op.SWAP1 - + Op.POP - + Op.SWAP1 - + Op.POP - + Op.SWAP1 - + Op.POP - + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x40), value=0x20) - + Op.RETURN( - offset=Op.SUB(Op.DUP3, 0x40), - size=Op.ADD( - 0x40, Op.MUL(Op.MLOAD(offset=Op.SUB(Op.DUP3, 0x20)), 0x20) - ), + offset=0x20, value=0xC9AE5868651BF7B7DB6E360217DB49CE4E69C07E ) - + Op.POP - + Op.JUMPDEST - + Op.JUMPI(pc=0x12A3, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0xB86F5125))) + + Op.JUMPI(pc=0x245, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x8D3D587))) + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) - + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) - + Op.PUSH1[0xA0] * 2 + + Op.PUSH1[0x60] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -1731,13 +1537,12 @@ def test_block504980( + Op.MSTORE + Op.MSTORE(offset=Op.DUP2, value=0x0) + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x14) - + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x0) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x1) + Op.DUP1 + Op.SWAP1 + Op.POP - + Op.SHA3 + + Op.MSTORE(offset=0x80, value=Op.SLOAD(key=Op.SHA3)) + + Op.PUSH1[0x0] + Op.PUSH1[0x80] * 2 + Op.MSIZE + Op.SWAP1 @@ -1748,12 +1553,13 @@ def test_block504980( + Op.MSTORE + Op.MSTORE(offset=Op.DUP2, value=0x0) + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x0) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x2) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=Op.ORIGIN) + Op.DUP1 + Op.SWAP1 + Op.POP + Op.SLOAD(key=Op.SHA3) + + Op.JUMPI(pc=0x14E, condition=Op.ISZERO(Op.ISZERO(Op.EQ))) + Op.PUSH1[0x80] * 2 + Op.MSIZE + Op.SWAP1 @@ -1764,15 +1570,14 @@ def test_block504980( + Op.MSTORE + Op.MSTORE(offset=Op.DUP2, value=0x0) + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x5) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x2) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=Op.ORIGIN) + Op.DUP1 + Op.SWAP1 + Op.POP - + Op.SLOAD(key=Op.SHA3) - + Op.MUL(0x20, Op.SDIV) - + Op.DUP1 - + Op.ADD(0x20, Op.DUP1) + + Op.MSTORE(offset=0x80, value=Op.SLOAD(key=Op.SHA3)) + + Op.PUSH9[0x2F0000000000000000] + + Op.PUSH1[0xA0] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -1780,57 +1585,56 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=Op.DUP2) - + Op.ADD(Op.DUP2, 0x20) + + Op.MSTORE(offset=Op.DUP2, value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x0) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=Op.MLOAD(offset=0x80)) + + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x0) + + Op.DUP1 + Op.SWAP1 + Op.POP + + Op.SHA3 + + Op.SSTORE + + Op.ORIGIN + + Op.PUSH1[0xA0] * 2 + + Op.MSIZE + Op.SWAP1 - + Op.POP + + Op.MSIZE + + Op.ADD + Op.PUSH1[0x0] - + Op.JUMPDEST - + Op.JUMPI( - pc=0x1267, - condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.DIV(Op.DUP4, 0x20))), - ) - + Op.MSTORE( - offset=Op.ADD(Op.DUP4, Op.MUL(0x20, Op.DUP2)), - value=Op.SLOAD(key=Op.ADD(Op.DUP5, Op.DUP1)), - ) - + Op.ADD(Op.DUP2, 0x1) + Op.SWAP1 - + Op.POP - + Op.JUMP(pc=0x1246) - + Op.JUMPDEST - + Op.MSTORE( - offset=Op.ADD(Op.DUP4, Op.MUL(0x20, Op.DUP2)), - value=Op.AND( - Op.SLOAD(key=Op.ADD(Op.DUP6, Op.DUP2)), - Op.SUB( - 0x0, Op.EXP(0x100, Op.SUB(0x20, Op.MOD(Op.DUP4, 0x20))) - ), - ), - ) - + Op.DUP2 + + Op.MSTORE + + Op.MSTORE(offset=Op.DUP2, value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x0) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=Op.MLOAD(offset=0x80)) + + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x1) + + Op.DUP1 + Op.SWAP1 + Op.POP + + Op.SHA3 + + Op.SSTORE + + Op.JUMP(pc=0x238) + + Op.JUMPDEST + + Op.MLOAD(offset=0x80) + + Op.PUSH1[0x80] * 2 + + Op.MSIZE + Op.SWAP1 - + Op.POP + + Op.MSIZE + + Op.ADD + + Op.PUSH1[0x0] + Op.SWAP1 - + Op.POP + + Op.MSTORE + + Op.MSTORE(offset=Op.DUP2, value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x2) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=Op.ORIGIN) + + Op.DUP1 + Op.SWAP1 + Op.POP - + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x40), value=0x20) - + Op.RETURN( - offset=Op.SUB(Op.DUP3, 0x40), - size=Op.ADD( - 0x40, Op.MUL(Op.MLOAD(offset=Op.SUB(Op.DUP3, 0x20)), 0x20) - ), - ) - + Op.POP - + Op.JUMPDEST - + Op.JUMPI(pc=0x1394, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0xBC3D7D85))) - + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) - + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) + + Op.SHA3 + + Op.SSTORE + + Op.PUSH9[0x2F0000000000000000] + Op.PUSH1[0xA0] * 2 + Op.MSIZE + Op.SWAP1 @@ -1841,14 +1645,16 @@ def test_block504980( + Op.MSTORE + Op.MSTORE(offset=Op.DUP2, value=0x0) + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x15) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x0) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=Op.MLOAD(offset=0x80)) + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x0) + Op.DUP1 + Op.SWAP1 + Op.POP + Op.SHA3 - + Op.PUSH1[0x80] * 2 + + Op.SSTORE + + Op.ORIGIN + + Op.PUSH1[0xA0] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -1858,14 +1664,16 @@ def test_block504980( + Op.MSTORE + Op.MSTORE(offset=Op.DUP2, value=0x0) + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x0) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x0) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=Op.MLOAD(offset=0x80)) + + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x1) + Op.DUP1 + Op.SWAP1 + Op.POP - + Op.MUL(0x20, Op.SLOAD(key=Op.SHA3)) - + Op.DUP1 - + Op.ADD(0x20, Op.DUP1) + + Op.SHA3 + + Op.SSTORE + + Op.PUSH1[0x1] + + Op.PUSH1[0x60] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -1873,59 +1681,37 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=Op.DUP2) - + Op.ADD(Op.DUP2, 0x20) + + Op.MSTORE(offset=Op.DUP2, value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x1) + + Op.DUP1 + Op.SWAP1 + Op.POP + + Op.SLOAD(key=Op.SHA3) + + Op.ADD + + Op.PUSH1[0x60] * 2 + + Op.MSIZE + Op.SWAP1 - + Op.POP + + Op.MSIZE + + Op.ADD + Op.PUSH1[0x0] - + Op.JUMPDEST - + Op.JUMPI( - pc=0x1358, - condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.DIV(Op.DUP4, 0x20))), - ) - + Op.MSTORE( - offset=Op.ADD(Op.DUP4, Op.MUL(0x20, Op.DUP2)), - value=Op.SLOAD(key=Op.ADD(Op.DUP5, Op.DUP1)), - ) - + Op.ADD(Op.DUP2, 0x1) + + Op.SWAP1 + + Op.MSTORE + + Op.MSTORE(offset=Op.DUP2, value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x1) + + Op.DUP1 + Op.SWAP1 + Op.POP - + Op.JUMP(pc=0x1337) + + Op.SHA3 + + Op.SSTORE + Op.JUMPDEST - + Op.MSTORE( - offset=Op.ADD(Op.DUP4, Op.MUL(0x20, Op.DUP2)), - value=Op.AND( - Op.SLOAD(key=Op.ADD(Op.DUP6, Op.DUP2)), - Op.SUB( - 0x0, Op.EXP(0x100, Op.SUB(0x20, Op.MOD(Op.DUP4, 0x20))) - ), - ), - ) - + Op.DUP2 - + Op.SWAP1 - + Op.POP - + Op.SWAP1 - + Op.POP - + Op.SWAP1 - + Op.POP - + Op.SWAP1 - + Op.POP - + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x40), value=0x20) - + Op.RETURN( - offset=Op.SUB(Op.DUP3, 0x40), - size=Op.ADD( - 0x40, Op.MUL(Op.MLOAD(offset=Op.SUB(Op.DUP3, 0x20)), 0x20) - ), - ) - + Op.POP + + Op.MSTORE(offset=0x1E0, value=0x1) + + Op.RETURN(offset=0x1E0, size=0x20) + Op.JUMPDEST - + Op.JUMPI(pc=0x1481, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0xA2302F2F))) + + Op.JUMPI(pc=0x29D, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x28C8B315))) + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) - + Op.MSTORE(offset=0x1680, value=Op.CALLDATALOAD(offset=0x24)) - + Op.MSTORE(offset=0x16A0, value=Op.CALLDATALOAD(offset=0x44)) - + Op.MLOAD(offset=0x16A0) + + Op.MSTORE(offset=0x200, value=Op.CALLDATALOAD(offset=0x24)) + Op.PUSH1[0xA0] * 2 + Op.MSIZE + Op.SWAP1 @@ -1936,10 +1722,18 @@ def test_block504980( + Op.MSTORE + Op.MSTORE(offset=Op.DUP2, value=0x0) + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE( - offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x1680) - ) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x1) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x0) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=Op.MLOAD(offset=0x200)) + + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x0) + + Op.DUP1 + + Op.SWAP1 + + Op.POP + + Op.MSTORE(offset=0x220, value=Op.SLOAD(key=Op.SHA3)) + + Op.RETURN(offset=0x220, size=0x20) + + Op.JUMPDEST + + Op.JUMPI(pc=0x386, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x74AF23EC))) + + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) + + Op.MSTORE(offset=0x260, value=Op.CALLDATALOAD(offset=0x24)) + Op.PUSH1[0x80] * 2 + Op.MSIZE + Op.SWAP1 @@ -1950,21 +1744,17 @@ def test_block504980( + Op.MSTORE + Op.MSTORE(offset=Op.DUP2, value=0x0) + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE( - offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x1680) - ) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x0) - + Op.DUP1 - + Op.SWAP1 - + Op.POP - + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=Op.SLOAD(key=Op.SHA3)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x2) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=Op.MLOAD(offset=0x260)) + Op.DUP1 + Op.SWAP1 + Op.POP - + Op.SHA3 - + Op.SSTORE - + Op.PUSH1[0x1] - + Op.PUSH1[0x80] * 2 + + Op.MSTORE(offset=0x200, value=Op.SLOAD(key=Op.SHA3)) + + Op.JUMPI( + pc=0x332, condition=Op.ISZERO(Op.EQ(Op.MLOAD(offset=0x200), 0x0)) + ) + + Op.MLOAD(offset=0x260) + + Op.PUSH1[0xA0] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -1974,16 +1764,23 @@ def test_block504980( + Op.MSTORE + Op.MSTORE(offset=Op.DUP2, value=0x0) + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE( - offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x1680) - ) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x0) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x0) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=Op.MLOAD(offset=0x200)) + + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x1) + Op.DUP1 + Op.SWAP1 + Op.POP + Op.SLOAD(key=Op.SHA3) - + Op.ADD - + Op.PUSH1[0x80] * 2 + + Op.ISZERO(Op.EQ) + + Op.JUMP(pc=0x335) + + Op.JUMPDEST + + Op.PUSH1[0x0] + + Op.JUMPDEST + + Op.JUMPI(pc=0x347, condition=Op.ISZERO) + + Op.MSTORE(offset=0x2C0, value=0x0) + + Op.RETURN(offset=0x2C0, size=0x20) + + Op.JUMPDEST + + Op.PUSH1[0xA0] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -1993,24 +1790,19 @@ def test_block504980( + Op.MSTORE + Op.MSTORE(offset=Op.DUP2, value=0x0) + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE( - offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x1680) - ) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x0) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x0) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=Op.MLOAD(offset=0x200)) + + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x0) + Op.DUP1 + Op.SWAP1 + Op.POP - + Op.SHA3 - + Op.SSTORE - + Op.MSTORE(offset=0x1740, value=0x1) - + Op.RETURN(offset=0x1740, size=0x20) + + Op.MSTORE(offset=0x2E0, value=Op.SLOAD(key=Op.SHA3)) + + Op.RETURN(offset=0x2E0, size=0x20) + Op.JUMPDEST - + Op.JUMPI(pc=0x14DD, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x58CA2BC))) + + Op.JUMPI(pc=0x3DC, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x84D646EE))) + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) - + Op.MSTORE(offset=0x1760, value=Op.CALLDATALOAD(offset=0x44)) - + Op.MLOAD(offset=0x1760) - + Op.PUSH1[0x80] * 2 + + Op.PUSH1[0xA0] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -2020,18 +1812,19 @@ def test_block504980( + Op.MSTORE + Op.MSTORE(offset=Op.DUP2, value=0x0) + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x2) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x0) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=Op.MLOAD(offset=0x80)) + + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x1) + Op.DUP1 + Op.SWAP1 + Op.POP - + Op.SHA3 - + Op.SSTORE - + Op.MSTORE(offset=0x17A0, value=0x1) - + Op.RETURN(offset=0x17A0, size=0x20) + + Op.MSTORE(offset=0x320, value=Op.SLOAD(key=Op.SHA3)) + + Op.RETURN(offset=0x320, size=0x20) + Op.JUMPDEST - + Op.JUMPI(pc=0x1617, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x5D3B965B))) - + Op.CALLDATASIZE + + Op.JUMPI(pc=0x6F4, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0xF4229427))) + + Op.MSTORE(offset=0x260, value=Op.CALLDATALOAD(offset=0x4)) + + Op.PUSH1[0x1C] + + Op.PUSH1[0x24] + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -2039,19 +1832,27 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.CALLDATACOPY( - dest_offset=Op.DUP3, offset=0x4, size=Op.CALLDATASIZE - ) - + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) - + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) - + Op.MSTORE(offset=0x280, value=Op.CALLDATALOAD(offset=0x44)) - + Op.MSTORE( - offset=0x17E0, - value=Op.ADD(Op.ADD(Op.DUP3, 0x20), Op.CALLDATALOAD(offset=0x64)), + + Op.ADD + + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0x175C6322) + + Op.POP( + Op.CALL( + gas=Op.SUB(Op.GAS, 0x2D), + address=Op.MLOAD(offset=0x20), + value=0x0, + args_offset=Op.DUP4, + args_size=0x4, + ret_offset=0x3A0, + ret_size=0x20, + ) ) - + Op.MSTORE(offset=0x1800, value=Op.CALLDATALOAD(offset=0x84)) + + Op.MLOAD(offset=0x3A0) + + Op.SWAP1 + Op.POP - + Op.PUSH1[0xC0] * 2 + + Op.PUSH2[0x360] + + Op.MSTORE + + Op.JUMPI(pc=0x581, condition=Op.ISZERO(Op.MLOAD(offset=0x260))) + + Op.MUL(0x2, Op.MLOAD(offset=0x360)) + + Op.ADD(0x20, Op.MUL(0x20, Op.DUP1)) + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -2059,48 +1860,16 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x3) - + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=Op.MLOAD(offset=0x280)) - + Op.MSTORE(offset=Op.ADD(0xA0, Op.DUP2), value=0x0) - + Op.DUP1 + + Op.MSTORE(offset=Op.DUP2, value=Op.DUP2) + + Op.ADD(Op.DUP2, 0x20) + Op.SWAP1 + Op.POP - + Op.SHA3 - + Op.MUL(0x20, Op.MLOAD(offset=Op.SUB(Op.MLOAD(offset=0x17E0), 0x20))) - + Op.DIV(Op.DUP2, 0x20) - + Op.PUSH1[0x0] - + Op.JUMPDEST - + Op.JUMPI(pc=0x158C, condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.DUP2))) - + Op.SSTORE( - key=Op.ADD(Op.DUP3, Op.DUP5), - value=Op.MLOAD( - offset=Op.ADD(Op.MLOAD(offset=0x17E0), Op.MUL(0x20, Op.DUP1)) - ), - ) - + Op.ADD(Op.DUP2, 0x1) + Op.SWAP1 + Op.POP - + Op.JUMP(pc=0x156B) - + Op.JUMPDEST - + Op.SSTORE( - key=Op.ADD(Op.DUP3, Op.DUP5), - value=Op.AND( - Op.MLOAD( - offset=Op.ADD( - Op.MLOAD(offset=0x17E0), Op.MUL(0x20, Op.DUP2) - ) - ), - Op.SUB( - 0x0, Op.EXP(0x100, Op.SUB(0x20, Op.MOD(Op.DUP4, 0x20))) - ), - ), - ) - + Op.POP * 4 - + Op.MLOAD(offset=0x1800) - + Op.PUSH1[0x80] * 2 + + Op.PUSH2[0x3C0] + + Op.MSTORE + + Op.MLOAD(offset=0x360) + + Op.ADD(0x20, Op.MUL(0x20, Op.DUP1)) + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -2108,41 +1877,16 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x2) - + Op.DUP1 + + Op.MSTORE(offset=Op.DUP2, value=Op.DUP2) + + Op.ADD(Op.DUP2, 0x20) + Op.SWAP1 + Op.POP - + Op.SLOAD(key=Op.SHA3) - + Op.ADD - + Op.PUSH1[0x80] * 2 - + Op.MSIZE - + Op.SWAP1 - + Op.MSIZE - + Op.ADD - + Op.PUSH1[0x0] - + Op.SWAP1 - + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x2) - + Op.DUP1 + Op.SWAP1 + Op.POP - + Op.SHA3 - + Op.SSTORE - + Op.MSTORE(offset=0x1900, value=0x1) - + Op.RETURN(offset=0x1900, size=0x20) - + Op.JUMPDEST - + Op.JUMPI(pc=0x1673, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0xB0E14F0F))) - + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) - + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) - + Op.MSTORE(offset=0x1920, value=Op.CALLDATALOAD(offset=0x44)) - + Op.MLOAD(offset=0x1920) - + Op.PUSH1[0x80] * 2 + + Op.PUSH2[0x420] + + Op.MSTORE + + Op.PUSH1[0x1C] + + Op.PUSH1[0x24] + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -2150,20 +1894,10 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x5) - + Op.DUP1 - + Op.SWAP1 - + Op.POP - + Op.SHA3 - + Op.SSTORE - + Op.MSTORE(offset=0x1960, value=0x1) - + Op.RETURN(offset=0x1960, size=0x20) - + Op.JUMPDEST - + Op.JUMPI(pc=0x1739, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x6ACCCDBC))) - + Op.CALLDATASIZE + + Op.ADD + + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0xC3387858) + + Op.MLOAD(offset=0x360) + + Op.ADD(Op.MUL(0x20, Op.DUP2), 0x40) + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -2171,86 +1905,46 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.CALLDATACOPY( - dest_offset=Op.DUP3, offset=0x4, size=Op.CALLDATASIZE - ) - + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) - + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) - + Op.MSTORE( - offset=0x1980, - value=Op.ADD(Op.ADD(Op.DUP3, 0x20), Op.CALLDATALOAD(offset=0x44)), + + Op.POP( + Op.CALL( + gas=Op.SUB(Op.GAS, 0x2D), + address=Op.MLOAD(offset=0x20), + value=0x0, + args_offset=Op.DUP6, + args_size=0x4, + ret_offset=Op.DUP2, + ret_size=Op.ADD(0x40, Op.MUL(0x20, Op.DUP2)), + ) ) - + Op.POP - + Op.PUSH1[0xA0] * 2 - + Op.MSIZE - + Op.SWAP1 - + Op.MSIZE - + Op.ADD - + Op.PUSH1[0x0] + + Op.ADD(Op.DUP2, 0x40) + Op.SWAP1 - + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x6) - + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x0) - + Op.DUP1 + + Op.POP + Op.SWAP1 + Op.POP - + Op.SHA3 - + Op.MUL(0x20, Op.MLOAD(offset=Op.SUB(Op.MLOAD(offset=0x1980), 0x20))) - + Op.DIV(Op.DUP2, 0x20) - + Op.PUSH1[0x0] - + Op.JUMPDEST - + Op.JUMPI(pc=0x170B, condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.DUP2))) - + Op.SSTORE( - key=Op.ADD(Op.DUP3, Op.DUP5), - value=Op.MLOAD( - offset=Op.ADD(Op.MLOAD(offset=0x1980), Op.MUL(0x20, Op.DUP1)) - ), - ) - + Op.ADD(Op.DUP2, 0x1) + Op.SWAP1 + Op.POP - + Op.JUMP(pc=0x16EA) + + Op.PUSH2[0x420] + + Op.MSTORE + + Op.MSTORE(offset=0x4C0, value=0x0) + + Op.MSTORE(offset=0x4E0, value=0x0) + Op.JUMPDEST - + Op.SSTORE( - key=Op.ADD(Op.DUP3, Op.DUP5), - value=Op.AND( - Op.MLOAD( - offset=Op.ADD( - Op.MLOAD(offset=0x1980), Op.MUL(0x20, Op.DUP2) - ) - ), - Op.SUB( - 0x0, Op.EXP(0x100, Op.SUB(0x20, Op.MOD(Op.DUP4, 0x20))) - ), + + Op.JUMPI( + pc=0x57C, + condition=Op.ISZERO( + Op.SLT(Op.MLOAD(offset=0x4C0), Op.MLOAD(offset=0x360)) ), ) - + Op.POP * 4 - + Op.MSTORE(offset=0x1A40, value=0x1) - + Op.RETURN(offset=0x1A40, size=0x20) - + Op.JUMPDEST - + Op.JUMPI(pc=0x17FF, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0xA1FA51F9))) - + Op.CALLDATASIZE - + Op.MSIZE - + Op.SWAP1 - + Op.MSIZE - + Op.ADD - + Op.PUSH1[0x0] - + Op.SWAP1 - + Op.MSTORE - + Op.CALLDATACOPY( - dest_offset=Op.DUP3, offset=0x4, size=Op.CALLDATASIZE - ) - + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) - + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) + Op.MSTORE( - offset=0x1A60, - value=Op.ADD(Op.ADD(Op.DUP3, 0x20), Op.CALLDATALOAD(offset=0x44)), + offset=0x60, + value=Op.MLOAD( + offset=Op.ADD( + Op.MLOAD(offset=0x420), + Op.MUL(0x20, Op.MLOAD(offset=0x4C0)), + ) + ), ) - + Op.POP - + Op.PUSH1[0xA0] * 2 + + Op.PUSH1[0x1C] + + Op.PUSH1[0x64] + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -2258,50 +1952,53 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x7) - + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x0) - + Op.DUP1 + + Op.ADD + + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0x74AF23EC) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0x60)) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=Op.MLOAD(offset=0x260)) + + Op.POP( + Op.CALL( + gas=Op.SUB(Op.GAS, 0x2D), + address=Op.ADDRESS, + value=0x0, + args_offset=Op.DUP4, + args_size=0x44, + ret_offset=0x520, + ret_size=0x20, + ) + ) + + Op.MLOAD(offset=0x520) + Op.SWAP1 + Op.POP - + Op.SHA3 - + Op.MUL(0x20, Op.MLOAD(offset=Op.SUB(Op.MLOAD(offset=0x1A60), 0x20))) - + Op.DIV(Op.DUP2, 0x20) - + Op.PUSH1[0x0] - + Op.JUMPDEST - + Op.JUMPI(pc=0x17D1, condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.DUP2))) - + Op.SSTORE( - key=Op.ADD(Op.DUP3, Op.DUP5), - value=Op.MLOAD( - offset=Op.ADD(Op.MLOAD(offset=0x1A60), Op.MUL(0x20, Op.DUP1)) + + Op.PUSH2[0x500] + + Op.MSTORE + + Op.JUMPI( + pc=0x56C, + condition=Op.ISZERO(Op.ISZERO(Op.EQ(Op.MLOAD(offset=0x500), 0x0))), + ) + + Op.MSTORE( + offset=Op.ADD( + Op.MLOAD(offset=0x3C0), Op.MUL(0x20, Op.MLOAD(offset=0x4E0)) ), + value=Op.MLOAD(offset=0x60), ) - + Op.ADD(Op.DUP2, 0x1) - + Op.SWAP1 - + Op.POP - + Op.JUMP(pc=0x17B0) - + Op.JUMPDEST - + Op.SSTORE( - key=Op.ADD(Op.DUP3, Op.DUP5), - value=Op.AND( - Op.MLOAD( - offset=Op.ADD( - Op.MLOAD(offset=0x1A60), Op.MUL(0x20, Op.DUP2) - ) - ), - Op.SUB( - 0x0, Op.EXP(0x100, Op.SUB(0x20, Op.MOD(Op.DUP4, 0x20))) - ), + + Op.MSTORE( + offset=Op.ADD( + Op.MLOAD(offset=0x3C0), + Op.MUL(0x20, Op.ADD(Op.MLOAD(offset=0x4E0), 0x1)), ), + value=Op.MLOAD(offset=0x500), ) - + Op.POP * 4 - + Op.MSTORE(offset=0x1B20, value=0x1) - + Op.RETURN(offset=0x1B20, size=0x20) + + Op.MSTORE(offset=0x4E0, value=Op.ADD(Op.MLOAD(offset=0x4E0), 0x2)) + Op.JUMPDEST - + Op.JUMPI(pc=0x18C5, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0xCD87F43A))) - + Op.CALLDATASIZE + + Op.MSTORE(offset=0x4C0, value=Op.ADD(Op.MLOAD(offset=0x4C0), 0x1)) + + Op.JUMP(pc=0x4CE) + + Op.JUMPDEST + + Op.JUMP(pc=0x6D7) + + Op.JUMPDEST + + Op.MSTORE(offset=0x260, value=Op.ORIGIN) + + Op.MUL(0x2, Op.MLOAD(offset=0x360)) + + Op.ADD(0x20, Op.MUL(0x20, Op.DUP1)) + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -2309,17 +2006,16 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.CALLDATACOPY( - dest_offset=Op.DUP3, offset=0x4, size=Op.CALLDATASIZE - ) - + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) - + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) - + Op.MSTORE( - offset=0x1B40, - value=Op.ADD(Op.ADD(Op.DUP3, 0x20), Op.CALLDATALOAD(offset=0x44)), - ) + + Op.MSTORE(offset=Op.DUP2, value=Op.DUP2) + + Op.ADD(Op.DUP2, 0x20) + + Op.SWAP1 + Op.POP - + Op.PUSH1[0xA0] * 2 + + Op.SWAP1 + + Op.POP + + Op.PUSH2[0x3C0] + + Op.MSTORE + + Op.MLOAD(offset=0x360) + + Op.ADD(0x20, Op.MUL(0x20, Op.DUP1)) + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -2327,50 +2023,16 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x8) - + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x0) - + Op.DUP1 + + Op.MSTORE(offset=Op.DUP2, value=Op.DUP2) + + Op.ADD(Op.DUP2, 0x20) + Op.SWAP1 + Op.POP - + Op.SHA3 - + Op.MUL(0x20, Op.MLOAD(offset=Op.SUB(Op.MLOAD(offset=0x1B40), 0x20))) - + Op.DIV(Op.DUP2, 0x20) - + Op.PUSH1[0x0] - + Op.JUMPDEST - + Op.JUMPI(pc=0x1897, condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.DUP2))) - + Op.SSTORE( - key=Op.ADD(Op.DUP3, Op.DUP5), - value=Op.MLOAD( - offset=Op.ADD(Op.MLOAD(offset=0x1B40), Op.MUL(0x20, Op.DUP1)) - ), - ) - + Op.ADD(Op.DUP2, 0x1) + Op.SWAP1 + Op.POP - + Op.JUMP(pc=0x1876) - + Op.JUMPDEST - + Op.SSTORE( - key=Op.ADD(Op.DUP3, Op.DUP5), - value=Op.AND( - Op.MLOAD( - offset=Op.ADD( - Op.MLOAD(offset=0x1B40), Op.MUL(0x20, Op.DUP2) - ) - ), - Op.SUB( - 0x0, Op.EXP(0x100, Op.SUB(0x20, Op.MOD(Op.DUP4, 0x20))) - ), - ), - ) - + Op.POP * 4 - + Op.MSTORE(offset=0x1C00, value=0x1) - + Op.RETURN(offset=0x1C00, size=0x20) - + Op.JUMPDEST - + Op.JUMPI(pc=0x198B, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x222A8663))) - + Op.CALLDATASIZE + + Op.PUSH2[0x420] + + Op.MSTORE + + Op.PUSH1[0x1C] + + Op.PUSH1[0x24] + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -2378,17 +2040,10 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.CALLDATACOPY( - dest_offset=Op.DUP3, offset=0x4, size=Op.CALLDATASIZE - ) - + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) - + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) - + Op.MSTORE( - offset=0x1C20, - value=Op.ADD(Op.ADD(Op.DUP3, 0x20), Op.CALLDATALOAD(offset=0x44)), - ) - + Op.POP - + Op.PUSH1[0xA0] * 2 + + Op.ADD + + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0xC3387858) + + Op.MLOAD(offset=0x360) + + Op.ADD(Op.MUL(0x20, Op.DUP2), 0x40) + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -2396,68 +2051,46 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x9) - + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x0) - + Op.DUP1 - + Op.SWAP1 - + Op.POP - + Op.SHA3 - + Op.MUL(0x20, Op.MLOAD(offset=Op.SUB(Op.MLOAD(offset=0x1C20), 0x20))) - + Op.DIV(Op.DUP2, 0x20) - + Op.PUSH1[0x0] - + Op.JUMPDEST - + Op.JUMPI(pc=0x195D, condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.DUP2))) - + Op.SSTORE( - key=Op.ADD(Op.DUP3, Op.DUP5), - value=Op.MLOAD( - offset=Op.ADD(Op.MLOAD(offset=0x1C20), Op.MUL(0x20, Op.DUP1)) - ), + + Op.POP( + Op.CALL( + gas=Op.SUB(Op.GAS, 0x2D), + address=Op.MLOAD(offset=0x20), + value=0x0, + args_offset=Op.DUP6, + args_size=0x4, + ret_offset=Op.DUP2, + ret_size=Op.ADD(0x40, Op.MUL(0x20, Op.DUP2)), + ) ) - + Op.ADD(Op.DUP2, 0x1) + + Op.ADD(Op.DUP2, 0x40) + Op.SWAP1 + Op.POP - + Op.JUMP(pc=0x193C) - + Op.JUMPDEST - + Op.SSTORE( - key=Op.ADD(Op.DUP3, Op.DUP5), - value=Op.AND( - Op.MLOAD( - offset=Op.ADD( - Op.MLOAD(offset=0x1C20), Op.MUL(0x20, Op.DUP2) - ) - ), - Op.SUB( - 0x0, Op.EXP(0x100, Op.SUB(0x20, Op.MOD(Op.DUP4, 0x20))) - ), - ), - ) - + Op.POP * 4 - + Op.MSTORE(offset=0x1CE0, value=0x1) - + Op.RETURN(offset=0x1CE0, size=0x20) - + Op.JUMPDEST - + Op.JUMPI(pc=0x1A51, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0xB39E1FAA))) - + Op.CALLDATASIZE - + Op.MSIZE + Op.SWAP1 - + Op.MSIZE - + Op.ADD - + Op.PUSH1[0x0] + + Op.POP + Op.SWAP1 + + Op.POP + + Op.PUSH2[0x420] + Op.MSTORE - + Op.CALLDATACOPY( - dest_offset=Op.DUP3, offset=0x4, size=Op.CALLDATASIZE + + Op.MSTORE(offset=0x4C0, value=0x0) + + Op.MSTORE(offset=0x4E0, value=0x0) + + Op.JUMPDEST + + Op.JUMPI( + pc=0x6D6, + condition=Op.ISZERO( + Op.SLT(Op.MLOAD(offset=0x4C0), Op.MLOAD(offset=0x360)) + ), ) - + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) - + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) + Op.MSTORE( - offset=0x1D00, - value=Op.ADD(Op.ADD(Op.DUP3, 0x20), Op.CALLDATALOAD(offset=0x44)), + offset=0x60, + value=Op.MLOAD( + offset=Op.ADD( + Op.MLOAD(offset=0x420), + Op.MUL(0x20, Op.MLOAD(offset=0x4C0)), + ) + ), ) - + Op.POP - + Op.PUSH1[0xA0] * 2 + + Op.PUSH1[0x1C] + + Op.PUSH1[0x64] + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -2465,68 +2098,61 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0xA) - + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x0) - + Op.DUP1 + + Op.ADD + + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0x74AF23EC) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0x60)) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=Op.MLOAD(offset=0x260)) + + Op.POP( + Op.CALL( + gas=Op.SUB(Op.GAS, 0x2D), + address=Op.ADDRESS, + value=0x0, + args_offset=Op.DUP4, + args_size=0x44, + ret_offset=0x5C0, + ret_size=0x20, + ) + ) + + Op.MLOAD(offset=0x5C0) + Op.SWAP1 + Op.POP - + Op.SHA3 - + Op.MUL(0x20, Op.MLOAD(offset=Op.SUB(Op.MLOAD(offset=0x1D00), 0x20))) - + Op.DIV(Op.DUP2, 0x20) - + Op.PUSH1[0x0] - + Op.JUMPDEST - + Op.JUMPI(pc=0x1A23, condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.DUP2))) - + Op.SSTORE( - key=Op.ADD(Op.DUP3, Op.DUP5), - value=Op.MLOAD( - offset=Op.ADD(Op.MLOAD(offset=0x1D00), Op.MUL(0x20, Op.DUP1)) + + Op.PUSH2[0x500] + + Op.MSTORE + + Op.JUMPI( + pc=0x6C6, + condition=Op.ISZERO(Op.ISZERO(Op.EQ(Op.MLOAD(offset=0x500), 0x0))), + ) + + Op.MSTORE( + offset=Op.ADD( + Op.MLOAD(offset=0x3C0), Op.MUL(0x20, Op.MLOAD(offset=0x4E0)) ), + value=Op.MLOAD(offset=0x60), ) - + Op.ADD(Op.DUP2, 0x1) - + Op.SWAP1 - + Op.POP - + Op.JUMP(pc=0x1A02) - + Op.JUMPDEST - + Op.SSTORE( - key=Op.ADD(Op.DUP3, Op.DUP5), - value=Op.AND( - Op.MLOAD( - offset=Op.ADD( - Op.MLOAD(offset=0x1D00), Op.MUL(0x20, Op.DUP2) - ) - ), - Op.SUB( - 0x0, Op.EXP(0x100, Op.SUB(0x20, Op.MOD(Op.DUP4, 0x20))) - ), + + Op.MSTORE( + offset=Op.ADD( + Op.MLOAD(offset=0x3C0), + Op.MUL(0x20, Op.ADD(Op.MLOAD(offset=0x4E0), 0x1)), ), + value=Op.MLOAD(offset=0x500), ) - + Op.POP * 4 - + Op.MSTORE(offset=0x1DC0, value=0x1) - + Op.RETURN(offset=0x1DC0, size=0x20) + + Op.MSTORE(offset=0x4E0, value=Op.ADD(Op.MLOAD(offset=0x4E0), 0x2)) + Op.JUMPDEST - + Op.JUMPI(pc=0x1B17, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0xE365736B))) - + Op.CALLDATASIZE - + Op.MSIZE - + Op.SWAP1 - + Op.MSIZE - + Op.ADD - + Op.PUSH1[0x0] - + Op.SWAP1 - + Op.MSTORE - + Op.CALLDATACOPY( - dest_offset=Op.DUP3, offset=0x4, size=Op.CALLDATASIZE - ) - + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) - + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) - + Op.MSTORE( - offset=0x1DE0, - value=Op.ADD(Op.ADD(Op.DUP3, 0x20), Op.CALLDATALOAD(offset=0x44)), + + Op.MSTORE(offset=0x4C0, value=Op.ADD(Op.MLOAD(offset=0x4C0), 0x1)) + + Op.JUMP(pc=0x628) + + Op.JUMPDEST * 2 + + Op.MLOAD(offset=0x3C0) + + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x40), value=0x20) + + Op.RETURN( + offset=Op.SUB(Op.DUP3, 0x40), + size=Op.ADD( + 0x40, Op.MUL(Op.MLOAD(offset=Op.SUB(Op.DUP3, 0x20)), 0x20) + ), ) + Op.POP - + Op.PUSH1[0xA0] * 2 + + Op.JUMPDEST + + Op.JUMPI(pc=0x735, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x80B5E7BD))) + + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) + + Op.PUSH1[0x60] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -2536,51 +2162,16 @@ def test_block504980( + Op.MSTORE + Op.MSTORE(offset=Op.DUP2, value=0x0) + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0xB) - + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x0) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x1) + Op.DUP1 + Op.SWAP1 + Op.POP - + Op.SHA3 - + Op.MUL(0x20, Op.MLOAD(offset=Op.SUB(Op.MLOAD(offset=0x1DE0), 0x20))) - + Op.DIV(Op.DUP2, 0x20) - + Op.PUSH1[0x0] - + Op.JUMPDEST - + Op.JUMPI(pc=0x1AE9, condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.DUP2))) - + Op.SSTORE( - key=Op.ADD(Op.DUP3, Op.DUP5), - value=Op.MLOAD( - offset=Op.ADD(Op.MLOAD(offset=0x1DE0), Op.MUL(0x20, Op.DUP1)) - ), - ) - + Op.ADD(Op.DUP2, 0x1) - + Op.SWAP1 - + Op.POP - + Op.JUMP(pc=0x1AC8) - + Op.JUMPDEST - + Op.SSTORE( - key=Op.ADD(Op.DUP3, Op.DUP5), - value=Op.AND( - Op.MLOAD( - offset=Op.ADD( - Op.MLOAD(offset=0x1DE0), Op.MUL(0x20, Op.DUP2) - ) - ), - Op.SUB( - 0x0, Op.EXP(0x100, Op.SUB(0x20, Op.MOD(Op.DUP4, 0x20))) - ), - ), - ) - + Op.POP * 4 - + Op.MSTORE(offset=0x1EA0, value=0x1) - + Op.RETURN(offset=0x1EA0, size=0x20) + + Op.MSTORE(offset=0x600, value=Op.SLOAD(key=Op.SHA3)) + + Op.RETURN(offset=0x600, size=0x20) + Op.JUMPDEST - + Op.JUMPI(pc=0x1B73, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0xAAD7D6E3))) + + Op.JUMPI(pc=0x786, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x156F1C32))) + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) - + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) - + Op.MSTORE(offset=0x1EC0, value=Op.CALLDATALOAD(offset=0x44)) - + Op.MLOAD(offset=0x1EC0) + + Op.MSTORE(offset=0x640, value=Op.CALLDATALOAD(offset=0x24)) + Op.PUSH1[0x80] * 2 + Op.MSIZE + Op.SWAP1 @@ -2591,17 +2182,15 @@ def test_block504980( + Op.MSTORE + Op.MSTORE(offset=Op.DUP2, value=0x0) + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0xC) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x2) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=Op.MLOAD(offset=0x640)) + Op.DUP1 + Op.SWAP1 + Op.POP - + Op.SHA3 - + Op.SSTORE - + Op.MSTORE(offset=0x1F00, value=0x1) - + Op.RETURN(offset=0x1F00, size=0x20) + + Op.MSTORE(offset=0x660, value=Op.SLOAD(key=Op.SHA3)) + + Op.RETURN(offset=0x660, size=0x20) + Op.JUMPDEST - + Op.JUMPI(pc=0x1C39, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x1112B27))) + + Op.JUMPI(pc=0x878, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0xB3A24FC0))) + Op.CALLDATASIZE + Op.MSIZE + Op.SWAP1 @@ -2613,14 +2202,14 @@ def test_block504980( + Op.CALLDATACOPY( dest_offset=Op.DUP3, offset=0x4, size=Op.CALLDATASIZE ) - + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) - + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) + Op.MSTORE( - offset=0x1F20, - value=Op.ADD(Op.ADD(Op.DUP3, 0x20), Op.CALLDATALOAD(offset=0x44)), + offset=0x6C0, + value=Op.ADD(Op.ADD(Op.DUP3, 0x20), Op.CALLDATALOAD(offset=0x4)), ) + + Op.MSTORE(offset=0x6E0, value=Op.CALLDATALOAD(offset=0x24)) + Op.POP - + Op.PUSH1[0xA0] * 2 + + Op.ADD(Op.MLOAD(offset=Op.SUB(Op.MLOAD(offset=0x6C0), 0x20)), 0x2) + + Op.ADD(0x20, Op.MUL(0x20, Op.DUP1)) + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -2628,50 +2217,49 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0xD) - + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x0) - + Op.DUP1 + + Op.MSTORE(offset=Op.DUP2, value=Op.DUP2) + + Op.ADD(Op.DUP2, 0x20) + Op.SWAP1 + Op.POP - + Op.SHA3 - + Op.MUL(0x20, Op.MLOAD(offset=Op.SUB(Op.MLOAD(offset=0x1F20), 0x20))) - + Op.DIV(Op.DUP2, 0x20) - + Op.PUSH1[0x0] - + Op.JUMPDEST - + Op.JUMPI(pc=0x1C0B, condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.DUP2))) - + Op.SSTORE( - key=Op.ADD(Op.DUP3, Op.DUP5), - value=Op.MLOAD( - offset=Op.ADD(Op.MLOAD(offset=0x1F20), Op.MUL(0x20, Op.DUP1)) - ), - ) - + Op.ADD(Op.DUP2, 0x1) + Op.SWAP1 + Op.POP - + Op.JUMP(pc=0x1BEA) + + Op.PUSH2[0x700] + + Op.MSTORE + + Op.MSTORE(offset=Op.MLOAD(offset=0x700), value=Op.ORIGIN) + + Op.MSTORE( + offset=Op.ADD(Op.MLOAD(offset=0x700), 0x20), + value=Op.MLOAD(offset=0x6E0), + ) + + Op.MSTORE(offset=0x4C0, value=0x2) + Op.JUMPDEST - + Op.SSTORE( - key=Op.ADD(Op.DUP3, Op.DUP5), - value=Op.AND( - Op.MLOAD( - offset=Op.ADD( - Op.MLOAD(offset=0x1F20), Op.MUL(0x20, Op.DUP2) - ) - ), - Op.SUB( - 0x0, Op.EXP(0x100, Op.SUB(0x20, Op.MOD(Op.DUP4, 0x20))) - ), + + Op.JUMPI( + pc=0x838, + condition=Op.ISZERO( + Op.SLT( + Op.MLOAD(offset=0x4C0), + Op.ADD( + Op.MLOAD(offset=Op.SUB(Op.MLOAD(offset=0x6C0), 0x20)), + 0x2, + ), + ) ), ) - + Op.POP * 4 - + Op.MSTORE(offset=0x1FE0, value=0x1) - + Op.RETURN(offset=0x1FE0, size=0x20) + + Op.MSTORE( + offset=Op.ADD( + Op.MLOAD(offset=0x700), Op.MUL(0x20, Op.MLOAD(offset=0x4C0)) + ), + value=Op.MLOAD( + offset=Op.ADD( + Op.MLOAD(offset=0x6C0), + Op.MUL(0x20, Op.SUB(Op.MLOAD(offset=0x4C0), 0x2)), + ) + ), + ) + + Op.MSTORE(offset=0x4C0, value=Op.ADD(Op.MLOAD(offset=0x4C0), 0x1)) + + Op.JUMP(pc=0x7F6) + Op.JUMPDEST - + Op.JUMPI(pc=0x1CFF, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0xBDBB239B))) - + Op.CALLDATASIZE + + Op.MUL(0x20, Op.MLOAD(offset=Op.SUB(Op.MLOAD(offset=0x700), 0x20))) + + Op.PUSH1[0x20] + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -2679,17 +2267,33 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.CALLDATACOPY( - dest_offset=Op.DUP3, offset=0x4, size=Op.CALLDATASIZE - ) - + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) - + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) - + Op.MSTORE( - offset=0x2000, - value=Op.ADD(Op.ADD(Op.DUP3, 0x20), Op.CALLDATALOAD(offset=0x44)), + + Op.POP( + Op.CALL( + gas=Op.ADD(0x48, Op.DUP8), + address=0x2, + value=0x0, + args_offset=Op.MLOAD(offset=0x700), + args_size=Op.DUP4, + ret_offset=Op.DUP2, + ret_size=0x20, + ) ) + + Op.MLOAD(offset=Op.DUP1) + + Op.SWAP1 + Op.POP - + Op.PUSH1[0xA0] * 2 + + Op.SWAP1 + + Op.POP + + Op.PUSH2[0x760] + + Op.MSTORE + + Op.MSTORE(offset=0x7C0, value=Op.MLOAD(offset=0x760)) + + Op.RETURN(offset=0x7C0, size=0x20) + + Op.JUMPDEST + + Op.JUMPI(pc=0xA1C, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0xE346F5FC))) + + Op.MSTORE(offset=0x7E0, value=Op.CALLDATALOAD(offset=0x4)) + + Op.MSTORE(offset=0x800, value=Op.CALLDATALOAD(offset=0x24)) + + Op.MSTORE(offset=0x4C0, value=0x0) + + Op.JUMPDEST + + Op.PUSH1[0x60] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -2698,49 +2302,18 @@ def test_block504980( + Op.SWAP1 + Op.MSTORE + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0xE) - + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x7E0)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x1) + Op.DUP1 + Op.SWAP1 + Op.POP - + Op.SHA3 - + Op.MUL(0x20, Op.MLOAD(offset=Op.SUB(Op.MLOAD(offset=0x2000), 0x20))) - + Op.DIV(Op.DUP2, 0x20) - + Op.PUSH1[0x0] - + Op.JUMPDEST - + Op.JUMPI(pc=0x1CD1, condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.DUP2))) - + Op.SSTORE( - key=Op.ADD(Op.DUP3, Op.DUP5), - value=Op.MLOAD( - offset=Op.ADD(Op.MLOAD(offset=0x2000), Op.MUL(0x20, Op.DUP1)) - ), - ) - + Op.ADD(Op.DUP2, 0x1) - + Op.SWAP1 - + Op.POP - + Op.JUMP(pc=0x1CB0) - + Op.JUMPDEST - + Op.SSTORE( - key=Op.ADD(Op.DUP3, Op.DUP5), - value=Op.AND( - Op.MLOAD( - offset=Op.ADD( - Op.MLOAD(offset=0x2000), Op.MUL(0x20, Op.DUP2) - ) - ), - Op.SUB( - 0x0, Op.EXP(0x100, Op.SUB(0x20, Op.MOD(Op.DUP4, 0x20))) - ), + + Op.JUMPI( + pc=0x9E6, + condition=Op.ISZERO( + Op.SLT(Op.MLOAD(offset=0x4C0), Op.SLOAD(key=Op.SHA3)) ), ) - + Op.POP * 4 - + Op.MSTORE(offset=0x20C0, value=0x1) - + Op.RETURN(offset=0x20C0, size=0x20) - + Op.JUMPDEST - + Op.JUMPI(pc=0x1DC5, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x5A0CD48))) - + Op.CALLDATASIZE + + Op.PUSH1[0xA0] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -2748,16 +2321,16 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.CALLDATACOPY( - dest_offset=Op.DUP3, offset=0x4, size=Op.CALLDATASIZE - ) - + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) - + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) - + Op.MSTORE( - offset=0x20E0, - value=Op.ADD(Op.ADD(Op.DUP3, 0x20), Op.CALLDATALOAD(offset=0x44)), - ) + + Op.MSTORE(offset=Op.DUP2, value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x7E0)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x0) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=Op.MLOAD(offset=0x4C0)) + + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x1) + + Op.DUP1 + + Op.SWAP1 + Op.POP + + Op.MSTORE(offset=0x840, value=Op.SLOAD(key=Op.SHA3)) + + Op.MLOAD(offset=0x840) + Op.PUSH1[0xA0] * 2 + Op.MSIZE + Op.SWAP1 @@ -2767,49 +2340,16 @@ def test_block504980( + Op.SWAP1 + Op.MSTORE + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0xF) - + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x800)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x0) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=Op.MLOAD(offset=0x4C0)) + + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x1) + Op.DUP1 + Op.SWAP1 + Op.POP + Op.SHA3 - + Op.MUL(0x20, Op.MLOAD(offset=Op.SUB(Op.MLOAD(offset=0x20E0), 0x20))) - + Op.DIV(Op.DUP2, 0x20) - + Op.PUSH1[0x0] - + Op.JUMPDEST - + Op.JUMPI(pc=0x1D97, condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.DUP2))) - + Op.SSTORE( - key=Op.ADD(Op.DUP3, Op.DUP5), - value=Op.MLOAD( - offset=Op.ADD(Op.MLOAD(offset=0x20E0), Op.MUL(0x20, Op.DUP1)) - ), - ) - + Op.ADD(Op.DUP2, 0x1) - + Op.SWAP1 - + Op.POP - + Op.JUMP(pc=0x1D76) - + Op.JUMPDEST - + Op.SSTORE( - key=Op.ADD(Op.DUP3, Op.DUP5), - value=Op.AND( - Op.MLOAD( - offset=Op.ADD( - Op.MLOAD(offset=0x20E0), Op.MUL(0x20, Op.DUP2) - ) - ), - Op.SUB( - 0x0, Op.EXP(0x100, Op.SUB(0x20, Op.MOD(Op.DUP4, 0x20))) - ), - ), - ) - + Op.POP * 4 - + Op.MSTORE(offset=0x21A0, value=0x1) - + Op.RETURN(offset=0x21A0, size=0x20) - + Op.JUMPDEST - + Op.JUMPI(pc=0x1E8B, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0xAAA1FE35))) - + Op.CALLDATASIZE + + Op.SSTORE + + Op.PUSH1[0xA0] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -2817,16 +2357,15 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.CALLDATACOPY( - dest_offset=Op.DUP3, offset=0x4, size=Op.CALLDATASIZE - ) - + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) - + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) - + Op.MSTORE( - offset=0x21C0, - value=Op.ADD(Op.ADD(Op.DUP3, 0x20), Op.CALLDATALOAD(offset=0x44)), - ) + + Op.MSTORE(offset=Op.DUP2, value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x7E0)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x0) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=Op.MLOAD(offset=0x4C0)) + + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x0) + + Op.DUP1 + + Op.SWAP1 + Op.POP + + Op.SLOAD(key=Op.SHA3) + Op.PUSH1[0xA0] * 2 + Op.MSIZE + Op.SWAP1 @@ -2836,49 +2375,38 @@ def test_block504980( + Op.SWAP1 + Op.MSTORE + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x10) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x800)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x0) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=Op.MLOAD(offset=0x4C0)) + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x0) + Op.DUP1 + Op.SWAP1 + Op.POP + Op.SHA3 - + Op.MUL(0x20, Op.MLOAD(offset=Op.SUB(Op.MLOAD(offset=0x21C0), 0x20))) - + Op.DIV(Op.DUP2, 0x20) + + Op.SSTORE + + Op.MLOAD(offset=0x4C0) + + Op.PUSH1[0x80] * 2 + + Op.MSIZE + + Op.SWAP1 + + Op.MSIZE + + Op.ADD + Op.PUSH1[0x0] - + Op.JUMPDEST - + Op.JUMPI(pc=0x1E5D, condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.DUP2))) - + Op.SSTORE( - key=Op.ADD(Op.DUP3, Op.DUP5), - value=Op.MLOAD( - offset=Op.ADD(Op.MLOAD(offset=0x21C0), Op.MUL(0x20, Op.DUP1)) - ), - ) - + Op.ADD(Op.DUP2, 0x1) + + Op.SWAP1 + + Op.MSTORE + + Op.MSTORE(offset=Op.DUP2, value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x800)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x2) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=Op.MLOAD(offset=0x840)) + + Op.DUP1 + Op.SWAP1 + Op.POP - + Op.JUMP(pc=0x1E3C) + + Op.SHA3 + + Op.SSTORE + + Op.MSTORE(offset=0x4C0, value=Op.ADD(Op.MLOAD(offset=0x4C0), 0x1)) + + Op.JUMP(pc=0x899) + Op.JUMPDEST - + Op.SSTORE( - key=Op.ADD(Op.DUP3, Op.DUP5), - value=Op.AND( - Op.MLOAD( - offset=Op.ADD( - Op.MLOAD(offset=0x21C0), Op.MUL(0x20, Op.DUP2) - ) - ), - Op.SUB( - 0x0, Op.EXP(0x100, Op.SUB(0x20, Op.MOD(Op.DUP4, 0x20))) - ), - ), - ) - + Op.POP * 4 - + Op.MSTORE(offset=0x2280, value=0x1) - + Op.RETURN(offset=0x2280, size=0x20) - + Op.JUMPDEST - + Op.JUMPI(pc=0x1F51, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x2BE4935D))) - + Op.CALLDATASIZE + + Op.MLOAD(offset=0x4C0) + + Op.PUSH1[0x60] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -2886,17 +2414,21 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.CALLDATACOPY( - dest_offset=Op.DUP3, offset=0x4, size=Op.CALLDATASIZE - ) - + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) - + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) - + Op.MSTORE( - offset=0x22A0, - value=Op.ADD(Op.ADD(Op.DUP3, 0x20), Op.CALLDATALOAD(offset=0x44)), - ) + + Op.MSTORE(offset=Op.DUP2, value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x800)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x1) + + Op.DUP1 + + Op.SWAP1 + Op.POP - + Op.PUSH1[0xA0] * 2 + + Op.SHA3 + + Op.SSTORE + + Op.MSTORE(offset=0x920, value=0x1) + + Op.RETURN(offset=0x920, size=0x20) + + Op.JUMPDEST + + Op.JUMPI(pc=0xB54, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x3FB57036))) + + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) + + Op.MSTORE(offset=0x940, value=Op.CALLDATALOAD(offset=0x24)) + + Op.PUSH1[0x60] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -2906,48 +2438,13 @@ def test_block504980( + Op.MSTORE + Op.MSTORE(offset=Op.DUP2, value=0x0) + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x11) - + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x0) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x1) + Op.DUP1 + Op.SWAP1 + Op.POP - + Op.SHA3 - + Op.MUL(0x20, Op.MLOAD(offset=Op.SUB(Op.MLOAD(offset=0x22A0), 0x20))) - + Op.DIV(Op.DUP2, 0x20) - + Op.PUSH1[0x0] - + Op.JUMPDEST - + Op.JUMPI(pc=0x1F23, condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.DUP2))) - + Op.SSTORE( - key=Op.ADD(Op.DUP3, Op.DUP5), - value=Op.MLOAD( - offset=Op.ADD(Op.MLOAD(offset=0x22A0), Op.MUL(0x20, Op.DUP1)) - ), - ) - + Op.ADD(Op.DUP2, 0x1) - + Op.SWAP1 - + Op.POP - + Op.JUMP(pc=0x1F02) - + Op.JUMPDEST - + Op.SSTORE( - key=Op.ADD(Op.DUP3, Op.DUP5), - value=Op.AND( - Op.MLOAD( - offset=Op.ADD( - Op.MLOAD(offset=0x22A0), Op.MUL(0x20, Op.DUP2) - ) - ), - Op.SUB( - 0x0, Op.EXP(0x100, Op.SUB(0x20, Op.MOD(Op.DUP4, 0x20))) - ), - ), - ) - + Op.POP * 4 - + Op.MSTORE(offset=0x2360, value=0x1) - + Op.RETURN(offset=0x2360, size=0x20) - + Op.JUMPDEST - + Op.JUMPI(pc=0x2017, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x13A8350D))) - + Op.CALLDATASIZE + + Op.MSTORE(offset=0x960, value=Op.SLOAD(key=Op.SHA3)) + + Op.MLOAD(offset=0x960) + + Op.PUSH1[0x80] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -2955,16 +2452,16 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.CALLDATACOPY( - dest_offset=Op.DUP3, offset=0x4, size=Op.CALLDATASIZE - ) - + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) - + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) - + Op.MSTORE( - offset=0x2380, - value=Op.ADD(Op.ADD(Op.DUP3, 0x20), Op.CALLDATALOAD(offset=0x44)), - ) + + Op.MSTORE(offset=Op.DUP2, value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x2) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=Op.MLOAD(offset=0x940)) + + Op.DUP1 + + Op.SWAP1 + Op.POP + + Op.SHA3 + + Op.SSTORE + + Op.PUSH1[0x0] + Op.PUSH1[0xA0] * 2 + Op.MSIZE + Op.SWAP1 @@ -2975,48 +2472,35 @@ def test_block504980( + Op.MSTORE + Op.MSTORE(offset=Op.DUP2, value=0x0) + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x12) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x0) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=Op.MLOAD(offset=0x960)) + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x0) + Op.DUP1 + Op.SWAP1 + Op.POP + Op.SHA3 - + Op.MUL(0x20, Op.MLOAD(offset=Op.SUB(Op.MLOAD(offset=0x2380), 0x20))) - + Op.DIV(Op.DUP2, 0x20) + + Op.SSTORE + + Op.MLOAD(offset=0x940) + + Op.PUSH1[0xA0] * 2 + + Op.MSIZE + + Op.SWAP1 + + Op.MSIZE + + Op.ADD + Op.PUSH1[0x0] - + Op.JUMPDEST - + Op.JUMPI(pc=0x1FE9, condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.DUP2))) - + Op.SSTORE( - key=Op.ADD(Op.DUP3, Op.DUP5), - value=Op.MLOAD( - offset=Op.ADD(Op.MLOAD(offset=0x2380), Op.MUL(0x20, Op.DUP1)) - ), - ) - + Op.ADD(Op.DUP2, 0x1) + + Op.SWAP1 + + Op.MSTORE + + Op.MSTORE(offset=Op.DUP2, value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x0) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=Op.MLOAD(offset=0x960)) + + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x1) + + Op.DUP1 + Op.SWAP1 + Op.POP - + Op.JUMP(pc=0x1FC8) - + Op.JUMPDEST - + Op.SSTORE( - key=Op.ADD(Op.DUP3, Op.DUP5), - value=Op.AND( - Op.MLOAD( - offset=Op.ADD( - Op.MLOAD(offset=0x2380), Op.MUL(0x20, Op.DUP2) - ) - ), - Op.SUB( - 0x0, Op.EXP(0x100, Op.SUB(0x20, Op.MOD(Op.DUP4, 0x20))) - ), - ), - ) - + Op.POP * 4 - + Op.MSTORE(offset=0x2440, value=0x1) - + Op.RETURN(offset=0x2440, size=0x20) - + Op.JUMPDEST - + Op.JUMPI(pc=0x20DD, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0xCB540B45))) - + Op.CALLDATASIZE + + Op.SHA3 + + Op.SSTORE + + Op.PUSH1[0x1] + + Op.PUSH1[0x60] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -3024,17 +2508,15 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.CALLDATACOPY( - dest_offset=Op.DUP3, offset=0x4, size=Op.CALLDATASIZE - ) - + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) - + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) - + Op.MSTORE( - offset=0x2460, - value=Op.ADD(Op.ADD(Op.DUP3, 0x20), Op.CALLDATALOAD(offset=0x44)), - ) + + Op.MSTORE(offset=Op.DUP2, value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x1) + + Op.DUP1 + + Op.SWAP1 + Op.POP - + Op.PUSH1[0xA0] * 2 + + Op.SLOAD(key=Op.SHA3) + + Op.ADD + + Op.PUSH1[0x60] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -3044,48 +2526,21 @@ def test_block504980( + Op.MSTORE + Op.MSTORE(offset=Op.DUP2, value=0x0) + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x13) - + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x0) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x1) + Op.DUP1 + Op.SWAP1 + Op.POP + Op.SHA3 - + Op.MUL(0x20, Op.MLOAD(offset=Op.SUB(Op.MLOAD(offset=0x2460), 0x20))) - + Op.DIV(Op.DUP2, 0x20) - + Op.PUSH1[0x0] - + Op.JUMPDEST - + Op.JUMPI(pc=0x20AF, condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.DUP2))) - + Op.SSTORE( - key=Op.ADD(Op.DUP3, Op.DUP5), - value=Op.MLOAD( - offset=Op.ADD(Op.MLOAD(offset=0x2460), Op.MUL(0x20, Op.DUP1)) - ), - ) - + Op.ADD(Op.DUP2, 0x1) - + Op.SWAP1 - + Op.POP - + Op.JUMP(pc=0x208E) - + Op.JUMPDEST - + Op.SSTORE( - key=Op.ADD(Op.DUP3, Op.DUP5), - value=Op.AND( - Op.MLOAD( - offset=Op.ADD( - Op.MLOAD(offset=0x2460), Op.MUL(0x20, Op.DUP2) - ) - ), - Op.SUB( - 0x0, Op.EXP(0x100, Op.SUB(0x20, Op.MOD(Op.DUP4, 0x20))) - ), - ), - ) - + Op.POP * 4 - + Op.MSTORE(offset=0x2520, value=0x1) - + Op.RETURN(offset=0x2520, size=0x20) + + Op.SSTORE + + Op.MSTORE(offset=0xA40, value=0x1) + + Op.RETURN(offset=0xA40, size=0x20) + Op.JUMPDEST - + Op.JUMPI(pc=0x21A3, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0xBE030627))) - + Op.CALLDATASIZE + + Op.JUMPI(pc=0xBEB, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x12709A33))) + + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) + + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) + + Op.MSTORE(offset=0xA60, value=Op.CALLDATALOAD(offset=0x44)) + + Op.MLOAD(offset=0xA60) + + Op.PUSH1[0xA0] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -3093,16 +2548,16 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.CALLDATACOPY( - dest_offset=Op.DUP3, offset=0x4, size=Op.CALLDATASIZE - ) - + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) - + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) - + Op.MSTORE( - offset=0x2540, - value=Op.ADD(Op.ADD(Op.DUP3, 0x20), Op.CALLDATALOAD(offset=0x44)), - ) + + Op.MSTORE(offset=Op.DUP2, value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x0) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=Op.MLOAD(offset=0x80)) + + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x0) + + Op.DUP1 + + Op.SWAP1 + Op.POP + + Op.SLOAD(key=Op.SHA3) + + Op.ADD + Op.PUSH1[0xA0] * 2 + Op.MSIZE + Op.SWAP1 @@ -3113,48 +2568,23 @@ def test_block504980( + Op.MSTORE + Op.MSTORE(offset=Op.DUP2, value=0x0) + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x14) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x0) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=Op.MLOAD(offset=0x80)) + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x0) + Op.DUP1 + Op.SWAP1 + Op.POP + Op.SHA3 - + Op.MUL(0x20, Op.MLOAD(offset=Op.SUB(Op.MLOAD(offset=0x2540), 0x20))) - + Op.DIV(Op.DUP2, 0x20) - + Op.PUSH1[0x0] + + Op.SSTORE + + Op.MSTORE(offset=0xAC0, value=0x1) + + Op.RETURN(offset=0xAC0, size=0x20) + Op.JUMPDEST - + Op.JUMPI(pc=0x2175, condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.DUP2))) - + Op.SSTORE( - key=Op.ADD(Op.DUP3, Op.DUP5), - value=Op.MLOAD( - offset=Op.ADD(Op.MLOAD(offset=0x2540), Op.MUL(0x20, Op.DUP1)) - ), - ) - + Op.ADD(Op.DUP2, 0x1) - + Op.SWAP1 - + Op.POP - + Op.JUMP(pc=0x2154) - + Op.JUMPDEST - + Op.SSTORE( - key=Op.ADD(Op.DUP3, Op.DUP5), - value=Op.AND( - Op.MLOAD( - offset=Op.ADD( - Op.MLOAD(offset=0x2540), Op.MUL(0x20, Op.DUP2) - ) - ), - Op.SUB( - 0x0, Op.EXP(0x100, Op.SUB(0x20, Op.MOD(Op.DUP4, 0x20))) - ), - ), - ) - + Op.POP * 4 - + Op.MSTORE(offset=0x2600, value=0x1) - + Op.RETURN(offset=0x2600, size=0x20) - + Op.JUMPDEST - + Op.JUMPI(pc=0x2269, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x83FD77F0))) - + Op.CALLDATASIZE + + Op.JUMPI(pc=0xC82, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x3229CF6E))) + + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) + + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) + + Op.MSTORE(offset=0xA60, value=Op.CALLDATALOAD(offset=0x44)) + + Op.MLOAD(offset=0xA60) + + Op.PUSH1[0xA0] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -3162,16 +2592,16 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.CALLDATACOPY( - dest_offset=Op.DUP3, offset=0x4, size=Op.CALLDATASIZE - ) - + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) - + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) - + Op.MSTORE( - offset=0x2620, - value=Op.ADD(Op.ADD(Op.DUP3, 0x20), Op.CALLDATALOAD(offset=0x44)), - ) + + Op.MSTORE(offset=Op.DUP2, value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x0) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=Op.MLOAD(offset=0x80)) + + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x0) + + Op.DUP1 + + Op.SWAP1 + Op.POP + + Op.SLOAD(key=Op.SHA3) + + Op.SUB + Op.PUSH1[0xA0] * 2 + Op.MSIZE + Op.SWAP1 @@ -3182,52 +2612,22 @@ def test_block504980( + Op.MSTORE + Op.MSTORE(offset=Op.DUP2, value=0x0) + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x15) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x0) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=Op.MLOAD(offset=0x80)) + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x0) + Op.DUP1 + Op.SWAP1 + Op.POP + Op.SHA3 - + Op.MUL(0x20, Op.MLOAD(offset=Op.SUB(Op.MLOAD(offset=0x2620), 0x20))) - + Op.DIV(Op.DUP2, 0x20) - + Op.PUSH1[0x0] - + Op.JUMPDEST - + Op.JUMPI(pc=0x223B, condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.DUP2))) - + Op.SSTORE( - key=Op.ADD(Op.DUP3, Op.DUP5), - value=Op.MLOAD( - offset=Op.ADD(Op.MLOAD(offset=0x2620), Op.MUL(0x20, Op.DUP1)) - ), - ) - + Op.ADD(Op.DUP2, 0x1) - + Op.SWAP1 - + Op.POP - + Op.JUMP(pc=0x221A) - + Op.JUMPDEST - + Op.SSTORE( - key=Op.ADD(Op.DUP3, Op.DUP5), - value=Op.AND( - Op.MLOAD( - offset=Op.ADD( - Op.MLOAD(offset=0x2620), Op.MUL(0x20, Op.DUP2) - ) - ), - Op.SUB( - 0x0, Op.EXP(0x100, Op.SUB(0x20, Op.MOD(Op.DUP4, 0x20))) - ), - ), - ) - + Op.POP * 4 - + Op.MSTORE(offset=0x26E0, value=0x1) - + Op.RETURN(offset=0x26E0, size=0x20) + + Op.SSTORE + + Op.MSTORE(offset=0xB20, value=0x1) + + Op.RETURN(offset=0xB20, size=0x20) + Op.JUMPDEST - + Op.JUMPI(pc=0x22D5, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x59462205))) + + Op.JUMPI(pc=0xCE5, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0xA75F5C6A))) + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) - + Op.MSTORE(offset=0x3C0, value=Op.CALLDATALOAD(offset=0x44)) - + Op.MSTORE(offset=0x2700, value=Op.CALLDATALOAD(offset=0x64)) - + Op.MLOAD(offset=0x2700) + + Op.MSTORE(offset=0xA60, value=Op.CALLDATALOAD(offset=0x44)) + + Op.MLOAD(offset=0xA60) + Op.PUSH1[0xA0] * 2 + Op.MSIZE + Op.SWAP1 @@ -3238,23 +2638,43 @@ def test_block504980( + Op.MSTORE + Op.MSTORE(offset=Op.DUP2, value=0x0) + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x4) - + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=Op.MLOAD(offset=0x3C0)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x0) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=Op.MLOAD(offset=0x80)) + + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x0) + Op.DUP1 + Op.SWAP1 + Op.POP + Op.SHA3 + Op.SSTORE - + Op.MSTORE(offset=0x2740, value=0x1) - + Op.RETURN(offset=0x2740, size=0x20) + + Op.MSTORE(offset=0xB60, value=0x1) + + Op.RETURN(offset=0xB60, size=0x20) + Op.JUMPDEST - + Op.JUMPI(pc=0x2448, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0xBB8E4196))) + + Op.POP, + storage={ + 0xF299DBBE3A7A5D949FE794E9A47B3106699C8110FF986EB84921C183E69E7F0: 0x2F0000000000000000, # noqa: E501 + 0x1EDCD36F61CAE5DC6414157DFBADF9F11CA013AC763E27F8AF55FEAA8A239C89: contract_1, # noqa: E501 + 0x689082D076EC3C02CBE4B99F6D9833E3C4A161072FD42FB7649EEE5189A67CCC: 0x63524E3FE4791AEFCE1E932BBFB3FDF375BFAD89, # noqa: E501 + 0xAF1D6676BE3AB502A59D91F6F5C49BAFFC15B2CFC65A41C4D96857C0F535ADBA: 0x1D60000000000000000, # noqa: E501 + 0xDF1A770F69D93D1719292F384FDB4DA22C0E88AEF2BA462BFF16674BC7848730: 0x1C11AA45C792E202E9FFDC2F12F99D0D209BEF70, # noqa: E501 + 0xEC5E7F54FA5E516E616B04F9D5A0EE433A80E09ED47D7E5269AFD76C05FF251E: contract_2, # noqa: E501 + }, + nonce=0, + address=Address(0xE509E3A93BEB1EBA72F8CB8D25F93A85E2D54AFB), # noqa: E501 + ) + # Source: raw + # 0x600061289f537c01000000000000000000000000000000000000000000000000000000006000350473c9ae5868651bf7b7db6e360217db49ce4e69c07e60205263c4982a8581141561012757600435606052602435608052608060805990590160009052600081526060518160200152608051816040015260008160600152809050205460a05260a051806020026020015990590160009052818152602081019050905060e0526000610140525b60a05161014051121561010b5760a060a0599059016000905260008152606051816020015260805181604001526001816060015261014051816080015280905020546101405160200260e051015260016101405101610140526100ad565b60e05160206040820352602060208203510260400160408203f3505b63cc1c944e8114156101765760043560605260243560805260806080599059016000905260008152606051816020015260805181604001526000816060015280905020546101a05260206101a0f35b6395a405b98114156101d5576004356060526024356080526044356101e05260a060a059905901600090526000815260605181602001526080518160400152600181606001526101e05181608001528090502054610200526020610200f35b6371ebb662811415610224576004356060526024356080526080608059905901600090526000815260605181602001526080518160400152600281606001528090502054610240526020610240f35b637a57a3db811415610325576004356060526024356080526044356102805260c060c0599059016000905260008152606051816020015260805181604001526003816060015261028051816080015260008160a0015280905020608060805990590160009052600081526060518160200152608051816040015260008160600152809050205460200280806020015990590160009052818152602081019050905060005b602083048112156102e95780840154816020028301526001810190506102c8565b602083066020036101000a60000381850154168160200283015281905090509050905060206040820352602060208203510260400160408203f3505b63f73dc690811415610394576004356060526024356080526044356103c0526064356103e05260c060c059905901600090526000815260605181602001526080518160400152600381606001526103c05181608001526103e0518160a001528090502054610400526020610400f35b6354cc61098114156103f3576004356060526024356080526044356103c05260a060a059905901600090526000815260605181602001526080518160400152600481606001526103c05181608001528090502054610440526020610440f35b63c63ef546811415610442576004356060526024356080526080608059905901600090526000815260605181602001526080518160400152600581606001528090502054610480526020610480f35b639381779b8114156105335760043560605260243560805260a060a059905901600090526000815260605181602001526080518160400152600681606001526000816080015280905020608060805990590160009052600081526060518160200152608051816040015260058160600152809050205460200280806020015990590160009052818152602081019050905060005b602083048112156104f75780840154816020028301526001810190506104d6565b602083066020036101000a60000381850154168160200283015281905090509050905060206040820352602060208203510260400160408203f3505b634f9c6eeb8114156106245760043560605260243560805260a060a059905901600090526000815260605181602001526080518160400152600781606001526000816080015280905020608060805990590160009052600081526060518160200152608051816040015260058160600152809050205460200280806020015990590160009052818152602081019050905060005b602083048112156105e85780840154816020028301526001810190506105c7565b602083066020036101000a60000381850154168160200283015281905090509050905060206040820352602060208203510260400160408203f3505b637dc121958114156107155760043560605260243560805260a060a059905901600090526000815260605181602001526080518160400152600881606001526000816080015280905020608060805990590160009052600081526060518160200152608051816040015260058160600152809050205460200280806020015990590160009052818152602081019050905060005b602083048112156106d95780840154816020028301526001810190506106b8565b602083066020036101000a60000381850154168160200283015281905090509050905060206040820352602060208203510260400160408203f3505b63fa9832d18114156108065760043560605260243560805260a060a059905901600090526000815260605181602001526080518160400152600981606001526000816080015280905020608060805990590160009052600081526060518160200152608051816040015260008160600152809050205460200280806020015990590160009052818152602081019050905060005b602083048112156107ca5780840154816020028301526001810190506107a9565b602083066020036101000a60000381850154168160200283015281905090509050905060206040820352602060208203510260400160408203f3505b632c5a40d58114156108f75760043560605260243560805260a060a059905901600090526000815260605181602001526080518160400152600a81606001526000816080015280905020608060805990590160009052600081526060518160200152608051816040015260058160600152809050205460200280806020015990590160009052818152602081019050905060005b602083048112156108bb57808401548160200283015260018101905061089a565b602083066020036101000a60000381850154168160200283015281905090509050905060206040820352602060208203510260400160408203f3505b63e05dcb568114156109eb5760043560605260243560805260a060a059905901600090526000815260605181602001526080518160400152600b81606001526000816080015280905020600260806080599059016000905260008152606051816020015260805181604001526000816060015280905020546020020180806020015990590160009052818152602081019050905060005b602083048112156109af57808401548160200283015260018101905061098e565b602083066020036101000a60000381850154168160200283015281905090509050905060206040820352602060208203510260400160408203f3505b63586b5be0811415610a3a576004356060526024356080526080608059905901600090526000815260605181602001526080518160400152600c81606001528090502054610b80526020610b80f35b63eb8af5aa811415610b585760043560605260243560805260a060a059905901600090526000815260605181602001526080518160400152600d81606001526000816080015280905020608060805990590160009052600081526060518160200152608051816040015260008160600152809050205460806080599059016000905260008152606051816020015260805181604001526005816060015280905020540560200280806020015990590160009052818152602081019050905060005b60208304811215610b1c578084015481602002830152600181019050610afb565b602083066020036101000a60000381850154168160200283015281905090509050905060206040820352602060208203510260400160408203f3505b637ab6ea8a811415610c765760043560605260243560805260a060a059905901600090526000815260605181602001526080518160400152600e81606001526000816080015280905020608060805990590160009052600081526060518160200152608051816040015260008160600152809050205460806080599059016000905260008152606051816020015260805181604001526005816060015280905020540560200280806020015990590160009052818152602081019050905060005b60208304811215610c3a578084015481602002830152600181019050610c19565b602083066020036101000a60000381850154168160200283015281905090509050905060206040820352602060208203510260400160408203f3505b632b810cb9811415610d945760043560605260243560805260a060a059905901600090526000815260605181602001526080518160400152600f81606001526000816080015280905020608060805990590160009052600081526060518160200152608051816040015260008160600152809050205460806080599059016000905260008152606051816020015260805181604001526005816060015280905020540560200280806020015990590160009052818152602081019050905060005b60208304811215610d58578084015481602002830152600181019050610d37565b602083066020036101000a60000381850154168160200283015281905090509050905060206040820352602060208203510260400160408203f3505b637fb42e46811415610e855760043560605260243560805260a060a059905901600090526000815260605181602001526080518160400152601081606001526000816080015280905020608060805990590160009052600081526060518160200152608051816040015260008160600152809050205460200280806020015990590160009052818152602081019050905060005b60208304811215610e49578084015481602002830152600181019050610e28565b602083066020036101000a60000381850154168160200283015281905090509050905060206040820352602060208203510260400160408203f3505b63734fa727811415610f765760043560605260243560805260a060a059905901600090526000815260605181602001526080518160400152601181606001526000816080015280905020608060805990590160009052600081526060518160200152608051816040015260008160600152809050205460200280806020015990590160009052818152602081019050905060005b60208304811215610f3a578084015481602002830152600181019050610f19565b602083066020036101000a60000381850154168160200283015281905090509050905060206040820352602060208203510260400160408203f3505b63c67fa8578114156110675760043560605260243560805260a060a059905901600090526000815260605181602001526080518160400152601281606001526000816080015280905020608060805990590160009052600081526060518160200152608051816040015260008160600152809050205460200280806020015990590160009052818152602081019050905060005b6020830481121561102b57808401548160200283015260018101905061100a565b602083066020036101000a60000381850154168160200283015281905090509050905060206040820352602060208203510260400160408203f3505b635ed853e48114156111855760043560605260243560805260a060a059905901600090526000815260605181602001526080518160400152601381606001526000816080015280905020608060805990590160009052600081526060518160200152608051816040015260008160600152809050205460806080599059016000905260008152606051816020015260805181604001526005816060015280905020540560200280806020015990590160009052818152602081019050905060005b60208304811215611149578084015481602002830152600181019050611128565b602083066020036101000a60000381850154168160200283015281905090509050905060206040820352602060208203510260400160408203f3505b63b86f51258114156112a35760043560605260243560805260a060a059905901600090526000815260605181602001526080518160400152601481606001526000816080015280905020608060805990590160009052600081526060518160200152608051816040015260008160600152809050205460806080599059016000905260008152606051816020015260805181604001526005816060015280905020540560200280806020015990590160009052818152602081019050905060005b60208304811215611267578084015481602002830152600181019050611246565b602083066020036101000a60000381850154168160200283015281905090509050905060206040820352602060208203510260400160408203f3505b63bc3d7d858114156113945760043560605260243560805260a060a059905901600090526000815260605181602001526080518160400152601581606001526000816080015280905020608060805990590160009052600081526060518160200152608051816040015260008160600152809050205460200280806020015990590160009052818152602081019050905060005b60208304811215611358578084015481602002830152600181019050611337565b602083066020036101000a60000381850154168160200283015281905090509050905060206040820352602060208203510260400160408203f3505b63a2302f2f81141561148157600435606052602435611680526044356116a0526116a05160a060a0599059016000905260008152606051816020015261168051816040015260018160600152608060805990590160009052600081526060518160200152611680518160400152600081606001528090502054816080015280905020556001608060805990590160009052600081526060518160200152611680518160400152600081606001528090502054016080608059905901600090526000815260605181602001526116805181604001526000816060015280905020556001611740526020611740f35b63058ca2bc8114156114dd576004356060526024356080526044356117605261176051608060805990590160009052600081526060518160200152608051816040015260028160600152809050205560016117a05260206117a0f35b635d3b965b8114156116175736599059016000905236600482376004356060526024356080526044356102805260643560208201016117e052608435611800525060c060c0599059016000905260008152606051816020015260805181604001526003816060015261028051816080015260008160a001528090502060206117e05103516020026020810460005b8181121561158c57806020026117e05101518482015560018101905061156b565b602083066020036101000a600003816020026117e05101511684820155505050506118005160806080599059016000905260008152606051816020015260805181604001526002816060015280905020540160806080599059016000905260008152606051816020015260805181604001526002816060015280905020556001611900526020611900f35b63b0e14f0f81141561167357600435606052602435608052604435611920526119205160806080599059016000905260008152606051816020015260805181604001526005816060015280905020556001611960526020611960f35b636acccdbc8114156117395736599059016000905236600482376004356060526024356080526044356020820101611980525060a060a05990590160009052600081526060518160200152608051816040015260068160600152600081608001528090502060206119805103516020026020810460005b8181121561170b5780602002611980510151848201556001810190506116ea565b602083066020036101000a600003816020026119805101511684820155505050506001611a40526020611a40f35b63a1fa51f98114156117ff5736599059016000905236600482376004356060526024356080526044356020820101611a60525060a060a0599059016000905260008152606051816020015260805181604001526007816060015260008160800152809050206020611a605103516020026020810460005b818112156117d15780602002611a60510151848201556001810190506117b0565b602083066020036101000a60000381602002611a605101511684820155505050506001611b20526020611b20f35b63cd87f43a8114156118c55736599059016000905236600482376004356060526024356080526044356020820101611b40525060a060a0599059016000905260008152606051816020015260805181604001526008816060015260008160800152809050206020611b405103516020026020810460005b818112156118975780602002611b4051015184820155600181019050611876565b602083066020036101000a60000381602002611b405101511684820155505050506001611c00526020611c00f35b63222a866381141561198b5736599059016000905236600482376004356060526024356080526044356020820101611c20525060a060a0599059016000905260008152606051816020015260805181604001526009816060015260008160800152809050206020611c205103516020026020810460005b8181121561195d5780602002611c205101518482015560018101905061193c565b602083066020036101000a60000381602002611c205101511684820155505050506001611ce0526020611ce0f35b63b39e1faa811415611a515736599059016000905236600482376004356060526024356080526044356020820101611d00525060a060a059905901600090526000815260605181602001526080518160400152600a816060015260008160800152809050206020611d005103516020026020810460005b81811215611a235780602002611d0051015184820155600181019050611a02565b602083066020036101000a60000381602002611d005101511684820155505050506001611dc0526020611dc0f35b63e365736b811415611b175736599059016000905236600482376004356060526024356080526044356020820101611de0525060a060a059905901600090526000815260605181602001526080518160400152600b816060015260008160800152809050206020611de05103516020026020810460005b81811215611ae95780602002611de051015184820155600181019050611ac8565b602083066020036101000a60000381602002611de05101511684820155505050506001611ea0526020611ea0f35b63aad7d6e3811415611b7357600435606052602435608052604435611ec052611ec0516080608059905901600090526000815260605181602001526080518160400152600c816060015280905020556001611f00526020611f00f35b6301112b27811415611c395736599059016000905236600482376004356060526024356080526044356020820101611f20525060a060a059905901600090526000815260605181602001526080518160400152600d816060015260008160800152809050206020611f205103516020026020810460005b81811215611c0b5780602002611f2051015184820155600181019050611bea565b602083066020036101000a60000381602002611f205101511684820155505050506001611fe0526020611fe0f35b63bdbb239b811415611cff5736599059016000905236600482376004356060526024356080526044356020820101612000525060a060a059905901600090526000815260605181602001526080518160400152600e8160600152600081608001528090502060206120005103516020026020810460005b81811215611cd1578060200261200051015184820155600181019050611cb0565b602083066020036101000a6000038160200261200051015116848201555050505060016120c05260206120c0f35b6305a0cd48811415611dc557365990590160009052366004823760043560605260243560805260443560208201016120e0525060a060a059905901600090526000815260605181602001526080518160400152600f8160600152600081608001528090502060206120e05103516020026020810460005b81811215611d9757806020026120e051015184820155600181019050611d76565b602083066020036101000a600003816020026120e051015116848201555050505060016121a05260206121a0f35b63aaa1fe35811415611e8b57365990590160009052366004823760043560605260243560805260443560208201016121c0525060a060a05990590160009052600081526060518160200152608051816040015260108160600152600081608001528090502060206121c05103516020026020810460005b81811215611e5d57806020026121c051015184820155600181019050611e3c565b602083066020036101000a600003816020026121c05101511684820155505050506001612280526020612280f35b632be4935d811415611f5157365990590160009052366004823760043560605260243560805260443560208201016122a0525060a060a05990590160009052600081526060518160200152608051816040015260118160600152600081608001528090502060206122a05103516020026020810460005b81811215611f2357806020026122a051015184820155600181019050611f02565b602083066020036101000a600003816020026122a05101511684820155505050506001612360526020612360f35b6313a8350d8114156120175736599059016000905236600482376004356060526024356080526044356020820101612380525060a060a05990590160009052600081526060518160200152608051816040015260128160600152600081608001528090502060206123805103516020026020810460005b81811215611fe9578060200261238051015184820155600181019050611fc8565b602083066020036101000a600003816020026123805101511684820155505050506001612440526020612440f35b63cb540b458114156120dd5736599059016000905236600482376004356060526024356080526044356020820101612460525060a060a05990590160009052600081526060518160200152608051816040015260138160600152600081608001528090502060206124605103516020026020810460005b818112156120af57806020026124605101518482015560018101905061208e565b602083066020036101000a600003816020026124605101511684820155505050506001612520526020612520f35b63be0306278114156121a35736599059016000905236600482376004356060526024356080526044356020820101612540525060a060a05990590160009052600081526060518160200152608051816040015260148160600152600081608001528090502060206125405103516020026020810460005b81811215612175578060200261254051015184820155600181019050612154565b602083066020036101000a600003816020026125405101511684820155505050506001612600526020612600f35b6383fd77f08114156122695736599059016000905236600482376004356060526024356080526044356020820101612620525060a060a05990590160009052600081526060518160200152608051816040015260158160600152600081608001528090502060206126205103516020026020810460005b8181121561223b57806020026126205101518482015560018101905061221a565b602083066020036101000a6000038160200261262051015116848201555050505060016126e05260206126e0f35b63594622058114156122d5576004356060526024356080526044356103c052606435612700526127005160a060a059905901600090526000815260605181602001526080518160400152600481606001526103c051816080015280905020556001612740526020612740f35b63bb8e419681141561244857600435606052602435612760526044356127805260006127a0525b6080608059905901600090526000815260605181602001526001612760510381604001526000816060015280905020546127a051121561243b5760a060a05990590160009052600081526060518160200152600161276051038160400152600181606001526127a0518160800152809050205460a060a05990590160009052600081526060518160200152612780518160400152600181606001526080608059905901600090526000815260605181602001526127805181604001526000816060015280905020548160800152809050205560016080608059905901600090526000815260605181602001526127805181604001526000816060015280905020540160806080599059016000905260008152606051816020015261278051816040015260008160600152809050205560016127a051016127a0526122fc565b6001612880526020612880f35b50 # noqa: E501 + contract_5 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE8(offset=0x289F, value=0x0) + + Op.DIV( + Op.CALLDATALOAD(offset=0x0), + 0x100000000000000000000000000000000000000000000000000000000, + ) + + Op.MSTORE( + offset=0x20, value=0xC9AE5868651BF7B7DB6E360217DB49CE4E69C07E + ) + + Op.JUMPI(pc=0x127, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0xC4982A85))) + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) - + Op.MSTORE(offset=0x2760, value=Op.CALLDATALOAD(offset=0x24)) - + Op.MSTORE(offset=0x2780, value=Op.CALLDATALOAD(offset=0x44)) - + Op.MSTORE(offset=0x27A0, value=0x0) - + Op.JUMPDEST + + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) + Op.PUSH1[0x80] * 2 + Op.MSIZE + Op.SWAP1 @@ -3265,21 +2685,14 @@ def test_block504980( + Op.MSTORE + Op.MSTORE(offset=Op.DUP2, value=0x0) + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE( - offset=Op.ADD(0x40, Op.DUP2), - value=Op.SUB(Op.MLOAD(offset=0x2760), 0x1), - ) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x0) + Op.DUP1 + Op.SWAP1 + Op.POP - + Op.JUMPI( - pc=0x243B, - condition=Op.ISZERO( - Op.SLT(Op.MLOAD(offset=0x27A0), Op.SLOAD(key=Op.SHA3)) - ), - ) - + Op.PUSH1[0xA0] * 2 + + Op.MSTORE(offset=0xA0, value=Op.SLOAD(key=Op.SHA3)) + + Op.MLOAD(offset=0xA0) + + Op.ADD(0x20, Op.MUL(0x20, Op.DUP1)) + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -3287,20 +2700,22 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE( - offset=Op.ADD(0x40, Op.DUP2), - value=Op.SUB(Op.MLOAD(offset=0x2760), 0x1), - ) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x1) - + Op.MSTORE( - offset=Op.ADD(0x80, Op.DUP2), value=Op.MLOAD(offset=0x27A0) - ) - + Op.DUP1 + + Op.MSTORE(offset=Op.DUP2, value=Op.DUP2) + + Op.ADD(Op.DUP2, 0x20) + Op.SWAP1 + Op.POP - + Op.SLOAD(key=Op.SHA3) + + Op.SWAP1 + + Op.POP + + Op.PUSH1[0xE0] + + Op.MSTORE + + Op.MSTORE(offset=0x140, value=0x0) + + Op.JUMPDEST + + Op.JUMPI( + pc=0x10B, + condition=Op.ISZERO( + Op.SLT(Op.MLOAD(offset=0x140), Op.MLOAD(offset=0xA0)) + ), + ) + Op.PUSH1[0xA0] * 2 + Op.MSIZE + Op.SWAP1 @@ -3311,10 +2726,34 @@ def test_block504980( + Op.MSTORE + Op.MSTORE(offset=Op.DUP2, value=0x0) + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x1) + + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=Op.MLOAD(offset=0x140)) + + Op.DUP1 + + Op.SWAP1 + + Op.POP + Op.MSTORE( - offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x2780) + offset=Op.ADD( + Op.MLOAD(offset=0xE0), Op.MUL(0x20, Op.MLOAD(offset=0x140)) + ), + value=Op.SLOAD(key=Op.SHA3), ) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x1) + + Op.MSTORE(offset=0x140, value=Op.ADD(Op.MLOAD(offset=0x140), 0x1)) + + Op.JUMP(pc=Op.PUSH2[0xAD]) + + Op.JUMPDEST + + Op.MLOAD(offset=0xE0) + + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x40), value=0x20) + + Op.RETURN( + offset=Op.SUB(Op.DUP3, 0x40), + size=Op.ADD( + 0x40, Op.MUL(Op.MLOAD(offset=Op.SUB(Op.DUP3, 0x20)), 0x20) + ), + ) + + Op.POP + + Op.JUMPDEST + + Op.JUMPI(pc=0x176, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0xCC1C944E))) + + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) + + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) + Op.PUSH1[0x80] * 2 + Op.MSIZE + Op.SWAP1 @@ -3325,21 +2764,19 @@ def test_block504980( + Op.MSTORE + Op.MSTORE(offset=Op.DUP2, value=0x0) + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE( - offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x2780) - ) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x0) + Op.DUP1 + Op.SWAP1 + Op.POP - + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=Op.SLOAD(key=Op.SHA3)) - + Op.DUP1 - + Op.SWAP1 - + Op.POP - + Op.SHA3 - + Op.SSTORE - + Op.PUSH1[0x1] - + Op.PUSH1[0x80] * 2 + + Op.MSTORE(offset=0x1A0, value=Op.SLOAD(key=Op.SHA3)) + + Op.RETURN(offset=0x1A0, size=0x20) + + Op.JUMPDEST + + Op.JUMPI(pc=0x1D5, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x95A405B9))) + + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) + + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) + + Op.MSTORE(offset=0x1E0, value=Op.CALLDATALOAD(offset=0x44)) + + Op.PUSH1[0xA0] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -3349,15 +2786,18 @@ def test_block504980( + Op.MSTORE + Op.MSTORE(offset=Op.DUP2, value=0x0) + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE( - offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x2780) - ) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x0) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x1) + + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=Op.MLOAD(offset=0x1E0)) + Op.DUP1 + Op.SWAP1 + Op.POP - + Op.SLOAD(key=Op.SHA3) - + Op.ADD + + Op.MSTORE(offset=0x200, value=Op.SLOAD(key=Op.SHA3)) + + Op.RETURN(offset=0x200, size=0x20) + + Op.JUMPDEST + + Op.JUMPI(pc=0x224, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x71EBB662))) + + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) + + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) + Op.PUSH1[0x80] * 2 + Op.MSIZE + Op.SWAP1 @@ -3368,107 +2808,19 @@ def test_block504980( + Op.MSTORE + Op.MSTORE(offset=Op.DUP2, value=0x0) + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE( - offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x2780) - ) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x0) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x2) + Op.DUP1 + Op.SWAP1 + Op.POP - + Op.SHA3 - + Op.SSTORE - + Op.MSTORE(offset=0x27A0, value=Op.ADD(Op.MLOAD(offset=0x27A0), 0x1)) - + Op.JUMP(pc=0x22FC) - + Op.JUMPDEST - + Op.MSTORE(offset=0x2880, value=0x1) - + Op.RETURN(offset=0x2880, size=0x20) + + Op.MSTORE(offset=0x240, value=Op.SLOAD(key=Op.SHA3)) + + Op.RETURN(offset=0x240, size=0x20) + Op.JUMPDEST - + Op.POP, - storage={ - 0x65D5EFDFCC0FBA693DC9E467F633097FFDC97401901463AD0E28855486D1EDF: 0xB9D69098A6ACFE0C6411BCAAF430F78D363A9ADC32B78BC2E15CCD6E883E9784, # noqa: E501 - 0x12643FF300762717D27EFB567B82C65560D7B43249D908504E5510863AB82AAC: 0x154CF60E137C594516A065149610B6A3989396A42581D5FD8919E711C55DA225, # noqa: E501 - 0x1489023D18C5D10427C4AA8DC726E840EB5AE7F604A8E9243C61634FB009E4D7: 5, # noqa: E501 - 0x1489023D18C5D10427C4AA8DC726E840EB5AE7F604A8E9243C61634FB009E4D8: 1, # noqa: E501 - 0x19EFB13D6576359514ACE5211988A8D51379FA88CCD2B886B409F842B13D7932: 0xC849CC595B452D11C206D2EB8CDFA06DE211E3FF19EE0E0276DC857C05D4FE, # noqa: E501 - 0x1B37E91BF8580C7C6BCF8CDFF25C7ED78180124A94AF6F30C40D476A3D079AD6: 0xABA4CD295118A482A0A62579E35E4BA5BDD76146CC9E4D96172FCE8BE8977AB4, # noqa: E501 - 0x2BF9FD8FACDD6FD9C84657F5AD7381A5AECF670CDA68CB3C5829B6532C865506: 0x53098A1D111586DBCC0D051846284F5803C63C313E7F7E6D84430435D11D4C50, # noqa: E501 - 0x3111BFD25728C0ADFAD0F8C1AD79CB1B91167267DECA98DE88F156ED25CAEEDC: 0xAD393086F30B49511B08FDD27AC78810B084C7CD7DE6AC354F614C18EA9E7DF4, # noqa: E501 - 0x3379E7AE125C5C5D623D1D993C1459B61D6723B1C30D1AA026C48F6A6155B8EA: 0x8C4183732567A99A8A718E363391E102532F9A640E42968CF2354D9ACC908BB0, # noqa: E501 - 0x34CABE0C7E64A2CAA93FD8D6A0DEFC07ACB9D44B13430FA3AE9282FFFD40DEE2: 1, # noqa: E501 - 0x34CABE0C7E64A2CAA93FD8D6A0DEFC07ACB9D44B13430FA3AE9282FFFD40DEE3: 1, # noqa: E501 - 0x34CABE0C7E64A2CAA93FD8D6A0DEFC07ACB9D44B13430FA3AE9282FFFD40DEE4: 1, # noqa: E501 - 0x34CABE0C7E64A2CAA93FD8D6A0DEFC07ACB9D44B13430FA3AE9282FFFD40DEE5: 1, # noqa: E501 - 0x39050607FE892059A6344AB0F594F382FB0B345CAB373497246DBE86FE7E14E7: 0x2B3BCA833E482737E7E47B1568E6F890F8E1666490D38FE130ABD6F0CCB109CF, # noqa: E501 - 0x417BE8BC6791807372E0222A350BB8A5D67BBC8D7595C301D8A5A8372CFDCEF1: 0xABD4971B4605A7155802F70E08298B1CEB0E4E4EACCCCD348F77A77227F73A7F, # noqa: E501 - 0x41E9A54B3EE0C276AA076BABB161DE12B0F8916B47F8F6FB85CC387CF34696DD: 0x22F2F444EBDA9D2913FFEF5059B039EC9B5876AA71821991C2515BF79F64935E, # noqa: E501 - 0x45CEB8DA6FB8936592D3BCE4883F1A6A34D636F559E0A1070A5802A65AC39BD5: 0x57A5122FF3BF737B0DE0F9F08011A8648C19E43FF071FB7086234723C9383F1F, # noqa: E501 - 0x4AA6B934608A45C8F53A945C05DDEE1814A3B9F63A048FC7AD3D47E67156F024: 0xD03862BECEDADA67B4825A0238F3E67495CCB595CD7D08F1BD5D3160644B9299, # noqa: E501 - 0x4B8B58F0B0E326A5907D1A810E5FF31E05B4CAB45125B776DB8577E7DBC46BCE: 0x2F0000000000000000, # noqa: E501 - 0x4C33460347337BFC7DF08BF182988301B7B426A27A67F1C6C634F637C60E87AC: 0xBAB4AB2AD4EAFE7C84EF6A8CD69157D9CE6B843793A2CD0877B8E91F63CB2D4D, # noqa: E501 - 0x58DA0C0C256BBA101CE36FAD8BF838717A57E6AB850A191DC9C09DA9CE56BF1B: 5, # noqa: E501 - 0x5CB38B16DB1D632086D4AF695DE7F5F242A6E40947067F96EDD566FE2AC438EF: 0x6D0BE832B2007EA28CDA705B73922CBF9794C5A25B89BD2F28B7347ED2B96C86, # noqa: E501 - 0x64A9621CC4BA92BF738C55010C609DFAA3972A1138C30B5ADCEF1BA2363B360E: 0xD7953BFE8CB591F129FD0862A9E9C421151E2B5831560FF5215D23F751364B35, # noqa: E501 - 0x696664A5F0AB5ACD9304A377FB684F2D3FE6BB60B8A95CB2BDBB57DB767E7A84: 0x154CF60E137C594516A065149610B6A3989396A42581D5FD8919E711C55DA225, # noqa: E501 - 0x69AD1D19E617936ABDF05133BF268DC8CED6B518F22B249B5860967D07006487: 0x8C803B48B383DDABD1B3AFE858EFB48C203229B7317DD76149DDDAB4253B858A, # noqa: E501 - 0x70B3BF53996FAC325EB67608A4EEB0CD0B55DEF6255D7ED42AD28EC07238B5D6: 0x45E9723E9232B37207ECAC1C97B8647D053625A578D450F7456280B2FF8EFC27, # noqa: E501 - 0x7A9DCEE62E3E02CC8E020F372DF2EFDEB835F091C1EF1DBE221072D1095AABD2: 0x2F0000000000000000, # noqa: E501 - 0x7E4D8C0F6D8ABB4CE1AE45B254046ACEEDABFA9548851B8B5D3E2C0637C985FD: 11, # noqa: E501 - 0x7E95F3CC3315D289C52253BAABA29B1B00C86816E6B788D50795279A8BAA00DB: 0x45E9723E9232B37207ECAC1C97B8647D053625A578D450F7456280B2FF8EFC27, # noqa: E501 - 0x8DA187157087529EE4E9C381F8E3149C56ACF3BDFDA29B8B9B4532F24B83F5FE: 0x8C4183732567A99A8A718E363391E102532F9A640E42968CF2354D9ACC908BB0, # noqa: E501 - 0x9001F91DDAEF87BC067886E874C0749998C9B58B2EC8472CA014CA8B55F88578: 0xFB76974EEFCA01F33FB38646C2D3C1536F1A763D7AFF53AB7F877D4C5EA7FD0, # noqa: E501 - 0x9ED0CEDD2A9A78D949F40019F53D10031AEF6ED342C97E01FC03B481EE56B3CB: 4, # noqa: E501 - 0x9FDDF1DB29CAA5C1239EDD86E9E0835CDFE41F7253EC78F62D3DA8558D6F3CD7: 0x104EEF8FA35BF39F677D81855BC0B9F42317F32792E98E95E4DF441DEB634211, # noqa: E501 - 0xA0953566119395C11186B334805FC1A16175ECAC0ECC93AE0322264F0DC2E40D: 0x10C5A00466AB7C0ADAE1E93537CC275EA8CF23FF509D5466A1FD6F56B0A61D1B, # noqa: E501 - 0xAA0DBF8241EF3AE07C254E6869E84895BA2BE0779A7F261C8308A3114BE1C54A: 4, # noqa: E501 - 0xAFFE808B495D13A14391CE5F27C211C36DA12826969CD7841EE0D81E5B900E2D: 1, # noqa: E501 - 0xAFFE808B495D13A14391CE5F27C211C36DA12826969CD7841EE0D81E5B900E2E: 1, # noqa: E501 - 0xB4A2B68C48EF78AEB641EE538FAD51781022FD23ED9D93D211017DB6A02376CE: 0xFBC06642245CF2FED7ED46EA0A18A7185830B6F2C4E0A4CA55246041E8BFA72, # noqa: E501 - 0xBA8D79990898383919E437F2458B93B340072C89D963808D9E04F51858E3C5EC: 0x41D2CAC534D90A0DBD199117481A63E32CC11411DAB2EAA36C91C0EEC62823CF, # noqa: E501 - 0xBB3BC1A2015123750DF57D4CEFF7E28CB847910B79B34841DE905B59A8BB177C: 0x734417EB19E1873427257F1EA1594748C16CFA866A7B7CF896E281F2EC774A40, # noqa: E501 - 0xBF30CDCB83AB2BD5F5EEE691FFA4107B58B75BA6A5C2E6754D4C5C0437F2876C: 5, # noqa: E501 - 0xC2A26B80067FC36B8268B0D5B31AFFF953FA91CEBEA39F191E2763D6E71259B9: 0x2A43C547FE8DE2400D2A141016550E8BAE058D41164247C099E787DDD40E789, # noqa: E501 - 0xC98339D275EEF16E0562CA8521212CEF61AA0F39B12E2A27502AAA97A9E5E70F: 0x5A3DE2A5C268CDB75F4B01507AA80C4E4A1BC67BCB0DF265BBB00060774E5978, # noqa: E501 - 0xCBD6AE6BD61BC9270EC836F1919B3268113ABE076C7FEBFDB8CF573B199CE9A9: 0xF402B17773C1F7534034EE58DC0D2A3421470A7A67DAF4FA790DC3B420EEF790, # noqa: E501 - 0xD2C8CBB562FCCD0C9A3D0D491B7F65CC6A89856498F933427D9D21B745B9D50E: 0x3625A26FDB7B747501F1EE2500F98C49D9CD290383A21254587C3C49D2805321, # noqa: E501 - 0xD66F52A4E24585238CCC03443B2FDB8B2B100259BC7260F39097C7C339211FFE: 0x1641851904381915C86B60DF7E288896FB5F8EBAD65D594829FB9F2B59CD1DA6, # noqa: E501 - 0xD8F720C05A5526DD621D1831AE122ABDDD3DFECD8B63B0BA4C92FA7B2ADE44FF: 0xAD393086F30B49511B08FDD27AC78810B084C7CD7DE6AC354F614C18EA9E7DF4, # noqa: E501 - 0xDC22D3171B82817C910BBEAC1F8B50C8DE99F8C524F172AEF3491981BD5ED4FB: 0x94B8CBA4EA090D1C392FBC94B82FB9EF9F468A15BBC537F4D051776F4D422B1D, # noqa: E501 - 0xDCE8ADBDEFA929DBE60245F359446DB4174C62824B42E5D4D9E7B834B4D61DEB: 0x2C9069845B2E74C577FF1CD18DF6BC452805F527A9EE91FD4A059E0408B5DEA6, # noqa: E501 - 0xDD9493073DB9E42FD955E834C89A74089F99196186EE0B2688124989BE00D196: 1, # noqa: E501 - 0xDD9493073DB9E42FD955E834C89A74089F99196186EE0B2688124989BE00D197: 1, # noqa: E501 - 0xDD9493073DB9E42FD955E834C89A74089F99196186EE0B2688124989BE00D198: 1, # noqa: E501 - 0xDD9493073DB9E42FD955E834C89A74089F99196186EE0B2688124989BE00D199: 1, # noqa: E501 - 0xDD9493073DB9E42FD955E834C89A74089F99196186EE0B2688124989BE00D19A: 1, # noqa: E501 - 0xE54F074C81BFA60B5BF413934C108086298B77291560EDFEEAD8AA1232E95236: 0xF40AAA24323C9E6983CCFFAFEEBE4B426509B901E8C98B8A40D881804804E6B, # noqa: E501 - 0xE66C0F55F66C752EDF73027D45B7B1AE729AE15E1C67C362DBC6F25EDF8D76FF: 1, # noqa: E501 - 0xE983D899F807BBCB5881F2DDF875B2EBB5CB8A7A4E77A8C98A40AAAE6A468735: 0x6D0BE832B2007EA28CDA705B73922CBF9794C5A25B89BD2F28B7347ED2B96C86, # noqa: E501 - 0xED7D6E2D40FBD5046412FFAD1C45B63D87C6197182D6DBC66BB1E5C6E4DED5C7: 0xABA4CD295118A482A0A62579E35E4BA5BDD76146CC9E4D96172FCE8BE8977AB4, # noqa: E501 - 0xF043B5A1952847579F233706A8F130889A484D2DA3E574FDD5859F05AAF52111: 2, # noqa: E501 - 0xF40F4CFDACB62DD799F36B580349FAC1F4A4CAF8DD3383CC387C35ADB6574E21: 0x2F0000000000000000, # noqa: E501 - 0xF60FA6E25E9028A6DC6B26BBC1EADAE3DA157DF0D1D6F6628BC33CAD68A7E455: 0x2D7D00618C059EBE40593B9497C633E1AC6E161DADBD5BB734C2663CD3E8A8E1, # noqa: E501 - 0xFD280AC5182D5B2366122F38ACFA6DC471240FFDE9D5FEB985CE7A2325C960E7: 3, # noqa: E501 - }, - nonce=0, - address=Address(0x0EA65418D7BF32680F55572C943A94B590804998), # noqa: E501 - ) - # Source: raw - # 0x600061031f537c01000000000000000000000000000000000000000000000000000000006000350473c9ae5868651bf7b7db6e360217db49ce4e69c07e602052730ea65418d7bf32680f55572c943a94b5908049986040526327138bfb81141561038d57600435608052601c6044599059016000905201637a66d7ca601c8203526080516004820152602060e06024836000602051602d5a03f15060e051905060a052601c604459905901600090520163c60409c6601c820352608051600482015260206101206024836000602051602d5a03f150610120519050430561010052600061014052600061016052600061018052600260a051016101005112151561010a576001610140525b60006101a052610100516101c0525b606461010051016101c051121561018457601c606459905901600090520163cc1c944e601c82035260805160048201526101c051602482015260206101e06044836000604051602d5a03f1506101e05190506101a051016101a05260016101c051016101c052610119565b6005601c606459905901600090520163cc1c944e601c820352608051600482015260a051602482015260206102006044836000604051602d5a03f1506102005190501280156101d357806101db565b600a6101a051125b9050156101eb57610140516101ee565b60005b1561033657601c604459905901600090520163c5476efe601c820352608051600482015260206102406024836000602051602d5a03f15061024051905050601c6064599059016000905201637265802d601c82035260805160048201526000602482015260206102606044836000602051602d5a03f15061026051905050601c606459905901600090520163c286273a601c82035260805160048201526000602482015260206102806044836000602051602d5a03f15061028051905050601c6044599059016000905201637a66d7ca601c820352608051600482015260206102a06024836000602051602d5a03f1506102a051905060a052601c608459905901600090520163bb8e4196601c820352608051600482015260a051602482015261010051604482015260206102c06064836000604051602d5a03f1506102c051905050610343565b6001610160526001610180525b61014051156103555761016051610358565b60005b156103665761018051610369565b60005b1561037f5760016102e05260206102e0f361038c565b6000610300526020610300f35b5b50 # noqa: E501 - contract_6 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE8(offset=0x31F, value=0x0) - + Op.DIV( - Op.CALLDATALOAD(offset=0x0), - 0x100000000000000000000000000000000000000000000000000000000, - ) - + Op.MSTORE( - offset=0x20, value=0xC9AE5868651BF7B7DB6E360217DB49CE4E69C07E - ) - + Op.MSTORE( - offset=0x40, value=0xEA65418D7BF32680F55572C943A94B590804998 - ) - + Op.JUMPI(pc=0x38D, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x27138BFB))) - + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x4)) - + Op.PUSH1[0x1C] - + Op.PUSH1[0x44] + + Op.JUMPI(pc=0x325, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x7A57A3DB))) + + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) + + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) + + Op.MSTORE(offset=0x280, value=Op.CALLDATALOAD(offset=0x44)) + + Op.PUSH1[0xC0] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -3476,27 +2828,17 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.ADD - + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0x7A66D7CA) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0x80)) - + Op.POP( - Op.CALL( - gas=Op.SUB(Op.GAS, 0x2D), - address=Op.MLOAD(offset=0x20), - value=0x0, - args_offset=Op.DUP4, - args_size=0x24, - ret_offset=0xE0, - ret_size=0x20, - ) - ) - + Op.MLOAD(offset=0xE0) + + Op.MSTORE(offset=Op.DUP2, value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x3) + + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=Op.MLOAD(offset=0x280)) + + Op.MSTORE(offset=Op.ADD(0xA0, Op.DUP2), value=0x0) + + Op.DUP1 + Op.SWAP1 + Op.POP - + Op.PUSH1[0xA0] - + Op.MSTORE - + Op.PUSH1[0x1C] - + Op.PUSH1[0x44] + + Op.SHA3 + + Op.PUSH1[0x80] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -3504,55 +2846,77 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE + + Op.MSTORE(offset=Op.DUP2, value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x0) + + Op.DUP1 + + Op.SWAP1 + + Op.POP + + Op.MUL(0x20, Op.SLOAD(key=Op.SHA3)) + + Op.DUP1 + + Op.ADD(0x20, Op.DUP1) + + Op.MSIZE + + Op.SWAP1 + + Op.MSIZE + Op.ADD - + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0xC60409C6) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0x80)) - + Op.POP( - Op.CALL( - gas=Op.SUB(Op.GAS, 0x2D), - address=Op.MLOAD(offset=0x20), - value=0x0, - args_offset=Op.DUP4, - args_size=0x24, - ret_offset=0x120, - ret_size=0x20, - ) - ) - + Op.MLOAD(offset=0x120) + + Op.PUSH1[0x0] + + Op.SWAP1 + + Op.MSTORE + + Op.MSTORE(offset=Op.DUP2, value=Op.DUP2) + + Op.ADD(Op.DUP2, 0x20) + Op.SWAP1 + Op.POP - + Op.NUMBER - + Op.MSTORE(offset=0x100, value=Op.SDIV) - + Op.MSTORE(offset=0x140, value=0x0) - + Op.MSTORE(offset=0x160, value=0x0) - + Op.MSTORE(offset=0x180, value=0x0) + + Op.SWAP1 + + Op.POP + + Op.PUSH1[0x0] + + Op.JUMPDEST + Op.JUMPI( - pc=0x10A, - condition=Op.ISZERO( - Op.ISZERO( - Op.SLT( - Op.MLOAD(offset=0x100), - Op.ADD(Op.MLOAD(offset=0xA0), 0x2), - ) - ) - ), + pc=0x2E9, + condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.DIV(Op.DUP4, 0x20))), ) - + Op.MSTORE(offset=0x140, value=0x1) - + Op.JUMPDEST - + Op.MSTORE(offset=0x1A0, value=0x0) - + Op.MSTORE(offset=0x1C0, value=Op.MLOAD(offset=0x100)) + + Op.MSTORE( + offset=Op.ADD(Op.DUP4, Op.MUL(0x20, Op.DUP2)), + value=Op.SLOAD(key=Op.ADD(Op.DUP5, Op.DUP1)), + ) + + Op.ADD(Op.DUP2, 0x1) + + Op.SWAP1 + + Op.POP + + Op.JUMP(pc=0x2C8) + Op.JUMPDEST - + Op.JUMPI( - pc=0x184, - condition=Op.ISZERO( - Op.SLT( - Op.MLOAD(offset=0x1C0), - Op.ADD(Op.MLOAD(offset=0x100), 0x64), - ) + + Op.MSTORE( + offset=Op.ADD(Op.DUP4, Op.MUL(0x20, Op.DUP2)), + value=Op.AND( + Op.SLOAD(key=Op.ADD(Op.DUP6, Op.DUP2)), + Op.SUB( + 0x0, Op.EXP(0x100, Op.SUB(0x20, Op.MOD(Op.DUP4, 0x20))) + ), ), ) - + Op.PUSH1[0x1C] - + Op.PUSH1[0x64] + + Op.DUP2 + + Op.SWAP1 + + Op.POP + + Op.SWAP1 + + Op.POP + + Op.SWAP1 + + Op.POP + + Op.SWAP1 + + Op.POP + + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x40), value=0x20) + + Op.RETURN( + offset=Op.SUB(Op.DUP3, 0x40), + size=Op.ADD( + 0x40, Op.MUL(Op.MLOAD(offset=Op.SUB(Op.DUP3, 0x20)), 0x20) + ), + ) + + Op.POP + + Op.JUMPDEST + + Op.JUMPI(pc=0x394, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0xF73DC690))) + + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) + + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) + + Op.MSTORE(offset=0x3C0, value=Op.CALLDATALOAD(offset=0x44)) + + Op.MSTORE(offset=0x3E0, value=Op.CALLDATALOAD(offset=0x64)) + + Op.PUSH1[0xC0] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -3560,32 +2924,23 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.ADD - + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0xCC1C944E) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0x80)) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=Op.MLOAD(offset=0x1C0)) - + Op.POP( - Op.CALL( - gas=Op.SUB(Op.GAS, 0x2D), - address=Op.MLOAD(offset=0x40), - value=0x0, - args_offset=Op.DUP4, - args_size=0x44, - ret_offset=0x1E0, - ret_size=0x20, - ) - ) - + Op.MLOAD(offset=0x1E0) + + Op.MSTORE(offset=Op.DUP2, value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x3) + + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=Op.MLOAD(offset=0x3C0)) + + Op.MSTORE(offset=Op.ADD(0xA0, Op.DUP2), value=Op.MLOAD(offset=0x3E0)) + + Op.DUP1 + Op.SWAP1 + Op.POP - + Op.MLOAD(offset=0x1A0) - + Op.MSTORE(offset=0x1A0, value=Op.ADD) - + Op.MSTORE(offset=0x1C0, value=Op.ADD(Op.MLOAD(offset=0x1C0), 0x1)) - + Op.JUMP(pc=0x119) + + Op.MSTORE(offset=0x400, value=Op.SLOAD(key=Op.SHA3)) + + Op.RETURN(offset=0x400, size=0x20) + Op.JUMPDEST - + Op.PUSH1[0x5] - + Op.PUSH1[0x1C] - + Op.PUSH1[0x64] + + Op.JUMPI(pc=0x3F3, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x54CC6109))) + + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) + + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) + + Op.MSTORE(offset=0x3C0, value=Op.CALLDATALOAD(offset=0x44)) + + Op.PUSH1[0xA0] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -3593,42 +2948,42 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.ADD - + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0xCC1C944E) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0x80)) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=Op.MLOAD(offset=0xA0)) - + Op.POP( - Op.CALL( - gas=Op.SUB(Op.GAS, 0x2D), - address=Op.MLOAD(offset=0x40), - value=0x0, - args_offset=Op.DUP4, - args_size=0x44, - ret_offset=0x200, - ret_size=0x20, - ) - ) - + Op.MLOAD(offset=0x200) - + Op.SWAP1 - + Op.POP - + Op.SLT - + Op.JUMPI(pc=0x1D3, condition=Op.ISZERO(Op.DUP1)) + + Op.MSTORE(offset=Op.DUP2, value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x4) + + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=Op.MLOAD(offset=0x3C0)) + Op.DUP1 - + Op.JUMP(pc=0x1DB) - + Op.JUMPDEST - + Op.SLT(Op.MLOAD(offset=0x1A0), 0xA) - + Op.JUMPDEST + Op.SWAP1 + Op.POP - + Op.JUMPI(pc=0x1EB, condition=Op.ISZERO) - + Op.MLOAD(offset=0x140) - + Op.JUMP(pc=0x1EE) + + Op.MSTORE(offset=0x440, value=Op.SLOAD(key=Op.SHA3)) + + Op.RETURN(offset=0x440, size=0x20) + Op.JUMPDEST + + Op.JUMPI(pc=0x442, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0xC63EF546))) + + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) + + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) + + Op.PUSH1[0x80] * 2 + + Op.MSIZE + + Op.SWAP1 + + Op.MSIZE + + Op.ADD + Op.PUSH1[0x0] + + Op.SWAP1 + + Op.MSTORE + + Op.MSTORE(offset=Op.DUP2, value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x5) + + Op.DUP1 + + Op.SWAP1 + + Op.POP + + Op.MSTORE(offset=0x480, value=Op.SLOAD(key=Op.SHA3)) + + Op.RETURN(offset=0x480, size=0x20) + Op.JUMPDEST - + Op.JUMPI(pc=0x336, condition=Op.ISZERO) - + Op.PUSH1[0x1C] - + Op.PUSH1[0x44] + + Op.JUMPI(pc=0x533, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x9381779B))) + + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) + + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) + + Op.PUSH1[0xA0] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -3636,25 +2991,16 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.ADD - + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0xC5476EFE) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0x80)) - + Op.POP( - Op.CALL( - gas=Op.SUB(Op.GAS, 0x2D), - address=Op.MLOAD(offset=0x20), - value=0x0, - args_offset=Op.DUP4, - args_size=0x24, - ret_offset=0x240, - ret_size=0x20, - ) - ) - + Op.MLOAD(offset=0x240) + + Op.MSTORE(offset=Op.DUP2, value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x6) + + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x0) + + Op.DUP1 + Op.SWAP1 - + Op.POP * 2 - + Op.PUSH1[0x1C] - + Op.PUSH1[0x64] + + Op.POP + + Op.SHA3 + + Op.PUSH1[0x80] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -3662,26 +3008,16 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.ADD - + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0x7265802D) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0x80)) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=0x0) - + Op.POP( - Op.CALL( - gas=Op.SUB(Op.GAS, 0x2D), - address=Op.MLOAD(offset=0x20), - value=0x0, - args_offset=Op.DUP4, - args_size=0x44, - ret_offset=0x260, - ret_size=0x20, - ) - ) - + Op.MLOAD(offset=0x260) + + Op.MSTORE(offset=Op.DUP2, value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x5) + + Op.DUP1 + Op.SWAP1 - + Op.POP * 2 - + Op.PUSH1[0x1C] - + Op.PUSH1[0x64] + + Op.POP + + Op.MUL(0x20, Op.SLOAD(key=Op.SHA3)) + + Op.DUP1 + + Op.ADD(0x20, Op.DUP1) + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -3689,26 +3025,58 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.ADD - + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0xC286273A) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0x80)) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=0x0) - + Op.POP( - Op.CALL( - gas=Op.SUB(Op.GAS, 0x2D), - address=Op.MLOAD(offset=0x20), - value=0x0, - args_offset=Op.DUP4, - args_size=0x44, - ret_offset=0x280, - ret_size=0x20, - ) + + Op.MSTORE(offset=Op.DUP2, value=Op.DUP2) + + Op.ADD(Op.DUP2, 0x20) + + Op.SWAP1 + + Op.POP + + Op.SWAP1 + + Op.POP + + Op.PUSH1[0x0] + + Op.JUMPDEST + + Op.JUMPI( + pc=0x4F7, + condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.DIV(Op.DUP4, 0x20))), ) - + Op.MLOAD(offset=0x280) + + Op.MSTORE( + offset=Op.ADD(Op.DUP4, Op.MUL(0x20, Op.DUP2)), + value=Op.SLOAD(key=Op.ADD(Op.DUP5, Op.DUP1)), + ) + + Op.ADD(Op.DUP2, 0x1) + Op.SWAP1 - + Op.POP * 2 - + Op.PUSH1[0x1C] - + Op.PUSH1[0x44] + + Op.POP + + Op.JUMP(pc=0x4D6) + + Op.JUMPDEST + + Op.MSTORE( + offset=Op.ADD(Op.DUP4, Op.MUL(0x20, Op.DUP2)), + value=Op.AND( + Op.SLOAD(key=Op.ADD(Op.DUP6, Op.DUP2)), + Op.SUB( + 0x0, Op.EXP(0x100, Op.SUB(0x20, Op.MOD(Op.DUP4, 0x20))) + ), + ), + ) + + Op.DUP2 + + Op.SWAP1 + + Op.POP + + Op.SWAP1 + + Op.POP + + Op.SWAP1 + + Op.POP + + Op.SWAP1 + + Op.POP + + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x40), value=0x20) + + Op.RETURN( + offset=Op.SUB(Op.DUP3, 0x40), + size=Op.ADD( + 0x40, Op.MUL(Op.MLOAD(offset=Op.SUB(Op.DUP3, 0x20)), 0x20) + ), + ) + + Op.POP + + Op.JUMPDEST + + Op.JUMPI(pc=0x624, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x4F9C6EEB))) + + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) + + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) + + Op.PUSH1[0xA0] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -3716,27 +3084,16 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.ADD - + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0x7A66D7CA) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0x80)) - + Op.POP( - Op.CALL( - gas=Op.SUB(Op.GAS, 0x2D), - address=Op.MLOAD(offset=0x20), - value=0x0, - args_offset=Op.DUP4, - args_size=0x24, - ret_offset=0x2A0, - ret_size=0x20, - ) - ) - + Op.MLOAD(offset=0x2A0) + + Op.MSTORE(offset=Op.DUP2, value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x7) + + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x0) + + Op.DUP1 + Op.SWAP1 + Op.POP - + Op.PUSH1[0xA0] - + Op.MSTORE - + Op.PUSH1[0x1C] - + Op.PUSH1[0x84] + + Op.SHA3 + + Op.PUSH1[0x80] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -3744,91 +3101,75 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.ADD - + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0xBB8E4196) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0x80)) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=Op.MLOAD(offset=0xA0)) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x44), value=Op.MLOAD(offset=0x100)) - + Op.POP( - Op.CALL( - gas=Op.SUB(Op.GAS, 0x2D), - address=Op.MLOAD(offset=0x40), - value=0x0, - args_offset=Op.DUP4, - args_size=0x64, - ret_offset=0x2C0, - ret_size=0x20, - ) - ) - + Op.MLOAD(offset=0x2C0) + + Op.MSTORE(offset=Op.DUP2, value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x5) + + Op.DUP1 + Op.SWAP1 - + Op.POP * 2 - + Op.JUMP(pc=0x343) - + Op.JUMPDEST - + Op.MSTORE(offset=0x160, value=0x1) - + Op.MSTORE(offset=0x180, value=0x1) - + Op.JUMPDEST - + Op.JUMPI(pc=0x355, condition=Op.ISZERO(Op.MLOAD(offset=0x140))) - + Op.MLOAD(offset=0x160) - + Op.JUMP(pc=0x358) - + Op.JUMPDEST + + Op.POP + + Op.MUL(0x20, Op.SLOAD(key=Op.SHA3)) + + Op.DUP1 + + Op.ADD(0x20, Op.DUP1) + + Op.MSIZE + + Op.SWAP1 + + Op.MSIZE + + Op.ADD + Op.PUSH1[0x0] - + Op.JUMPDEST - + Op.JUMPI(pc=0x366, condition=Op.ISZERO) - + Op.MLOAD(offset=0x180) - + Op.JUMP(pc=0x369) - + Op.JUMPDEST + + Op.SWAP1 + + Op.MSTORE + + Op.MSTORE(offset=Op.DUP2, value=Op.DUP2) + + Op.ADD(Op.DUP2, 0x20) + + Op.SWAP1 + + Op.POP + + Op.SWAP1 + + Op.POP + Op.PUSH1[0x0] + Op.JUMPDEST - + Op.JUMPI(pc=0x37F, condition=Op.ISZERO) - + Op.MSTORE(offset=0x2E0, value=0x1) - + Op.RETURN(offset=0x2E0, size=0x20) - + Op.JUMP(pc=0x38C) - + Op.JUMPDEST - + Op.MSTORE(offset=0x300, value=0x0) - + Op.RETURN(offset=0x300, size=0x20) - + Op.JUMPDEST * 2 - + Op.POP, - nonce=0, - address=Address(0x142A6927CF0060133187BA8A8E74D641438F0C1C), # noqa: E501 - ) - # Source: hex - # 0x - coinbase = pre.deploy_contract( # noqa: F841 - code="", - balance=1, - nonce=0, - address=Address(0x1CDC8315BDB1362DE8B7B2FA9EE75DC873037179), # noqa: E501 - ) - # Source: raw - # 0x60006105df537c010000000000000000000000000000000000000000000000000000000060003504730ea65418d7bf32680f55572c943a94b59080499860205273e509e3a93beb1eba72f8cb8d25f93a85e2d54afb60405273c9ae5868651bf7b7db6e360217db49ce4e69c07e60605273f1562e1c0d0baa3ea746442bb7f11153fcf5cfda60805263546fdeb381141561038d5760043560c05260243560e05260443561010052606435610120526084356101405260026101005101601c606459905901600090520163e05dcb56601c82035260c051600482015260e05160248201526002610100510160408160200201599059016000905281602002604001816044856000602051602d5a03f150604081019050905090506000600161010051016020028201511415610250576060601c61014c59905901600090520163e365736b601c82035260c051600482015260e0516024820152601c6084599059016000905201632f300bee601c82035260026004820152600560248201526101005160448201528460408160200201599059016000905281602002604001816064856000608051602d5a03f1506040810190509050905060208103516020026020018360448401526020820360a4840152806101088401528084019350505081600401599059016000905260648160648460006004601cf16101fc57fe5b6064810192506101088201518080858260a487015160006004600a8705601201f161022357fe5b50808401935050808303602061028082846000602051602d5a03f15061028051905090509050905061037d565b6060601c61014c59905901600090520163e365736b601c82035260c051600482015260e0516024820152601c6084599059016000905201632f300bee601c820352600160016101005101602002850151036004820152600560248201526101005160448201528460408160200201599059016000905281602002604001816064856000608051602d5a03f1506040810190509050905060208103516020026020018360448401526020820360a4840152806101088401528084019350505081600401599059016000905260648160648460006004601cf161032d57fe5b6064810192506101088201518080858260a487015160006004600a8705601201f161035457fe5b5080840193505080830360206102c082846000602051602d5a03f1506102c05190509050905090505b5060016102e05260206102e0f350505b63de9080c88114156107645760043560c05260243560e05260443561010052606435610120526084356101405260026101005101601c606459905901600090520163e05dcb56601c82035260c051600482015260e05160248201528160408160200201599059016000905281602002604001816044856000602051602d5a03f15060408101905090509050601c6064599059016000905201632c5a40d5601c82035260c051600482015260e05160248201526101405160408160200201599059016000905281602002604001816044856000602051602d5a03f1506040810190509050905061012051806020026020015990590160009052818152602081019050905060005b610120518112156104ee57601c60645990590160009052016328c8b315601c82035260c051600482015281602482015260206103606044836000604051602d5a03f15061036051905081602002830152600181019050610493565b5060a0601c61020c59905901600090520163a647a5b9601c8203528460208103516020026020018360048401526020820360a484015280610148840152808401935050508360208103516020026020018360248401526020820360c484015280610168840152808401935050508260208103516020026020018360448401526020820360e4840152806101888401528084019350505061012051606482015261010051608482015281600401599059016000905260a48160a484600060046022f16105b557fe5b60a4810192506101488201518080858260a487015160006004600a8705601201f16105dc57fe5b508084019350506101688201518080858260c487015160006004600a8705601201f161060457fe5b508084019350506101888201518080858260e487015160006004600a8705601201f161062c57fe5b5080840193505080830387604081602002015990590160009052816020026040018184866000608051602d5a03f1506040810190509050905090509050905092506060601c61014c59905901600090520163e365736b601c82035260c051600482015260e05160248201528460208103516020026020018360448401526020820360a4840152806101088401528084019350505081600401599059016000905260648160648460006004601cf16106df57fe5b6064810192506101088201518080858260a487015160006004600a8705601201f161070657fe5b5080840193505080830360206103c082846000602051602d5a03f1506103c05190509050905090505060006101005160200284015114156107525760006103e05260206103e0f361075f565b6001610400526020610400f35b505050505b63384ca8dd811415610a665760043560c05260243560e052604435610100526064356101205260843561014052601c606459905901600090520163e05dcb56601c82035260c051600482015260e05160248201526002610100510160408160200201599059016000905281602002604001816044856000602051602d5a03f15060408101905090509050601c606459905901600090520163fa9832d1601c82035260c051600482015260e05160248201526101005160408160200201599059016000905281602002604001816044856000602051602d5a03f15060408101905090509050601c608459905901600090520163aad7d6e3601c82035260c051600482015260e05160248201526060601c61014c599059016000905201635b180229601c8203528360208103516020026020018360048401526020820360648401528060c8840152808401935050508460208103516020026020018360248401526020820360848401528060e88401528084019350505061010051604482015281600401599059016000905260648160648460006004601cf161090157fe5b60648101925060c882015180808582606487015160006004600a8705601201f161092757fe5b5080840193505060e882015180808582608487015160006004600a8705601201f161094e57fe5b50808401935050808303602061044082846000608051602d5a03f150610440519050905090509050604482015260206104606064836000602051602d5a03f150610460519050506060601c61014c59905901600090520163222a8663601c82035260c051600482015260e05160248201528260208103516020026020018360448401526020820360a4840152806101088401528084019350505081600401599059016000905260648160648460006004601cf1610a0757fe5b6064810192506101088201518080858260a487015160006004600a8705601201f1610a2e57fe5b50808401935050808303602061048082846000602051602d5a03f1506104805190509050905090505060016104a05260206104a0f350505b63d5dc5af1811415610d4b5760043560c05260243560e052604435610100526064356101205260843561014052601c606459905901600090520163e05dcb56601c82035260c051600482015260e05160248201526002610100510160408160200201599059016000905281602002604001816044856000602051602d5a03f15060408101905090509050601c6064599059016000905201632c5a40d5601c82035260c051600482015260e05160248201526101405160408160200201599059016000905281602002604001816044856000602051602d5a03f150604081019050905090506080601c6101ac59905901600090520163f4ca7dc4601c82035283602081035160200260200183600484015260208203608484015280610108840152808401935050508260208103516020026020018360248401526020820360a4840152806101288401528084019350505061012051604482015261010051606482015281600401599059016000905260848160848460006004601ff1610be757fe5b60848101925061010882015180808582608487015160006004600a8705601201f1610c0e57fe5b508084019350506101288201518080858260a487015160006004600a8705601201f1610c3657fe5b5080840193505080830361014051604081602002015990590160009052816020026040018184866000608051602d5a03f1506040810190509050905090509050905090506060601c61014c59905901600090520163b39e1faa601c82035260c051600482015260e05160248201528260208103516020026020018360448401526020820360a4840152806101088401528084019350505081600401599059016000905260648160648460006004601cf1610cec57fe5b6064810192506101088201518080858260a487015160006004600a8705601201f1610d1357fe5b5080840193505080830360206104c082846000602051602d5a03f1506104c05190509050905090505060016104e05260206104e0f350505b630939aa8c81141561114c5760043560c05260243560e052604435610100526064356101205260843561014052601c606459905901600090520163e05dcb56601c82035260c051600482015260e05160248201526002610100510160408160200201599059016000905281602002604001816044856000602051602d5a03f15060408101905090509050601c6064599059016000905201637dc12195601c82035260c051600482015260e05160248201526101405160408160200201599059016000905281602002604001816044856000602051602d5a03f15060408101905090509050601c606459905901600090520163586b5be0601c82035260c051600482015260e051602482015260206105006044836000602051602d5a03f150610500519050601c606459905901600090520163eb8af5aa601c82035260c051600482015260e05160248201526101205160408160200201599059016000905281602002604001816044856000602051602d5a03f1506040810190509050905060c0601c61026c59905901600090520163232b2734601c8203528260208103516020026020018360048401526020820360c484015280610188840152808401935050508560208103516020026020018360248401526020820360e4840152806101a88401528084019350505084602081035160200260200183604484015260208203610104840152806101c8840152808401935050508360648201526101205160848201526101005160a482015281600401599059016000905260c48160c484600060046025f1610f9657fe5b60c4810192506101888201518080858260c487015160006004600a8705601201f1610fbd57fe5b508084019350506101a88201518080858260e487015160006004600a8705601201f1610fe557fe5b508084019350506101c88201518080858261010487015160006004600a8705601201f161100e57fe5b5080840193505080830361012051604081602002015990590160009052816020026040018184866000608051602d5a03f1506040810190509050905090509050905090506060601c61014c5990590160009052016301112b27601c82035260c051600482015260e05160248201528260208103516020026020018360448401526020820360a4840152806101088401528084019350505081600401599059016000905260648160648460006004601cf16110c457fe5b6064810192506101088201518080858260a487015160006004600a8705601201f16110eb57fe5b50808401935050808303602061058082846000602051602d5a03f15061058051905090509050905050600060016101005101602002850151141561113a5760006105a05260206105a0f3611147565b60016105c05260206105c0f35b505050505b50 # noqa: E501 - contract_7 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE8(offset=0x5DF, value=0x0) - + Op.DIV( - Op.CALLDATALOAD(offset=0x0), - 0x100000000000000000000000000000000000000000000000000000000, - ) - + Op.MSTORE( - offset=0x20, value=0xEA65418D7BF32680F55572C943A94B590804998 + + Op.JUMPI( + pc=0x5E8, + condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.DIV(Op.DUP4, 0x20))), ) + Op.MSTORE( - offset=0x40, value=0xE509E3A93BEB1EBA72F8CB8D25F93A85E2D54AFB + offset=Op.ADD(Op.DUP4, Op.MUL(0x20, Op.DUP2)), + value=Op.SLOAD(key=Op.ADD(Op.DUP5, Op.DUP1)), ) + + Op.ADD(Op.DUP2, 0x1) + + Op.SWAP1 + + Op.POP + + Op.JUMP(pc=0x5C7) + + Op.JUMPDEST + Op.MSTORE( - offset=0x60, value=0xC9AE5868651BF7B7DB6E360217DB49CE4E69C07E + offset=Op.ADD(Op.DUP4, Op.MUL(0x20, Op.DUP2)), + value=Op.AND( + Op.SLOAD(key=Op.ADD(Op.DUP6, Op.DUP2)), + Op.SUB( + 0x0, Op.EXP(0x100, Op.SUB(0x20, Op.MOD(Op.DUP4, 0x20))) + ), + ), ) - + Op.MSTORE( - offset=0x80, value=0xF1562E1C0D0BAA3EA746442BB7F11153FCF5CFDA + + Op.DUP2 + + Op.SWAP1 + + Op.POP + + Op.SWAP1 + + Op.POP + + Op.SWAP1 + + Op.POP + + Op.SWAP1 + + Op.POP + + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x40), value=0x20) + + Op.RETURN( + offset=Op.SUB(Op.DUP3, 0x40), + size=Op.ADD( + 0x40, Op.MUL(Op.MLOAD(offset=Op.SUB(Op.DUP3, 0x20)), 0x20) + ), ) - + Op.JUMPI(pc=0x38D, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x546FDEB3))) - + Op.MSTORE(offset=0xC0, value=Op.CALLDATALOAD(offset=0x4)) - + Op.MSTORE(offset=0xE0, value=Op.CALLDATALOAD(offset=0x24)) - + Op.MSTORE(offset=0x100, value=Op.CALLDATALOAD(offset=0x44)) - + Op.MSTORE(offset=0x120, value=Op.CALLDATALOAD(offset=0x64)) - + Op.MSTORE(offset=0x140, value=Op.CALLDATALOAD(offset=0x84)) - + Op.ADD(Op.MLOAD(offset=0x100), 0x2) - + Op.PUSH1[0x1C] - + Op.PUSH1[0x64] + + Op.POP + + Op.JUMPDEST + + Op.JUMPI(pc=0x715, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x7DC12195))) + + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) + + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) + + Op.PUSH1[0xA0] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -3836,12 +3177,33 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE + + Op.MSTORE(offset=Op.DUP2, value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x8) + + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x0) + + Op.DUP1 + + Op.SWAP1 + + Op.POP + + Op.SHA3 + + Op.PUSH1[0x80] * 2 + + Op.MSIZE + + Op.SWAP1 + + Op.MSIZE + Op.ADD - + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0xE05DCB56) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0xC0)) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=Op.MLOAD(offset=0xE0)) - + Op.ADD(Op.MLOAD(offset=0x100), 0x2) - + Op.ADD(Op.MUL(0x20, Op.DUP2), 0x40) + + Op.PUSH1[0x0] + + Op.SWAP1 + + Op.MSTORE + + Op.MSTORE(offset=Op.DUP2, value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x5) + + Op.DUP1 + + Op.SWAP1 + + Op.POP + + Op.MUL(0x20, Op.SLOAD(key=Op.SHA3)) + + Op.DUP1 + + Op.ADD(0x20, Op.DUP1) + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -3849,41 +3211,58 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.POP( - Op.CALL( - gas=Op.SUB(Op.GAS, 0x2D), - address=Op.MLOAD(offset=0x20), - value=0x0, - args_offset=Op.DUP6, - args_size=0x44, - ret_offset=Op.DUP2, - ret_size=Op.ADD(0x40, Op.MUL(0x20, Op.DUP2)), - ) + + Op.MSTORE(offset=Op.DUP2, value=Op.DUP2) + + Op.ADD(Op.DUP2, 0x20) + + Op.SWAP1 + + Op.POP + + Op.SWAP1 + + Op.POP + + Op.PUSH1[0x0] + + Op.JUMPDEST + + Op.JUMPI( + pc=0x6D9, + condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.DIV(Op.DUP4, 0x20))), ) - + Op.ADD(Op.DUP2, 0x40) + + Op.MSTORE( + offset=Op.ADD(Op.DUP4, Op.MUL(0x20, Op.DUP2)), + value=Op.SLOAD(key=Op.ADD(Op.DUP5, Op.DUP1)), + ) + + Op.ADD(Op.DUP2, 0x1) + + Op.SWAP1 + + Op.POP + + Op.JUMP(pc=0x6B8) + + Op.JUMPDEST + + Op.MSTORE( + offset=Op.ADD(Op.DUP4, Op.MUL(0x20, Op.DUP2)), + value=Op.AND( + Op.SLOAD(key=Op.ADD(Op.DUP6, Op.DUP2)), + Op.SUB( + 0x0, Op.EXP(0x100, Op.SUB(0x20, Op.MOD(Op.DUP4, 0x20))) + ), + ), + ) + + Op.DUP2 + Op.SWAP1 + Op.POP + Op.SWAP1 + Op.POP + Op.SWAP1 + Op.POP - + Op.JUMPI( - pc=0x250, - condition=Op.ISZERO( - Op.EQ( - Op.MLOAD( - offset=Op.ADD( - Op.DUP3, - Op.MUL(0x20, Op.ADD(Op.MLOAD(offset=0x100), 0x1)), - ) - ), - 0x0, - ) + + Op.SWAP1 + + Op.POP + + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x40), value=0x20) + + Op.RETURN( + offset=Op.SUB(Op.DUP3, 0x40), + size=Op.ADD( + 0x40, Op.MUL(Op.MLOAD(offset=Op.SUB(Op.DUP3, 0x20)), 0x20) ), ) - + Op.PUSH1[0x60] - + Op.PUSH1[0x1C] - + Op.PUSH2[0x14C] + + Op.POP + + Op.JUMPDEST + + Op.JUMPI(pc=0x806, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0xFA9832D1))) + + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) + + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) + + Op.PUSH1[0xA0] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -3891,12 +3270,16 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.ADD - + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0xE365736B) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0xC0)) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=Op.MLOAD(offset=0xE0)) - + Op.PUSH1[0x1C] - + Op.PUSH1[0x84] + + Op.MSTORE(offset=Op.DUP2, value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x9) + + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x0) + + Op.DUP1 + + Op.SWAP1 + + Op.POP + + Op.SHA3 + + Op.PUSH1[0x80] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -3904,13 +3287,16 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.ADD - + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0x2F300BEE) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=0x2) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=0x5) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x44), value=Op.MLOAD(offset=0x100)) - + Op.DUP5 - + Op.ADD(Op.MUL(0x20, Op.DUP2), 0x40) + + Op.MSTORE(offset=Op.DUP2, value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x0) + + Op.DUP1 + + Op.SWAP1 + + Op.POP + + Op.MUL(0x20, Op.SLOAD(key=Op.SHA3)) + + Op.DUP1 + + Op.ADD(0x20, Op.DUP1) + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -3918,102 +3304,58 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.POP( - Op.CALL( - gas=Op.SUB(Op.GAS, 0x2D), - address=Op.MLOAD(offset=0x80), - value=0x0, - args_offset=Op.DUP6, - args_size=0x64, - ret_offset=Op.DUP2, - ret_size=Op.ADD(0x40, Op.MUL(0x20, Op.DUP2)), - ) + + Op.MSTORE(offset=Op.DUP2, value=Op.DUP2) + + Op.ADD(Op.DUP2, 0x20) + + Op.SWAP1 + + Op.POP + + Op.SWAP1 + + Op.POP + + Op.PUSH1[0x0] + + Op.JUMPDEST + + Op.JUMPI( + pc=0x7CA, + condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.DIV(Op.DUP4, 0x20))), ) - + Op.ADD(Op.DUP2, 0x40) + + Op.MSTORE( + offset=Op.ADD(Op.DUP4, Op.MUL(0x20, Op.DUP2)), + value=Op.SLOAD(key=Op.ADD(Op.DUP5, Op.DUP1)), + ) + + Op.ADD(Op.DUP2, 0x1) + Op.SWAP1 + Op.POP + + Op.JUMP(pc=0x7A9) + + Op.JUMPDEST + + Op.MSTORE( + offset=Op.ADD(Op.DUP4, Op.MUL(0x20, Op.DUP2)), + value=Op.AND( + Op.SLOAD(key=Op.ADD(Op.DUP6, Op.DUP2)), + Op.SUB( + 0x0, Op.EXP(0x100, Op.SUB(0x20, Op.MOD(Op.DUP4, 0x20))) + ), + ), + ) + + Op.DUP2 + Op.SWAP1 + Op.POP + Op.SWAP1 + Op.POP - + Op.ADD(0x20, Op.MUL(0x20, Op.MLOAD(offset=Op.SUB(Op.DUP2, 0x20)))) - + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0x44), value=Op.DUP4) - + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0xA4), value=Op.SUB(Op.DUP3, 0x20)) - + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0x108), value=Op.DUP1) - + Op.ADD(Op.DUP5, Op.DUP1) - + Op.SWAP4 - + Op.POP * 3 - + Op.ADD(0x4, Op.DUP2) - + Op.MSIZE + Op.SWAP1 - + Op.MSIZE - + Op.ADD - + Op.PUSH1[0x0] + + Op.POP + Op.SWAP1 - + Op.MSTORE - + Op.JUMPI( - pc=0x1FC, - condition=Op.CALL( - gas=0x1C, - address=0x4, - value=0x0, - args_offset=Op.DUP5, - args_size=0x64, - ret_offset=Op.DUP2, - ret_size=0x64, - ), - ) - + Op.INVALID - + Op.JUMPDEST - + Op.ADD(Op.DUP2, 0x64) - + Op.SWAP3 + Op.POP - + Op.MLOAD(offset=Op.ADD(Op.DUP3, 0x108)) - + Op.DUP1 - + Op.JUMPI( - pc=0x223, - condition=Op.CALL( - gas=Op.ADD(0x12, Op.SDIV(Op.DUP8, 0xA)), - address=0x4, - value=0x0, - args_offset=Op.MLOAD(offset=Op.ADD(Op.DUP8, 0xA4)), - args_size=Op.DUP3, - ret_offset=Op.DUP6, - ret_size=Op.DUP1, + + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x40), value=0x20) + + Op.RETURN( + offset=Op.SUB(Op.DUP3, 0x40), + size=Op.ADD( + 0x40, Op.MUL(Op.MLOAD(offset=Op.SUB(Op.DUP3, 0x20)), 0x20) ), ) - + Op.INVALID - + Op.JUMPDEST - + Op.POP - + Op.ADD(Op.DUP5, Op.DUP1) - + Op.SWAP4 - + Op.POP * 2 - + Op.SUB(Op.DUP4, Op.DUP1) - + Op.POP( - Op.CALL( - gas=Op.SUB(Op.GAS, 0x2D), - address=Op.MLOAD(offset=0x20), - value=0x0, - args_offset=Op.DUP5, - args_size=Op.DUP3, - ret_offset=0x280, - ret_size=0x20, - ) - ) - + Op.MLOAD(offset=0x280) - + Op.SWAP1 - + Op.POP - + Op.SWAP1 - + Op.POP - + Op.SWAP1 - + Op.POP - + Op.SWAP1 + Op.POP - + Op.JUMP(pc=0x37D) + Op.JUMPDEST - + Op.PUSH1[0x60] - + Op.PUSH1[0x1C] - + Op.PUSH2[0x14C] + + Op.JUMPI(pc=0x8F7, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x2C5A40D5))) + + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) + + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) + + Op.PUSH1[0xA0] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -4021,12 +3363,16 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.ADD - + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0xE365736B) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0xC0)) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=Op.MLOAD(offset=0xE0)) - + Op.PUSH1[0x1C] - + Op.PUSH1[0x84] + + Op.MSTORE(offset=Op.DUP2, value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0xA) + + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x0) + + Op.DUP1 + + Op.SWAP1 + + Op.POP + + Op.SHA3 + + Op.PUSH1[0x80] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -4034,24 +3380,16 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.ADD - + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0x2F300BEE) - + Op.MSTORE( - offset=Op.ADD(Op.DUP3, 0x4), - value=Op.SUB( - Op.MLOAD( - offset=Op.ADD( - Op.DUP6, - Op.MUL(0x20, Op.ADD(Op.MLOAD(offset=0x100), 0x1)), - ) - ), - 0x1, - ), - ) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=0x5) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x44), value=Op.MLOAD(offset=0x100)) - + Op.DUP5 - + Op.ADD(Op.MUL(0x20, Op.DUP2), 0x40) + + Op.MSTORE(offset=Op.DUP2, value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x5) + + Op.DUP1 + + Op.SWAP1 + + Op.POP + + Op.MUL(0x20, Op.SLOAD(key=Op.SHA3)) + + Op.DUP1 + + Op.ADD(0x20, Op.DUP1) + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -4059,89 +3397,37 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.POP( - Op.CALL( - gas=Op.SUB(Op.GAS, 0x2D), - address=Op.MLOAD(offset=0x80), - value=0x0, - args_offset=Op.DUP6, - args_size=0x64, - ret_offset=Op.DUP2, - ret_size=Op.ADD(0x40, Op.MUL(0x20, Op.DUP2)), - ) - ) - + Op.ADD(Op.DUP2, 0x40) - + Op.SWAP1 - + Op.POP + + Op.MSTORE(offset=Op.DUP2, value=Op.DUP2) + + Op.ADD(Op.DUP2, 0x20) + Op.SWAP1 + Op.POP + Op.SWAP1 + Op.POP - + Op.ADD(0x20, Op.MUL(0x20, Op.MLOAD(offset=Op.SUB(Op.DUP2, 0x20)))) - + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0x44), value=Op.DUP4) - + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0xA4), value=Op.SUB(Op.DUP3, 0x20)) - + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0x108), value=Op.DUP1) - + Op.ADD(Op.DUP5, Op.DUP1) - + Op.SWAP4 - + Op.POP * 3 - + Op.ADD(0x4, Op.DUP2) - + Op.MSIZE - + Op.SWAP1 - + Op.MSIZE - + Op.ADD + Op.PUSH1[0x0] - + Op.SWAP1 - + Op.MSTORE - + Op.JUMPI( - pc=0x32D, - condition=Op.CALL( - gas=0x1C, - address=0x4, - value=0x0, - args_offset=Op.DUP5, - args_size=0x64, - ret_offset=Op.DUP2, - ret_size=0x64, - ), - ) - + Op.INVALID + Op.JUMPDEST - + Op.ADD(Op.DUP2, 0x64) - + Op.SWAP3 - + Op.POP - + Op.MLOAD(offset=Op.ADD(Op.DUP3, 0x108)) - + Op.DUP1 + Op.JUMPI( - pc=0x354, - condition=Op.CALL( - gas=Op.ADD(0x12, Op.SDIV(Op.DUP8, 0xA)), - address=0x4, - value=0x0, - args_offset=Op.MLOAD(offset=Op.ADD(Op.DUP8, 0xA4)), - args_size=Op.DUP3, - ret_offset=Op.DUP6, - ret_size=Op.DUP1, - ), + pc=0x8BB, + condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.DIV(Op.DUP4, 0x20))), ) - + Op.INVALID - + Op.JUMPDEST + + Op.MSTORE( + offset=Op.ADD(Op.DUP4, Op.MUL(0x20, Op.DUP2)), + value=Op.SLOAD(key=Op.ADD(Op.DUP5, Op.DUP1)), + ) + + Op.ADD(Op.DUP2, 0x1) + + Op.SWAP1 + Op.POP - + Op.ADD(Op.DUP5, Op.DUP1) - + Op.SWAP4 - + Op.POP * 2 - + Op.SUB(Op.DUP4, Op.DUP1) - + Op.POP( - Op.CALL( - gas=Op.SUB(Op.GAS, 0x2D), - address=Op.MLOAD(offset=0x20), - value=0x0, - args_offset=Op.DUP5, - args_size=Op.DUP3, - ret_offset=0x2C0, - ret_size=0x20, - ) + + Op.JUMP(pc=0x89A) + + Op.JUMPDEST + + Op.MSTORE( + offset=Op.ADD(Op.DUP4, Op.MUL(0x20, Op.DUP2)), + value=Op.AND( + Op.SLOAD(key=Op.ADD(Op.DUP6, Op.DUP2)), + Op.SUB( + 0x0, Op.EXP(0x100, Op.SUB(0x20, Op.MOD(Op.DUP4, 0x20))) + ), + ), ) - + Op.MLOAD(offset=0x2C0) + + Op.DUP2 + Op.SWAP1 + Op.POP + Op.SWAP1 @@ -4150,21 +3436,19 @@ def test_block504980( + Op.POP + Op.SWAP1 + Op.POP - + Op.JUMPDEST + + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x40), value=0x20) + + Op.RETURN( + offset=Op.SUB(Op.DUP3, 0x40), + size=Op.ADD( + 0x40, Op.MUL(Op.MLOAD(offset=Op.SUB(Op.DUP3, 0x20)), 0x20) + ), + ) + Op.POP - + Op.MSTORE(offset=0x2E0, value=0x1) - + Op.RETURN(offset=0x2E0, size=0x20) - + Op.POP * 2 + Op.JUMPDEST - + Op.JUMPI(pc=0x764, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0xDE9080C8))) - + Op.MSTORE(offset=0xC0, value=Op.CALLDATALOAD(offset=0x4)) - + Op.MSTORE(offset=0xE0, value=Op.CALLDATALOAD(offset=0x24)) - + Op.MSTORE(offset=0x100, value=Op.CALLDATALOAD(offset=0x44)) - + Op.MSTORE(offset=0x120, value=Op.CALLDATALOAD(offset=0x64)) - + Op.MSTORE(offset=0x140, value=Op.CALLDATALOAD(offset=0x84)) - + Op.ADD(Op.MLOAD(offset=0x100), 0x2) - + Op.PUSH1[0x1C] - + Op.PUSH1[0x64] + + Op.JUMPI(pc=0x9EB, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0xE05DCB56))) + + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) + + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) + + Op.PUSH1[0xA0] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -4172,12 +3456,17 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.ADD - + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0xE05DCB56) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0xC0)) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=Op.MLOAD(offset=0xE0)) - + Op.DUP2 - + Op.ADD(Op.MUL(0x20, Op.DUP2), 0x40) + + Op.MSTORE(offset=Op.DUP2, value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0xB) + + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x0) + + Op.DUP1 + + Op.SWAP1 + + Op.POP + + Op.SHA3 + + Op.PUSH1[0x2] + + Op.PUSH1[0x80] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -4185,26 +3474,76 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.POP( - Op.CALL( - gas=Op.SUB(Op.GAS, 0x2D), - address=Op.MLOAD(offset=0x20), - value=0x0, - args_offset=Op.DUP6, - args_size=0x44, - ret_offset=Op.DUP2, - ret_size=Op.ADD(0x40, Op.MUL(0x20, Op.DUP2)), - ) + + Op.MSTORE(offset=Op.DUP2, value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x0) + + Op.DUP1 + + Op.SWAP1 + + Op.POP + + Op.MUL(0x20, Op.SLOAD(key=Op.SHA3)) + + Op.ADD + + Op.DUP1 + + Op.ADD(0x20, Op.DUP1) + + Op.MSIZE + + Op.SWAP1 + + Op.MSIZE + + Op.ADD + + Op.PUSH1[0x0] + + Op.SWAP1 + + Op.MSTORE + + Op.MSTORE(offset=Op.DUP2, value=Op.DUP2) + + Op.ADD(Op.DUP2, 0x20) + + Op.SWAP1 + + Op.POP + + Op.SWAP1 + + Op.POP + + Op.PUSH1[0x0] + + Op.JUMPDEST + + Op.JUMPI( + pc=0x9AF, + condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.DIV(Op.DUP4, 0x20))), ) - + Op.ADD(Op.DUP2, 0x40) + + Op.MSTORE( + offset=Op.ADD(Op.DUP4, Op.MUL(0x20, Op.DUP2)), + value=Op.SLOAD(key=Op.ADD(Op.DUP5, Op.DUP1)), + ) + + Op.ADD(Op.DUP2, 0x1) + + Op.SWAP1 + + Op.POP + + Op.JUMP(pc=0x98E) + + Op.JUMPDEST + + Op.MSTORE( + offset=Op.ADD(Op.DUP4, Op.MUL(0x20, Op.DUP2)), + value=Op.AND( + Op.SLOAD(key=Op.ADD(Op.DUP6, Op.DUP2)), + Op.SUB( + 0x0, Op.EXP(0x100, Op.SUB(0x20, Op.MOD(Op.DUP4, 0x20))) + ), + ), + ) + + Op.DUP2 + Op.SWAP1 + Op.POP + Op.SWAP1 + Op.POP + Op.SWAP1 + Op.POP - + Op.PUSH1[0x1C] - + Op.PUSH1[0x64] + + Op.SWAP1 + + Op.POP + + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x40), value=0x20) + + Op.RETURN( + offset=Op.SUB(Op.DUP3, 0x40), + size=Op.ADD( + 0x40, Op.MUL(Op.MLOAD(offset=Op.SUB(Op.DUP3, 0x20)), 0x20) + ), + ) + + Op.POP + + Op.JUMPDEST + + Op.JUMPI(pc=0xA3A, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x586B5BE0))) + + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) + + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) + + Op.PUSH1[0x80] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -4212,12 +3551,20 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.ADD - + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0x2C5A40D5) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0xC0)) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=Op.MLOAD(offset=0xE0)) - + Op.MLOAD(offset=0x140) - + Op.ADD(Op.MUL(0x20, Op.DUP2), 0x40) + + Op.MSTORE(offset=Op.DUP2, value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0xC) + + Op.DUP1 + + Op.SWAP1 + + Op.POP + + Op.MSTORE(offset=0xB80, value=Op.SLOAD(key=Op.SHA3)) + + Op.RETURN(offset=0xB80, size=0x20) + + Op.JUMPDEST + + Op.JUMPI(pc=0xB58, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0xEB8AF5AA))) + + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) + + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) + + Op.PUSH1[0xA0] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -4225,26 +3572,50 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.POP( - Op.CALL( - gas=Op.SUB(Op.GAS, 0x2D), - address=Op.MLOAD(offset=0x20), - value=0x0, - args_offset=Op.DUP6, - args_size=0x44, - ret_offset=Op.DUP2, - ret_size=Op.ADD(0x40, Op.MUL(0x20, Op.DUP2)), - ) - ) - + Op.ADD(Op.DUP2, 0x40) + + Op.MSTORE(offset=Op.DUP2, value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0xD) + + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x0) + + Op.DUP1 + Op.SWAP1 + Op.POP + + Op.SHA3 + + Op.PUSH1[0x80] * 2 + + Op.MSIZE + + Op.SWAP1 + + Op.MSIZE + + Op.ADD + + Op.PUSH1[0x0] + + Op.SWAP1 + + Op.MSTORE + + Op.MSTORE(offset=Op.DUP2, value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x0) + + Op.DUP1 + Op.SWAP1 + Op.POP + + Op.SLOAD(key=Op.SHA3) + + Op.PUSH1[0x80] * 2 + + Op.MSIZE + + Op.SWAP1 + + Op.MSIZE + + Op.ADD + + Op.PUSH1[0x0] + + Op.SWAP1 + + Op.MSTORE + + Op.MSTORE(offset=Op.DUP2, value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x5) + + Op.DUP1 + Op.SWAP1 + Op.POP - + Op.MLOAD(offset=0x120) - + Op.ADD(0x20, Op.MUL(0x20, Op.DUP1)) + + Op.SLOAD(key=Op.SHA3) + + Op.MUL(0x20, Op.SDIV) + + Op.DUP1 + + Op.ADD(0x20, Op.DUP1) + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -4261,47 +3632,49 @@ def test_block504980( + Op.PUSH1[0x0] + Op.JUMPDEST + Op.JUMPI( - pc=0x4EE, - condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.MLOAD(offset=0x120))), + pc=0xB1C, + condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.DIV(Op.DUP4, 0x20))), ) - + Op.PUSH1[0x1C] - + Op.PUSH1[0x64] - + Op.MSIZE - + Op.SWAP1 - + Op.MSIZE - + Op.ADD - + Op.PUSH1[0x0] + + Op.MSTORE( + offset=Op.ADD(Op.DUP4, Op.MUL(0x20, Op.DUP2)), + value=Op.SLOAD(key=Op.ADD(Op.DUP5, Op.DUP1)), + ) + + Op.ADD(Op.DUP2, 0x1) + Op.SWAP1 - + Op.MSTORE - + Op.ADD - + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0x28C8B315) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0xC0)) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=Op.DUP2) - + Op.POP( - Op.CALL( - gas=Op.SUB(Op.GAS, 0x2D), - address=Op.MLOAD(offset=0x40), - value=0x0, - args_offset=Op.DUP4, - args_size=0x44, - ret_offset=0x360, - ret_size=0x20, - ) + + Op.POP + + Op.JUMP(pc=0xAFB) + + Op.JUMPDEST + + Op.MSTORE( + offset=Op.ADD(Op.DUP4, Op.MUL(0x20, Op.DUP2)), + value=Op.AND( + Op.SLOAD(key=Op.ADD(Op.DUP6, Op.DUP2)), + Op.SUB( + 0x0, Op.EXP(0x100, Op.SUB(0x20, Op.MOD(Op.DUP4, 0x20))) + ), + ), ) - + Op.MLOAD(offset=0x360) + + Op.DUP2 + Op.SWAP1 + Op.POP - + Op.ADD(Op.DUP4, Op.MUL(0x20, Op.DUP2)) - + Op.MSTORE - + Op.ADD(Op.DUP2, 0x1) + Op.SWAP1 + Op.POP - + Op.JUMP(pc=0x493) - + Op.JUMPDEST + + Op.SWAP1 + Op.POP - + Op.PUSH1[0xA0] - + Op.PUSH1[0x1C] - + Op.PUSH2[0x20C] + + Op.SWAP1 + + Op.POP + + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x40), value=0x20) + + Op.RETURN( + offset=Op.SUB(Op.DUP3, 0x40), + size=Op.ADD( + 0x40, Op.MUL(Op.MLOAD(offset=Op.SUB(Op.DUP3, 0x20)), 0x20) + ), + ) + + Op.POP + + Op.JUMPDEST + + Op.JUMPI(pc=0xC76, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x7AB6EA8A))) + + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) + + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) + + Op.PUSH1[0xA0] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -4309,35 +3682,16 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.ADD - + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0xA647A5B9) - + Op.DUP5 - + Op.ADD(0x20, Op.MUL(0x20, Op.MLOAD(offset=Op.SUB(Op.DUP2, 0x20)))) - + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0x4), value=Op.DUP4) - + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0xA4), value=Op.SUB(Op.DUP3, 0x20)) - + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0x148), value=Op.DUP1) - + Op.ADD(Op.DUP5, Op.DUP1) - + Op.SWAP4 - + Op.POP * 3 - + Op.DUP4 - + Op.ADD(0x20, Op.MUL(0x20, Op.MLOAD(offset=Op.SUB(Op.DUP2, 0x20)))) - + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0x24), value=Op.DUP4) - + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0xC4), value=Op.SUB(Op.DUP3, 0x20)) - + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0x168), value=Op.DUP1) - + Op.ADD(Op.DUP5, Op.DUP1) - + Op.SWAP4 - + Op.POP * 3 - + Op.DUP3 - + Op.ADD(0x20, Op.MUL(0x20, Op.MLOAD(offset=Op.SUB(Op.DUP2, 0x20)))) - + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0x44), value=Op.DUP4) - + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0xE4), value=Op.SUB(Op.DUP3, 0x20)) - + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0x188), value=Op.DUP1) - + Op.ADD(Op.DUP5, Op.DUP1) - + Op.SWAP4 - + Op.POP * 3 - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x64), value=Op.MLOAD(offset=0x120)) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x84), value=Op.MLOAD(offset=0x100)) - + Op.ADD(0x4, Op.DUP2) + + Op.MSTORE(offset=Op.DUP2, value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0xE) + + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x0) + + Op.DUP1 + + Op.SWAP1 + + Op.POP + + Op.SHA3 + + Op.PUSH1[0x80] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -4345,86 +3699,33 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.JUMPI( - pc=0x5B5, - condition=Op.CALL( - gas=0x22, - address=0x4, - value=0x0, - args_offset=Op.DUP5, - args_size=0xA4, - ret_offset=Op.DUP2, - ret_size=0xA4, - ), - ) - + Op.INVALID - + Op.JUMPDEST - + Op.ADD(Op.DUP2, 0xA4) - + Op.SWAP3 - + Op.POP - + Op.MLOAD(offset=Op.ADD(Op.DUP3, 0x148)) + + Op.MSTORE(offset=Op.DUP2, value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x0) + Op.DUP1 - + Op.JUMPI( - pc=0x5DC, - condition=Op.CALL( - gas=Op.ADD(0x12, Op.SDIV(Op.DUP8, 0xA)), - address=0x4, - value=0x0, - args_offset=Op.MLOAD(offset=Op.ADD(Op.DUP8, 0xA4)), - args_size=Op.DUP3, - ret_offset=Op.DUP6, - ret_size=Op.DUP1, - ), - ) - + Op.INVALID - + Op.JUMPDEST + + Op.SWAP1 + Op.POP - + Op.ADD(Op.DUP5, Op.DUP1) - + Op.SWAP4 - + Op.POP * 2 - + Op.MLOAD(offset=Op.ADD(Op.DUP3, 0x168)) + + Op.SLOAD(key=Op.SHA3) + + Op.PUSH1[0x80] * 2 + + Op.MSIZE + + Op.SWAP1 + + Op.MSIZE + + Op.ADD + + Op.PUSH1[0x0] + + Op.SWAP1 + + Op.MSTORE + + Op.MSTORE(offset=Op.DUP2, value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x5) + Op.DUP1 - + Op.JUMPI( - pc=0x604, - condition=Op.CALL( - gas=Op.ADD(0x12, Op.SDIV(Op.DUP8, 0xA)), - address=0x4, - value=0x0, - args_offset=Op.MLOAD(offset=Op.ADD(Op.DUP8, 0xC4)), - args_size=Op.DUP3, - ret_offset=Op.DUP6, - ret_size=Op.DUP1, - ), - ) - + Op.INVALID - + Op.JUMPDEST + + Op.SWAP1 + Op.POP - + Op.ADD(Op.DUP5, Op.DUP1) - + Op.SWAP4 - + Op.POP * 2 - + Op.MLOAD(offset=Op.ADD(Op.DUP3, 0x188)) + + Op.SLOAD(key=Op.SHA3) + + Op.MUL(0x20, Op.SDIV) + Op.DUP1 - + Op.JUMPI( - pc=0x62C, - condition=Op.CALL( - gas=Op.ADD(0x12, Op.SDIV(Op.DUP8, 0xA)), - address=0x4, - value=0x0, - args_offset=Op.MLOAD(offset=Op.ADD(Op.DUP8, 0xE4)), - args_size=Op.DUP3, - ret_offset=Op.DUP6, - ret_size=Op.DUP1, - ), - ) - + Op.INVALID - + Op.JUMPDEST - + Op.POP - + Op.ADD(Op.DUP5, Op.DUP1) - + Op.SWAP4 - + Op.POP * 2 - + Op.SUB(Op.DUP4, Op.DUP1) - + Op.DUP8 - + Op.ADD(Op.MUL(0x20, Op.DUP2), 0x40) + + Op.ADD(0x20, Op.DUP1) + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -4432,22 +3733,37 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.POP( - Op.CALL( - gas=Op.SUB(Op.GAS, 0x2D), - address=Op.MLOAD(offset=0x80), - value=0x0, - args_offset=Op.DUP7, - args_size=Op.DUP5, - ret_offset=Op.DUP2, - ret_size=Op.ADD(0x40, Op.MUL(0x20, Op.DUP2)), - ) - ) - + Op.ADD(Op.DUP2, 0x40) + + Op.MSTORE(offset=Op.DUP2, value=Op.DUP2) + + Op.ADD(Op.DUP2, 0x20) + + Op.SWAP1 + + Op.POP + Op.SWAP1 + Op.POP + + Op.PUSH1[0x0] + + Op.JUMPDEST + + Op.JUMPI( + pc=0xC3A, + condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.DIV(Op.DUP4, 0x20))), + ) + + Op.MSTORE( + offset=Op.ADD(Op.DUP4, Op.MUL(0x20, Op.DUP2)), + value=Op.SLOAD(key=Op.ADD(Op.DUP5, Op.DUP1)), + ) + + Op.ADD(Op.DUP2, 0x1) + Op.SWAP1 + Op.POP + + Op.JUMP(pc=0xC19) + + Op.JUMPDEST + + Op.MSTORE( + offset=Op.ADD(Op.DUP4, Op.MUL(0x20, Op.DUP2)), + value=Op.AND( + Op.SLOAD(key=Op.ADD(Op.DUP6, Op.DUP2)), + Op.SUB( + 0x0, Op.EXP(0x100, Op.SUB(0x20, Op.MOD(Op.DUP4, 0x20))) + ), + ), + ) + + Op.DUP2 + Op.SWAP1 + Op.POP + Op.SWAP1 @@ -4456,11 +3772,19 @@ def test_block504980( + Op.POP + Op.SWAP1 + Op.POP - + Op.SWAP3 + + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x40), value=0x20) + + Op.RETURN( + offset=Op.SUB(Op.DUP3, 0x40), + size=Op.ADD( + 0x40, Op.MUL(Op.MLOAD(offset=Op.SUB(Op.DUP3, 0x20)), 0x20) + ), + ) + Op.POP - + Op.PUSH1[0x60] - + Op.PUSH1[0x1C] - + Op.PUSH2[0x14C] + + Op.JUMPDEST + + Op.JUMPI(pc=0xD94, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x2B810CB9))) + + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) + + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) + + Op.PUSH1[0xA0] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -4468,19 +3792,16 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.ADD - + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0xE365736B) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0xC0)) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=Op.MLOAD(offset=0xE0)) - + Op.DUP5 - + Op.ADD(0x20, Op.MUL(0x20, Op.MLOAD(offset=Op.SUB(Op.DUP2, 0x20)))) - + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0x44), value=Op.DUP4) - + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0xA4), value=Op.SUB(Op.DUP3, 0x20)) - + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0x108), value=Op.DUP1) - + Op.ADD(Op.DUP5, Op.DUP1) - + Op.SWAP4 - + Op.POP * 3 - + Op.ADD(0x4, Op.DUP2) + + Op.MSTORE(offset=Op.DUP2, value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0xF) + + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x0) + + Op.DUP1 + + Op.SWAP1 + + Op.POP + + Op.SHA3 + + Op.PUSH1[0x80] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -4488,94 +3809,92 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.JUMPI( - pc=0x6DF, - condition=Op.CALL( - gas=0x1C, - address=0x4, - value=0x0, - args_offset=Op.DUP5, - args_size=0x64, - ret_offset=Op.DUP2, - ret_size=0x64, - ), - ) - + Op.INVALID - + Op.JUMPDEST - + Op.ADD(Op.DUP2, 0x64) - + Op.SWAP3 - + Op.POP - + Op.MLOAD(offset=Op.ADD(Op.DUP3, 0x108)) + + Op.MSTORE(offset=Op.DUP2, value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x0) + Op.DUP1 - + Op.JUMPI( - pc=0x706, - condition=Op.CALL( - gas=Op.ADD(0x12, Op.SDIV(Op.DUP8, 0xA)), - address=0x4, - value=0x0, - args_offset=Op.MLOAD(offset=Op.ADD(Op.DUP8, 0xA4)), - args_size=Op.DUP3, - ret_offset=Op.DUP6, - ret_size=Op.DUP1, - ), - ) - + Op.INVALID - + Op.JUMPDEST - + Op.POP - + Op.ADD(Op.DUP5, Op.DUP1) - + Op.SWAP4 - + Op.POP * 2 - + Op.SUB(Op.DUP4, Op.DUP1) - + Op.POP( - Op.CALL( - gas=Op.SUB(Op.GAS, 0x2D), - address=Op.MLOAD(offset=0x20), - value=0x0, - args_offset=Op.DUP5, - args_size=Op.DUP3, - ret_offset=0x3C0, - ret_size=0x20, - ) - ) - + Op.MLOAD(offset=0x3C0) + Op.SWAP1 + Op.POP + + Op.SLOAD(key=Op.SHA3) + + Op.PUSH1[0x80] * 2 + + Op.MSIZE + + Op.SWAP1 + + Op.MSIZE + + Op.ADD + + Op.PUSH1[0x0] + + Op.SWAP1 + + Op.MSTORE + + Op.MSTORE(offset=Op.DUP2, value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x5) + + Op.DUP1 + Op.SWAP1 + Op.POP + + Op.SLOAD(key=Op.SHA3) + + Op.MUL(0x20, Op.SDIV) + + Op.DUP1 + + Op.ADD(0x20, Op.DUP1) + + Op.MSIZE + + Op.SWAP1 + + Op.MSIZE + + Op.ADD + + Op.PUSH1[0x0] + + Op.SWAP1 + + Op.MSTORE + + Op.MSTORE(offset=Op.DUP2, value=Op.DUP2) + + Op.ADD(Op.DUP2, 0x20) + Op.SWAP1 + Op.POP + Op.SWAP1 - + Op.POP * 2 + + Op.POP + + Op.PUSH1[0x0] + + Op.JUMPDEST + Op.JUMPI( - pc=0x752, - condition=Op.ISZERO( - Op.EQ( - Op.MLOAD( - offset=Op.ADD( - Op.DUP5, Op.MUL(0x20, Op.MLOAD(offset=0x100)) - ) - ), - 0x0, - ) - ), + pc=0xD58, + condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.DIV(Op.DUP4, 0x20))), ) - + Op.MSTORE(offset=0x3E0, value=0x0) - + Op.RETURN(offset=0x3E0, size=0x20) - + Op.JUMP(pc=0x75F) - + Op.JUMPDEST - + Op.MSTORE(offset=0x400, value=0x1) - + Op.RETURN(offset=0x400, size=0x20) + + Op.MSTORE( + offset=Op.ADD(Op.DUP4, Op.MUL(0x20, Op.DUP2)), + value=Op.SLOAD(key=Op.ADD(Op.DUP5, Op.DUP1)), + ) + + Op.ADD(Op.DUP2, 0x1) + + Op.SWAP1 + + Op.POP + + Op.JUMP(pc=0xD37) + Op.JUMPDEST - + Op.POP * 4 + + Op.MSTORE( + offset=Op.ADD(Op.DUP4, Op.MUL(0x20, Op.DUP2)), + value=Op.AND( + Op.SLOAD(key=Op.ADD(Op.DUP6, Op.DUP2)), + Op.SUB( + 0x0, Op.EXP(0x100, Op.SUB(0x20, Op.MOD(Op.DUP4, 0x20))) + ), + ), + ) + + Op.DUP2 + + Op.SWAP1 + + Op.POP + + Op.SWAP1 + + Op.POP + + Op.SWAP1 + + Op.POP + + Op.SWAP1 + + Op.POP + + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x40), value=0x20) + + Op.RETURN( + offset=Op.SUB(Op.DUP3, 0x40), + size=Op.ADD( + 0x40, Op.MUL(Op.MLOAD(offset=Op.SUB(Op.DUP3, 0x20)), 0x20) + ), + ) + + Op.POP + Op.JUMPDEST - + Op.JUMPI(pc=0xA66, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x384CA8DD))) - + Op.MSTORE(offset=0xC0, value=Op.CALLDATALOAD(offset=0x4)) - + Op.MSTORE(offset=0xE0, value=Op.CALLDATALOAD(offset=0x24)) - + Op.MSTORE(offset=0x100, value=Op.CALLDATALOAD(offset=0x44)) - + Op.MSTORE(offset=0x120, value=Op.CALLDATALOAD(offset=0x64)) - + Op.MSTORE(offset=0x140, value=Op.CALLDATALOAD(offset=0x84)) - + Op.PUSH1[0x1C] - + Op.PUSH1[0x64] + + Op.JUMPI(pc=0xE85, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x7FB42E46))) + + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) + + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) + + Op.PUSH1[0xA0] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -4583,12 +3902,16 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.ADD - + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0xE05DCB56) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0xC0)) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=Op.MLOAD(offset=0xE0)) - + Op.ADD(Op.MLOAD(offset=0x100), 0x2) - + Op.ADD(Op.MUL(0x20, Op.DUP2), 0x40) + + Op.MSTORE(offset=Op.DUP2, value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x10) + + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x0) + + Op.DUP1 + + Op.SWAP1 + + Op.POP + + Op.SHA3 + + Op.PUSH1[0x80] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -4596,26 +3919,16 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.POP( - Op.CALL( - gas=Op.SUB(Op.GAS, 0x2D), - address=Op.MLOAD(offset=0x20), - value=0x0, - args_offset=Op.DUP6, - args_size=0x44, - ret_offset=Op.DUP2, - ret_size=Op.ADD(0x40, Op.MUL(0x20, Op.DUP2)), - ) - ) - + Op.ADD(Op.DUP2, 0x40) - + Op.SWAP1 - + Op.POP - + Op.SWAP1 - + Op.POP + + Op.MSTORE(offset=Op.DUP2, value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x0) + + Op.DUP1 + Op.SWAP1 + Op.POP - + Op.PUSH1[0x1C] - + Op.PUSH1[0x64] + + Op.MUL(0x20, Op.SLOAD(key=Op.SHA3)) + + Op.DUP1 + + Op.ADD(0x20, Op.DUP1) + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -4623,39 +3936,58 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.ADD - + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0xFA9832D1) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0xC0)) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=Op.MLOAD(offset=0xE0)) - + Op.MLOAD(offset=0x100) - + Op.ADD(Op.MUL(0x20, Op.DUP2), 0x40) - + Op.MSIZE + + Op.MSTORE(offset=Op.DUP2, value=Op.DUP2) + + Op.ADD(Op.DUP2, 0x20) + Op.SWAP1 - + Op.MSIZE - + Op.ADD + + Op.POP + + Op.SWAP1 + + Op.POP + Op.PUSH1[0x0] + + Op.JUMPDEST + + Op.JUMPI( + pc=0xE49, + condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.DIV(Op.DUP4, 0x20))), + ) + + Op.MSTORE( + offset=Op.ADD(Op.DUP4, Op.MUL(0x20, Op.DUP2)), + value=Op.SLOAD(key=Op.ADD(Op.DUP5, Op.DUP1)), + ) + + Op.ADD(Op.DUP2, 0x1) + Op.SWAP1 - + Op.MSTORE - + Op.POP( - Op.CALL( - gas=Op.SUB(Op.GAS, 0x2D), - address=Op.MLOAD(offset=0x20), - value=0x0, - args_offset=Op.DUP6, - args_size=0x44, - ret_offset=Op.DUP2, - ret_size=Op.ADD(0x40, Op.MUL(0x20, Op.DUP2)), - ) + + Op.POP + + Op.JUMP(pc=0xE28) + + Op.JUMPDEST + + Op.MSTORE( + offset=Op.ADD(Op.DUP4, Op.MUL(0x20, Op.DUP2)), + value=Op.AND( + Op.SLOAD(key=Op.ADD(Op.DUP6, Op.DUP2)), + Op.SUB( + 0x0, Op.EXP(0x100, Op.SUB(0x20, Op.MOD(Op.DUP4, 0x20))) + ), + ), ) - + Op.ADD(Op.DUP2, 0x40) + + Op.DUP2 + Op.SWAP1 + Op.POP + Op.SWAP1 + Op.POP + Op.SWAP1 + Op.POP - + Op.PUSH1[0x1C] - + Op.PUSH1[0x84] + + Op.SWAP1 + + Op.POP + + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x40), value=0x20) + + Op.RETURN( + offset=Op.SUB(Op.DUP3, 0x40), + size=Op.ADD( + 0x40, Op.MUL(Op.MLOAD(offset=Op.SUB(Op.DUP3, 0x20)), 0x20) + ), + ) + + Op.POP + + Op.JUMPDEST + + Op.JUMPI(pc=0xF76, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x734FA727))) + + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) + + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) + + Op.PUSH1[0xA0] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -4663,13 +3995,16 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.ADD - + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0xAAD7D6E3) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0xC0)) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=Op.MLOAD(offset=0xE0)) - + Op.PUSH1[0x60] - + Op.PUSH1[0x1C] - + Op.PUSH2[0x14C] + + Op.MSTORE(offset=Op.DUP2, value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x11) + + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x0) + + Op.DUP1 + + Op.SWAP1 + + Op.POP + + Op.SHA3 + + Op.PUSH1[0x80] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -4677,26 +4012,16 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.ADD - + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0x5B180229) - + Op.DUP4 - + Op.ADD(0x20, Op.MUL(0x20, Op.MLOAD(offset=Op.SUB(Op.DUP2, 0x20)))) - + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0x4), value=Op.DUP4) - + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0x64), value=Op.SUB(Op.DUP3, 0x20)) - + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0xC8), value=Op.DUP1) - + Op.ADD(Op.DUP5, Op.DUP1) - + Op.SWAP4 - + Op.POP * 3 - + Op.DUP5 - + Op.ADD(0x20, Op.MUL(0x20, Op.MLOAD(offset=Op.SUB(Op.DUP2, 0x20)))) - + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0x24), value=Op.DUP4) - + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0x84), value=Op.SUB(Op.DUP3, 0x20)) - + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0xE8), value=Op.DUP1) - + Op.ADD(Op.DUP5, Op.DUP1) - + Op.SWAP4 - + Op.POP * 3 - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x44), value=Op.MLOAD(offset=0x100)) - + Op.ADD(0x4, Op.DUP2) + + Op.MSTORE(offset=Op.DUP2, value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x0) + + Op.DUP1 + + Op.SWAP1 + + Op.POP + + Op.MUL(0x20, Op.SLOAD(key=Op.SHA3)) + + Op.DUP1 + + Op.ADD(0x20, Op.DUP1) + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -4704,76 +4029,37 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.JUMPI( - pc=0x901, - condition=Op.CALL( - gas=0x1C, - address=0x4, - value=0x0, - args_offset=Op.DUP5, - args_size=0x64, - ret_offset=Op.DUP2, - ret_size=0x64, - ), - ) - + Op.INVALID - + Op.JUMPDEST - + Op.ADD(Op.DUP2, 0x64) - + Op.SWAP3 + + Op.MSTORE(offset=Op.DUP2, value=Op.DUP2) + + Op.ADD(Op.DUP2, 0x20) + + Op.SWAP1 + Op.POP - + Op.MLOAD(offset=Op.ADD(Op.DUP3, 0xC8)) - + Op.DUP1 + + Op.SWAP1 + + Op.POP + + Op.PUSH1[0x0] + + Op.JUMPDEST + Op.JUMPI( - pc=0x927, - condition=Op.CALL( - gas=Op.ADD(0x12, Op.SDIV(Op.DUP8, 0xA)), - address=0x4, - value=0x0, - args_offset=Op.MLOAD(offset=Op.ADD(Op.DUP8, 0x64)), - args_size=Op.DUP3, - ret_offset=Op.DUP6, - ret_size=Op.DUP1, - ), + pc=0xF3A, + condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.DIV(Op.DUP4, 0x20))), ) - + Op.INVALID - + Op.JUMPDEST - + Op.POP - + Op.ADD(Op.DUP5, Op.DUP1) - + Op.SWAP4 - + Op.POP * 2 - + Op.MLOAD(offset=Op.ADD(Op.DUP3, 0xE8)) - + Op.DUP1 - + Op.JUMPI( - pc=0x94E, - condition=Op.CALL( - gas=Op.ADD(0x12, Op.SDIV(Op.DUP8, 0xA)), - address=0x4, - value=0x0, - args_offset=Op.MLOAD(offset=Op.ADD(Op.DUP8, 0x84)), - args_size=Op.DUP3, - ret_offset=Op.DUP6, - ret_size=Op.DUP1, - ), + + Op.MSTORE( + offset=Op.ADD(Op.DUP4, Op.MUL(0x20, Op.DUP2)), + value=Op.SLOAD(key=Op.ADD(Op.DUP5, Op.DUP1)), ) - + Op.INVALID - + Op.JUMPDEST + + Op.ADD(Op.DUP2, 0x1) + + Op.SWAP1 + Op.POP - + Op.ADD(Op.DUP5, Op.DUP1) - + Op.SWAP4 - + Op.POP * 2 - + Op.SUB(Op.DUP4, Op.DUP1) - + Op.POP( - Op.CALL( - gas=Op.SUB(Op.GAS, 0x2D), - address=Op.MLOAD(offset=0x80), - value=0x0, - args_offset=Op.DUP5, - args_size=Op.DUP3, - ret_offset=0x440, - ret_size=0x20, - ) + + Op.JUMP(pc=0xF19) + + Op.JUMPDEST + + Op.MSTORE( + offset=Op.ADD(Op.DUP4, Op.MUL(0x20, Op.DUP2)), + value=Op.AND( + Op.SLOAD(key=Op.ADD(Op.DUP6, Op.DUP2)), + Op.SUB( + 0x0, Op.EXP(0x100, Op.SUB(0x20, Op.MOD(Op.DUP4, 0x20))) + ), + ), ) - + Op.MLOAD(offset=0x440) + + Op.DUP2 + Op.SWAP1 + Op.POP + Op.SWAP1 @@ -4782,25 +4068,19 @@ def test_block504980( + Op.POP + Op.SWAP1 + Op.POP - + Op.ADD(Op.DUP3, 0x44) - + Op.MSTORE - + Op.POP( - Op.CALL( - gas=Op.SUB(Op.GAS, 0x2D), - address=Op.MLOAD(offset=0x20), - value=0x0, - args_offset=Op.DUP4, - args_size=0x64, - ret_offset=0x460, - ret_size=0x20, - ) + + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x40), value=0x20) + + Op.RETURN( + offset=Op.SUB(Op.DUP3, 0x40), + size=Op.ADD( + 0x40, Op.MUL(Op.MLOAD(offset=Op.SUB(Op.DUP3, 0x20)), 0x20) + ), ) - + Op.MLOAD(offset=0x460) - + Op.SWAP1 - + Op.POP * 2 - + Op.PUSH1[0x60] - + Op.PUSH1[0x1C] - + Op.PUSH2[0x14C] + + Op.POP + + Op.JUMPDEST + + Op.JUMPI(pc=0x1067, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0xC67FA857))) + + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) + + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) + + Op.PUSH1[0xA0] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -4808,19 +4088,16 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.ADD - + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0x222A8663) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0xC0)) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=Op.MLOAD(offset=0xE0)) - + Op.DUP3 - + Op.ADD(0x20, Op.MUL(0x20, Op.MLOAD(offset=Op.SUB(Op.DUP2, 0x20)))) - + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0x44), value=Op.DUP4) - + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0xA4), value=Op.SUB(Op.DUP3, 0x20)) - + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0x108), value=Op.DUP1) - + Op.ADD(Op.DUP5, Op.DUP1) - + Op.SWAP4 - + Op.POP * 3 - + Op.ADD(0x4, Op.DUP2) + + Op.MSTORE(offset=Op.DUP2, value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x12) + + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x0) + + Op.DUP1 + + Op.SWAP1 + + Op.POP + + Op.SHA3 + + Op.PUSH1[0x80] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -4828,56 +4105,54 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.JUMPI( - pc=0xA07, - condition=Op.CALL( - gas=0x1C, - address=0x4, - value=0x0, - args_offset=Op.DUP5, - args_size=0x64, - ret_offset=Op.DUP2, - ret_size=0x64, - ), - ) - + Op.INVALID - + Op.JUMPDEST - + Op.ADD(Op.DUP2, 0x64) - + Op.SWAP3 + + Op.MSTORE(offset=Op.DUP2, value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x0) + + Op.DUP1 + + Op.SWAP1 + Op.POP - + Op.MLOAD(offset=Op.ADD(Op.DUP3, 0x108)) + + Op.MUL(0x20, Op.SLOAD(key=Op.SHA3)) + Op.DUP1 + + Op.ADD(0x20, Op.DUP1) + + Op.MSIZE + + Op.SWAP1 + + Op.MSIZE + + Op.ADD + + Op.PUSH1[0x0] + + Op.SWAP1 + + Op.MSTORE + + Op.MSTORE(offset=Op.DUP2, value=Op.DUP2) + + Op.ADD(Op.DUP2, 0x20) + + Op.SWAP1 + + Op.POP + + Op.SWAP1 + + Op.POP + + Op.PUSH1[0x0] + + Op.JUMPDEST + Op.JUMPI( - pc=0xA2E, - condition=Op.CALL( - gas=Op.ADD(0x12, Op.SDIV(Op.DUP8, 0xA)), - address=0x4, - value=0x0, - args_offset=Op.MLOAD(offset=Op.ADD(Op.DUP8, 0xA4)), - args_size=Op.DUP3, - ret_offset=Op.DUP6, - ret_size=Op.DUP1, - ), + pc=0x102B, + condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.DIV(Op.DUP4, 0x20))), ) - + Op.INVALID - + Op.JUMPDEST + + Op.MSTORE( + offset=Op.ADD(Op.DUP4, Op.MUL(0x20, Op.DUP2)), + value=Op.SLOAD(key=Op.ADD(Op.DUP5, Op.DUP1)), + ) + + Op.ADD(Op.DUP2, 0x1) + + Op.SWAP1 + Op.POP - + Op.ADD(Op.DUP5, Op.DUP1) - + Op.SWAP4 - + Op.POP * 2 - + Op.SUB(Op.DUP4, Op.DUP1) - + Op.POP( - Op.CALL( - gas=Op.SUB(Op.GAS, 0x2D), - address=Op.MLOAD(offset=0x20), - value=0x0, - args_offset=Op.DUP5, - args_size=Op.DUP3, - ret_offset=0x480, - ret_size=0x20, - ) + + Op.JUMP(pc=0x100A) + + Op.JUMPDEST + + Op.MSTORE( + offset=Op.ADD(Op.DUP4, Op.MUL(0x20, Op.DUP2)), + value=Op.AND( + Op.SLOAD(key=Op.ADD(Op.DUP6, Op.DUP2)), + Op.SUB( + 0x0, Op.EXP(0x100, Op.SUB(0x20, Op.MOD(Op.DUP4, 0x20))) + ), + ), ) - + Op.MLOAD(offset=0x480) + + Op.DUP2 + Op.SWAP1 + Op.POP + Op.SWAP1 @@ -4885,19 +4160,20 @@ def test_block504980( + Op.SWAP1 + Op.POP + Op.SWAP1 - + Op.POP * 2 - + Op.MSTORE(offset=0x4A0, value=0x1) - + Op.RETURN(offset=0x4A0, size=0x20) - + Op.POP * 2 + + Op.POP + + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x40), value=0x20) + + Op.RETURN( + offset=Op.SUB(Op.DUP3, 0x40), + size=Op.ADD( + 0x40, Op.MUL(Op.MLOAD(offset=Op.SUB(Op.DUP3, 0x20)), 0x20) + ), + ) + + Op.POP + Op.JUMPDEST - + Op.JUMPI(pc=0xD4B, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0xD5DC5AF1))) - + Op.MSTORE(offset=0xC0, value=Op.CALLDATALOAD(offset=0x4)) - + Op.MSTORE(offset=0xE0, value=Op.CALLDATALOAD(offset=0x24)) - + Op.MSTORE(offset=0x100, value=Op.CALLDATALOAD(offset=0x44)) - + Op.MSTORE(offset=0x120, value=Op.CALLDATALOAD(offset=0x64)) - + Op.MSTORE(offset=0x140, value=Op.CALLDATALOAD(offset=0x84)) - + Op.PUSH1[0x1C] - + Op.PUSH1[0x64] + + Op.JUMPI(pc=0x1185, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x5ED853E4))) + + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) + + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) + + Op.PUSH1[0xA0] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -4905,12 +4181,16 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.ADD - + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0xE05DCB56) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0xC0)) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=Op.MLOAD(offset=0xE0)) - + Op.ADD(Op.MLOAD(offset=0x100), 0x2) - + Op.ADD(Op.MUL(0x20, Op.DUP2), 0x40) + + Op.MSTORE(offset=Op.DUP2, value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x13) + + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x0) + + Op.DUP1 + + Op.SWAP1 + + Op.POP + + Op.SHA3 + + Op.PUSH1[0x80] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -4918,26 +4198,15 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.POP( - Op.CALL( - gas=Op.SUB(Op.GAS, 0x2D), - address=Op.MLOAD(offset=0x20), - value=0x0, - args_offset=Op.DUP6, - args_size=0x44, - ret_offset=Op.DUP2, - ret_size=Op.ADD(0x40, Op.MUL(0x20, Op.DUP2)), - ) - ) - + Op.ADD(Op.DUP2, 0x40) - + Op.SWAP1 - + Op.POP - + Op.SWAP1 - + Op.POP + + Op.MSTORE(offset=Op.DUP2, value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x0) + + Op.DUP1 + Op.SWAP1 + Op.POP - + Op.PUSH1[0x1C] - + Op.PUSH1[0x64] + + Op.SLOAD(key=Op.SHA3) + + Op.PUSH1[0x80] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -4945,12 +4214,17 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.ADD - + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0x2C5A40D5) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0xC0)) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=Op.MLOAD(offset=0xE0)) - + Op.MLOAD(offset=0x140) - + Op.ADD(Op.MUL(0x20, Op.DUP2), 0x40) + + Op.MSTORE(offset=Op.DUP2, value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x5) + + Op.DUP1 + + Op.SWAP1 + + Op.POP + + Op.SLOAD(key=Op.SHA3) + + Op.MUL(0x20, Op.SDIV) + + Op.DUP1 + + Op.ADD(0x20, Op.DUP1) + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -4958,27 +4232,58 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.POP( - Op.CALL( - gas=Op.SUB(Op.GAS, 0x2D), - address=Op.MLOAD(offset=0x20), - value=0x0, - args_offset=Op.DUP6, - args_size=0x44, - ret_offset=Op.DUP2, - ret_size=Op.ADD(0x40, Op.MUL(0x20, Op.DUP2)), - ) + + Op.MSTORE(offset=Op.DUP2, value=Op.DUP2) + + Op.ADD(Op.DUP2, 0x20) + + Op.SWAP1 + + Op.POP + + Op.SWAP1 + + Op.POP + + Op.PUSH1[0x0] + + Op.JUMPDEST + + Op.JUMPI( + pc=0x1149, + condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.DIV(Op.DUP4, 0x20))), ) - + Op.ADD(Op.DUP2, 0x40) + + Op.MSTORE( + offset=Op.ADD(Op.DUP4, Op.MUL(0x20, Op.DUP2)), + value=Op.SLOAD(key=Op.ADD(Op.DUP5, Op.DUP1)), + ) + + Op.ADD(Op.DUP2, 0x1) + + Op.SWAP1 + + Op.POP + + Op.JUMP(pc=0x1128) + + Op.JUMPDEST + + Op.MSTORE( + offset=Op.ADD(Op.DUP4, Op.MUL(0x20, Op.DUP2)), + value=Op.AND( + Op.SLOAD(key=Op.ADD(Op.DUP6, Op.DUP2)), + Op.SUB( + 0x0, Op.EXP(0x100, Op.SUB(0x20, Op.MOD(Op.DUP4, 0x20))) + ), + ), + ) + + Op.DUP2 + Op.SWAP1 + Op.POP + Op.SWAP1 + Op.POP + Op.SWAP1 + Op.POP - + Op.PUSH1[0x80] - + Op.PUSH1[0x1C] - + Op.PUSH2[0x1AC] + + Op.SWAP1 + + Op.POP + + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x40), value=0x20) + + Op.RETURN( + offset=Op.SUB(Op.DUP3, 0x40), + size=Op.ADD( + 0x40, Op.MUL(Op.MLOAD(offset=Op.SUB(Op.DUP3, 0x20)), 0x20) + ), + ) + + Op.POP + + Op.JUMPDEST + + Op.JUMPI(pc=0x12A3, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0xB86F5125))) + + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) + + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) + + Op.PUSH1[0xA0] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -4986,27 +4291,16 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.ADD - + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0xF4CA7DC4) - + Op.DUP4 - + Op.ADD(0x20, Op.MUL(0x20, Op.MLOAD(offset=Op.SUB(Op.DUP2, 0x20)))) - + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0x4), value=Op.DUP4) - + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0x84), value=Op.SUB(Op.DUP3, 0x20)) - + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0x108), value=Op.DUP1) - + Op.ADD(Op.DUP5, Op.DUP1) - + Op.SWAP4 - + Op.POP * 3 - + Op.DUP3 - + Op.ADD(0x20, Op.MUL(0x20, Op.MLOAD(offset=Op.SUB(Op.DUP2, 0x20)))) - + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0x24), value=Op.DUP4) - + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0xA4), value=Op.SUB(Op.DUP3, 0x20)) - + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0x128), value=Op.DUP1) - + Op.ADD(Op.DUP5, Op.DUP1) - + Op.SWAP4 - + Op.POP * 3 - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x44), value=Op.MLOAD(offset=0x120)) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x64), value=Op.MLOAD(offset=0x100)) - + Op.ADD(0x4, Op.DUP2) + + Op.MSTORE(offset=Op.DUP2, value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x14) + + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x0) + + Op.DUP1 + + Op.SWAP1 + + Op.POP + + Op.SHA3 + + Op.PUSH1[0x80] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -5014,66 +4308,33 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.JUMPI( - pc=0xBE7, - condition=Op.CALL( - gas=0x1F, - address=0x4, - value=0x0, - args_offset=Op.DUP5, - args_size=0x84, - ret_offset=Op.DUP2, - ret_size=0x84, - ), - ) - + Op.INVALID - + Op.JUMPDEST - + Op.ADD(Op.DUP2, 0x84) - + Op.SWAP3 - + Op.POP - + Op.MLOAD(offset=Op.ADD(Op.DUP3, 0x108)) + + Op.MSTORE(offset=Op.DUP2, value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x0) + Op.DUP1 - + Op.JUMPI( - pc=0xC0E, - condition=Op.CALL( - gas=Op.ADD(0x12, Op.SDIV(Op.DUP8, 0xA)), - address=0x4, - value=0x0, - args_offset=Op.MLOAD(offset=Op.ADD(Op.DUP8, 0x84)), - args_size=Op.DUP3, - ret_offset=Op.DUP6, - ret_size=Op.DUP1, - ), - ) - + Op.INVALID - + Op.JUMPDEST + + Op.SWAP1 + Op.POP - + Op.ADD(Op.DUP5, Op.DUP1) - + Op.SWAP4 - + Op.POP * 2 - + Op.MLOAD(offset=Op.ADD(Op.DUP3, 0x128)) + + Op.SLOAD(key=Op.SHA3) + + Op.PUSH1[0x80] * 2 + + Op.MSIZE + + Op.SWAP1 + + Op.MSIZE + + Op.ADD + + Op.PUSH1[0x0] + + Op.SWAP1 + + Op.MSTORE + + Op.MSTORE(offset=Op.DUP2, value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x5) + Op.DUP1 - + Op.JUMPI( - pc=0xC36, - condition=Op.CALL( - gas=Op.ADD(0x12, Op.SDIV(Op.DUP8, 0xA)), - address=0x4, - value=0x0, - args_offset=Op.MLOAD(offset=Op.ADD(Op.DUP8, 0xA4)), - args_size=Op.DUP3, - ret_offset=Op.DUP6, - ret_size=Op.DUP1, - ), - ) - + Op.INVALID - + Op.JUMPDEST + + Op.SWAP1 + Op.POP - + Op.ADD(Op.DUP5, Op.DUP1) - + Op.SWAP4 - + Op.POP * 2 - + Op.SUB(Op.DUP4, Op.DUP1) - + Op.MLOAD(offset=0x140) - + Op.ADD(Op.MUL(0x20, Op.DUP2), 0x40) + + Op.SLOAD(key=Op.SHA3) + + Op.MUL(0x20, Op.SDIV) + + Op.DUP1 + + Op.ADD(0x20, Op.DUP1) + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -5081,24 +4342,37 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.POP( - Op.CALL( - gas=Op.SUB(Op.GAS, 0x2D), - address=Op.MLOAD(offset=0x80), - value=0x0, - args_offset=Op.DUP7, - args_size=Op.DUP5, - ret_offset=Op.DUP2, - ret_size=Op.ADD(0x40, Op.MUL(0x20, Op.DUP2)), - ) - ) - + Op.ADD(Op.DUP2, 0x40) + + Op.MSTORE(offset=Op.DUP2, value=Op.DUP2) + + Op.ADD(Op.DUP2, 0x20) + Op.SWAP1 + Op.POP + Op.SWAP1 + Op.POP + + Op.PUSH1[0x0] + + Op.JUMPDEST + + Op.JUMPI( + pc=0x1267, + condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.DIV(Op.DUP4, 0x20))), + ) + + Op.MSTORE( + offset=Op.ADD(Op.DUP4, Op.MUL(0x20, Op.DUP2)), + value=Op.SLOAD(key=Op.ADD(Op.DUP5, Op.DUP1)), + ) + + Op.ADD(Op.DUP2, 0x1) + Op.SWAP1 + Op.POP + + Op.JUMP(pc=0x1246) + + Op.JUMPDEST + + Op.MSTORE( + offset=Op.ADD(Op.DUP4, Op.MUL(0x20, Op.DUP2)), + value=Op.AND( + Op.SLOAD(key=Op.ADD(Op.DUP6, Op.DUP2)), + Op.SUB( + 0x0, Op.EXP(0x100, Op.SUB(0x20, Op.MOD(Op.DUP4, 0x20))) + ), + ), + ) + + Op.DUP2 + Op.SWAP1 + Op.POP + Op.SWAP1 @@ -5107,9 +4381,19 @@ def test_block504980( + Op.POP + Op.SWAP1 + Op.POP - + Op.PUSH1[0x60] - + Op.PUSH1[0x1C] - + Op.PUSH2[0x14C] + + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x40), value=0x20) + + Op.RETURN( + offset=Op.SUB(Op.DUP3, 0x40), + size=Op.ADD( + 0x40, Op.MUL(Op.MLOAD(offset=Op.SUB(Op.DUP3, 0x20)), 0x20) + ), + ) + + Op.POP + + Op.JUMPDEST + + Op.JUMPI(pc=0x1394, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0xBC3D7D85))) + + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) + + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) + + Op.PUSH1[0xA0] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -5117,19 +4401,33 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE + + Op.MSTORE(offset=Op.DUP2, value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x15) + + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x0) + + Op.DUP1 + + Op.SWAP1 + + Op.POP + + Op.SHA3 + + Op.PUSH1[0x80] * 2 + + Op.MSIZE + + Op.SWAP1 + + Op.MSIZE + Op.ADD - + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0xB39E1FAA) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0xC0)) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=Op.MLOAD(offset=0xE0)) - + Op.DUP3 - + Op.ADD(0x20, Op.MUL(0x20, Op.MLOAD(offset=Op.SUB(Op.DUP2, 0x20)))) - + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0x44), value=Op.DUP4) - + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0xA4), value=Op.SUB(Op.DUP3, 0x20)) - + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0x108), value=Op.DUP1) - + Op.ADD(Op.DUP5, Op.DUP1) - + Op.SWAP4 - + Op.POP * 3 - + Op.ADD(0x4, Op.DUP2) + + Op.PUSH1[0x0] + + Op.SWAP1 + + Op.MSTORE + + Op.MSTORE(offset=Op.DUP2, value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x0) + + Op.DUP1 + + Op.SWAP1 + + Op.POP + + Op.MUL(0x20, Op.SLOAD(key=Op.SHA3)) + + Op.DUP1 + + Op.ADD(0x20, Op.DUP1) + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -5137,56 +4435,37 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.JUMPI( - pc=0xCEC, - condition=Op.CALL( - gas=0x1C, - address=0x4, - value=0x0, - args_offset=Op.DUP5, - args_size=0x64, - ret_offset=Op.DUP2, - ret_size=0x64, - ), - ) - + Op.INVALID - + Op.JUMPDEST - + Op.ADD(Op.DUP2, 0x64) - + Op.SWAP3 + + Op.MSTORE(offset=Op.DUP2, value=Op.DUP2) + + Op.ADD(Op.DUP2, 0x20) + + Op.SWAP1 + Op.POP - + Op.MLOAD(offset=Op.ADD(Op.DUP3, 0x108)) - + Op.DUP1 + + Op.SWAP1 + + Op.POP + + Op.PUSH1[0x0] + + Op.JUMPDEST + Op.JUMPI( - pc=0xD13, - condition=Op.CALL( - gas=Op.ADD(0x12, Op.SDIV(Op.DUP8, 0xA)), - address=0x4, - value=0x0, - args_offset=Op.MLOAD(offset=Op.ADD(Op.DUP8, 0xA4)), - args_size=Op.DUP3, - ret_offset=Op.DUP6, - ret_size=Op.DUP1, - ), + pc=0x1358, + condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.DIV(Op.DUP4, 0x20))), ) - + Op.INVALID - + Op.JUMPDEST + + Op.MSTORE( + offset=Op.ADD(Op.DUP4, Op.MUL(0x20, Op.DUP2)), + value=Op.SLOAD(key=Op.ADD(Op.DUP5, Op.DUP1)), + ) + + Op.ADD(Op.DUP2, 0x1) + + Op.SWAP1 + Op.POP - + Op.ADD(Op.DUP5, Op.DUP1) - + Op.SWAP4 - + Op.POP * 2 - + Op.SUB(Op.DUP4, Op.DUP1) - + Op.POP( - Op.CALL( - gas=Op.SUB(Op.GAS, 0x2D), - address=Op.MLOAD(offset=0x20), - value=0x0, - args_offset=Op.DUP5, - args_size=Op.DUP3, - ret_offset=0x4C0, - ret_size=0x20, - ) + + Op.JUMP(pc=0x1337) + + Op.JUMPDEST + + Op.MSTORE( + offset=Op.ADD(Op.DUP4, Op.MUL(0x20, Op.DUP2)), + value=Op.AND( + Op.SLOAD(key=Op.ADD(Op.DUP6, Op.DUP2)), + Op.SUB( + 0x0, Op.EXP(0x100, Op.SUB(0x20, Op.MOD(Op.DUP4, 0x20))) + ), + ), ) - + Op.MLOAD(offset=0x4C0) + + Op.DUP2 + Op.SWAP1 + Op.POP + Op.SWAP1 @@ -5194,19 +4473,22 @@ def test_block504980( + Op.SWAP1 + Op.POP + Op.SWAP1 - + Op.POP * 2 - + Op.MSTORE(offset=0x4E0, value=0x1) - + Op.RETURN(offset=0x4E0, size=0x20) - + Op.POP * 2 + + Op.POP + + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x40), value=0x20) + + Op.RETURN( + offset=Op.SUB(Op.DUP3, 0x40), + size=Op.ADD( + 0x40, Op.MUL(Op.MLOAD(offset=Op.SUB(Op.DUP3, 0x20)), 0x20) + ), + ) + + Op.POP + Op.JUMPDEST - + Op.JUMPI(pc=0x114C, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x939AA8C))) - + Op.MSTORE(offset=0xC0, value=Op.CALLDATALOAD(offset=0x4)) - + Op.MSTORE(offset=0xE0, value=Op.CALLDATALOAD(offset=0x24)) - + Op.MSTORE(offset=0x100, value=Op.CALLDATALOAD(offset=0x44)) - + Op.MSTORE(offset=0x120, value=Op.CALLDATALOAD(offset=0x64)) - + Op.MSTORE(offset=0x140, value=Op.CALLDATALOAD(offset=0x84)) - + Op.PUSH1[0x1C] - + Op.PUSH1[0x64] + + Op.JUMPI(pc=0x1481, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0xA2302F2F))) + + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) + + Op.MSTORE(offset=0x1680, value=Op.CALLDATALOAD(offset=0x24)) + + Op.MSTORE(offset=0x16A0, value=Op.CALLDATALOAD(offset=0x44)) + + Op.MLOAD(offset=0x16A0) + + Op.PUSH1[0xA0] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -5214,12 +4496,13 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.ADD - + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0xE05DCB56) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0xC0)) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=Op.MLOAD(offset=0xE0)) - + Op.ADD(Op.MLOAD(offset=0x100), 0x2) - + Op.ADD(Op.MUL(0x20, Op.DUP2), 0x40) + + Op.MSTORE(offset=Op.DUP2, value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) + + Op.MSTORE( + offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x1680) + ) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x1) + + Op.PUSH1[0x80] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -5227,26 +4510,23 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.POP( - Op.CALL( - gas=Op.SUB(Op.GAS, 0x2D), - address=Op.MLOAD(offset=0x20), - value=0x0, - args_offset=Op.DUP6, - args_size=0x44, - ret_offset=Op.DUP2, - ret_size=Op.ADD(0x40, Op.MUL(0x20, Op.DUP2)), - ) + + Op.MSTORE(offset=Op.DUP2, value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) + + Op.MSTORE( + offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x1680) ) - + Op.ADD(Op.DUP2, 0x40) - + Op.SWAP1 - + Op.POP + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x0) + + Op.DUP1 + Op.SWAP1 + Op.POP + + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=Op.SLOAD(key=Op.SHA3)) + + Op.DUP1 + Op.SWAP1 + Op.POP - + Op.PUSH1[0x1C] - + Op.PUSH1[0x64] + + Op.SHA3 + + Op.SSTORE + + Op.PUSH1[0x1] + + Op.PUSH1[0x80] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -5254,12 +4534,18 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE + + Op.MSTORE(offset=Op.DUP2, value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) + + Op.MSTORE( + offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x1680) + ) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x0) + + Op.DUP1 + + Op.SWAP1 + + Op.POP + + Op.SLOAD(key=Op.SHA3) + Op.ADD - + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0x7DC12195) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0xC0)) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=Op.MLOAD(offset=0xE0)) - + Op.MLOAD(offset=0x140) - + Op.ADD(Op.MUL(0x20, Op.DUP2), 0x40) + + Op.PUSH1[0x80] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -5267,26 +4553,47 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.POP( - Op.CALL( - gas=Op.SUB(Op.GAS, 0x2D), - address=Op.MLOAD(offset=0x20), - value=0x0, - args_offset=Op.DUP6, - args_size=0x44, - ret_offset=Op.DUP2, - ret_size=Op.ADD(0x40, Op.MUL(0x20, Op.DUP2)), - ) + + Op.MSTORE(offset=Op.DUP2, value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) + + Op.MSTORE( + offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x1680) ) - + Op.ADD(Op.DUP2, 0x40) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x0) + + Op.DUP1 + Op.SWAP1 + Op.POP + + Op.SHA3 + + Op.SSTORE + + Op.MSTORE(offset=0x1740, value=0x1) + + Op.RETURN(offset=0x1740, size=0x20) + + Op.JUMPDEST + + Op.JUMPI(pc=0x14DD, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x58CA2BC))) + + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) + + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) + + Op.MSTORE(offset=0x1760, value=Op.CALLDATALOAD(offset=0x44)) + + Op.MLOAD(offset=0x1760) + + Op.PUSH1[0x80] * 2 + + Op.MSIZE + Op.SWAP1 - + Op.POP + + Op.MSIZE + + Op.ADD + + Op.PUSH1[0x0] + + Op.SWAP1 + + Op.MSTORE + + Op.MSTORE(offset=Op.DUP2, value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x2) + + Op.DUP1 + Op.SWAP1 + Op.POP - + Op.PUSH1[0x1C] - + Op.PUSH1[0x64] + + Op.SHA3 + + Op.SSTORE + + Op.MSTORE(offset=0x17A0, value=0x1) + + Op.RETURN(offset=0x17A0, size=0x20) + + Op.JUMPDEST + + Op.JUMPI(pc=0x1617, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x5D3B965B))) + + Op.CALLDATASIZE + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -5294,26 +4601,19 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.ADD - + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0x586B5BE0) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0xC0)) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=Op.MLOAD(offset=0xE0)) - + Op.POP( - Op.CALL( - gas=Op.SUB(Op.GAS, 0x2D), - address=Op.MLOAD(offset=0x20), - value=0x0, - args_offset=Op.DUP4, - args_size=0x44, - ret_offset=0x500, - ret_size=0x20, - ) + + Op.CALLDATACOPY( + dest_offset=Op.DUP3, offset=0x4, size=Op.CALLDATASIZE ) - + Op.MLOAD(offset=0x500) - + Op.SWAP1 + + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) + + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) + + Op.MSTORE(offset=0x280, value=Op.CALLDATALOAD(offset=0x44)) + + Op.MSTORE( + offset=0x17E0, + value=Op.ADD(Op.ADD(Op.DUP3, 0x20), Op.CALLDATALOAD(offset=0x64)), + ) + + Op.MSTORE(offset=0x1800, value=Op.CALLDATALOAD(offset=0x84)) + Op.POP - + Op.PUSH1[0x1C] - + Op.PUSH1[0x64] + + Op.PUSH1[0xC0] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -5321,40 +4621,48 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.ADD - + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0xEB8AF5AA) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0xC0)) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=Op.MLOAD(offset=0xE0)) - + Op.MLOAD(offset=0x120) - + Op.ADD(Op.MUL(0x20, Op.DUP2), 0x40) - + Op.MSIZE + + Op.MSTORE(offset=Op.DUP2, value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x3) + + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=Op.MLOAD(offset=0x280)) + + Op.MSTORE(offset=Op.ADD(0xA0, Op.DUP2), value=0x0) + + Op.DUP1 + Op.SWAP1 - + Op.MSIZE - + Op.ADD + + Op.POP + + Op.SHA3 + + Op.MUL(0x20, Op.MLOAD(offset=Op.SUB(Op.MLOAD(offset=0x17E0), 0x20))) + + Op.DIV(Op.DUP2, 0x20) + Op.PUSH1[0x0] - + Op.SWAP1 - + Op.MSTORE - + Op.POP( - Op.CALL( - gas=Op.SUB(Op.GAS, 0x2D), - address=Op.MLOAD(offset=0x20), - value=0x0, - args_offset=Op.DUP6, - args_size=0x44, - ret_offset=Op.DUP2, - ret_size=Op.ADD(0x40, Op.MUL(0x20, Op.DUP2)), - ) + + Op.JUMPDEST + + Op.JUMPI(pc=0x158C, condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.DUP2))) + + Op.SSTORE( + key=Op.ADD(Op.DUP3, Op.DUP5), + value=Op.MLOAD( + offset=Op.ADD(Op.MLOAD(offset=0x17E0), Op.MUL(0x20, Op.DUP1)) + ), ) - + Op.ADD(Op.DUP2, 0x40) - + Op.SWAP1 - + Op.POP - + Op.SWAP1 - + Op.POP + + Op.ADD(Op.DUP2, 0x1) + Op.SWAP1 + Op.POP - + Op.PUSH1[0xC0] - + Op.PUSH1[0x1C] - + Op.PUSH2[0x26C] + + Op.JUMP(pc=0x156B) + + Op.JUMPDEST + + Op.SSTORE( + key=Op.ADD(Op.DUP3, Op.DUP5), + value=Op.AND( + Op.MLOAD( + offset=Op.ADD( + Op.MLOAD(offset=0x17E0), Op.MUL(0x20, Op.DUP2) + ) + ), + Op.SUB( + 0x0, Op.EXP(0x100, Op.SUB(0x20, Op.MOD(Op.DUP4, 0x20))) + ), + ), + ) + + Op.POP * 4 + + Op.MLOAD(offset=0x1800) + + Op.PUSH1[0x80] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -5362,36 +4670,16 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE + + Op.MSTORE(offset=Op.DUP2, value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x2) + + Op.DUP1 + + Op.SWAP1 + + Op.POP + + Op.SLOAD(key=Op.SHA3) + Op.ADD - + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0x232B2734) - + Op.DUP3 - + Op.ADD(0x20, Op.MUL(0x20, Op.MLOAD(offset=Op.SUB(Op.DUP2, 0x20)))) - + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0x4), value=Op.DUP4) - + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0xC4), value=Op.SUB(Op.DUP3, 0x20)) - + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0x188), value=Op.DUP1) - + Op.ADD(Op.DUP5, Op.DUP1) - + Op.SWAP4 - + Op.POP * 3 - + Op.DUP6 - + Op.ADD(0x20, Op.MUL(0x20, Op.MLOAD(offset=Op.SUB(Op.DUP2, 0x20)))) - + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0x24), value=Op.DUP4) - + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0xE4), value=Op.SUB(Op.DUP3, 0x20)) - + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0x1A8), value=Op.DUP1) - + Op.ADD(Op.DUP5, Op.DUP1) - + Op.SWAP4 - + Op.POP * 3 - + Op.DUP5 - + Op.ADD(0x20, Op.MUL(0x20, Op.MLOAD(offset=Op.SUB(Op.DUP2, 0x20)))) - + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0x44), value=Op.DUP4) - + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0x104), value=Op.SUB(Op.DUP3, 0x20)) - + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0x1C8), value=Op.DUP1) - + Op.ADD(Op.DUP5, Op.DUP1) - + Op.SWAP4 - + Op.POP * 3 - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x64), value=Op.DUP4) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x84), value=Op.MLOAD(offset=0x120)) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0xA4), value=Op.MLOAD(offset=0x100)) - + Op.ADD(0x4, Op.DUP2) + + Op.PUSH1[0x80] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -5399,86 +4687,24 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.JUMPI( - pc=0xF96, - condition=Op.CALL( - gas=0x25, - address=0x4, - value=0x0, - args_offset=Op.DUP5, - args_size=0xC4, - ret_offset=Op.DUP2, - ret_size=0xC4, - ), - ) - + Op.INVALID - + Op.JUMPDEST - + Op.ADD(Op.DUP2, 0xC4) - + Op.SWAP3 - + Op.POP - + Op.MLOAD(offset=Op.ADD(Op.DUP3, 0x188)) - + Op.DUP1 - + Op.JUMPI( - pc=0xFBD, - condition=Op.CALL( - gas=Op.ADD(0x12, Op.SDIV(Op.DUP8, 0xA)), - address=0x4, - value=0x0, - args_offset=Op.MLOAD(offset=Op.ADD(Op.DUP8, 0xC4)), - args_size=Op.DUP3, - ret_offset=Op.DUP6, - ret_size=Op.DUP1, - ), - ) - + Op.INVALID - + Op.JUMPDEST - + Op.POP - + Op.ADD(Op.DUP5, Op.DUP1) - + Op.SWAP4 - + Op.POP * 2 - + Op.MLOAD(offset=Op.ADD(Op.DUP3, 0x1A8)) + + Op.MSTORE(offset=Op.DUP2, value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x2) + Op.DUP1 - + Op.JUMPI( - pc=0xFE5, - condition=Op.CALL( - gas=Op.ADD(0x12, Op.SDIV(Op.DUP8, 0xA)), - address=0x4, - value=0x0, - args_offset=Op.MLOAD(offset=Op.ADD(Op.DUP8, 0xE4)), - args_size=Op.DUP3, - ret_offset=Op.DUP6, - ret_size=Op.DUP1, - ), - ) - + Op.INVALID - + Op.JUMPDEST + + Op.SWAP1 + Op.POP - + Op.ADD(Op.DUP5, Op.DUP1) - + Op.SWAP4 - + Op.POP * 2 - + Op.MLOAD(offset=Op.ADD(Op.DUP3, 0x1C8)) - + Op.DUP1 - + Op.JUMPI( - pc=0x100E, - condition=Op.CALL( - gas=Op.ADD(0x12, Op.SDIV(Op.DUP8, 0xA)), - address=0x4, - value=0x0, - args_offset=Op.MLOAD(offset=Op.ADD(Op.DUP8, 0x104)), - args_size=Op.DUP3, - ret_offset=Op.DUP6, - ret_size=Op.DUP1, - ), - ) - + Op.INVALID + + Op.SHA3 + + Op.SSTORE + + Op.MSTORE(offset=0x1900, value=0x1) + + Op.RETURN(offset=0x1900, size=0x20) + Op.JUMPDEST - + Op.POP - + Op.ADD(Op.DUP5, Op.DUP1) - + Op.SWAP4 - + Op.POP * 2 - + Op.SUB(Op.DUP4, Op.DUP1) - + Op.MLOAD(offset=0x120) - + Op.ADD(Op.MUL(0x20, Op.DUP2), 0x40) + + Op.JUMPI(pc=0x1673, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0xB0E14F0F))) + + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) + + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) + + Op.MSTORE(offset=0x1920, value=Op.CALLDATALOAD(offset=0x44)) + + Op.MLOAD(offset=0x1920) + + Op.PUSH1[0x80] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -5486,35 +4712,20 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.POP( - Op.CALL( - gas=Op.SUB(Op.GAS, 0x2D), - address=Op.MLOAD(offset=0x80), - value=0x0, - args_offset=Op.DUP7, - args_size=Op.DUP5, - ret_offset=Op.DUP2, - ret_size=Op.ADD(0x40, Op.MUL(0x20, Op.DUP2)), - ) - ) - + Op.ADD(Op.DUP2, 0x40) - + Op.SWAP1 - + Op.POP - + Op.SWAP1 - + Op.POP - + Op.SWAP1 - + Op.POP - + Op.SWAP1 - + Op.POP - + Op.SWAP1 - + Op.POP - + Op.SWAP1 - + Op.POP + + Op.MSTORE(offset=Op.DUP2, value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x5) + + Op.DUP1 + Op.SWAP1 + Op.POP - + Op.PUSH1[0x60] - + Op.PUSH1[0x1C] - + Op.PUSH2[0x14C] + + Op.SHA3 + + Op.SSTORE + + Op.MSTORE(offset=0x1960, value=0x1) + + Op.RETURN(offset=0x1960, size=0x20) + + Op.JUMPDEST + + Op.JUMPI(pc=0x1739, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x6ACCCDBC))) + + Op.CALLDATASIZE + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -5522,19 +4733,17 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.ADD - + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0x1112B27) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0xC0)) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=Op.MLOAD(offset=0xE0)) - + Op.DUP3 - + Op.ADD(0x20, Op.MUL(0x20, Op.MLOAD(offset=Op.SUB(Op.DUP2, 0x20)))) - + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0x44), value=Op.DUP4) - + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0xA4), value=Op.SUB(Op.DUP3, 0x20)) - + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0x108), value=Op.DUP1) - + Op.ADD(Op.DUP5, Op.DUP1) - + Op.SWAP4 - + Op.POP * 3 - + Op.ADD(0x4, Op.DUP2) + + Op.CALLDATACOPY( + dest_offset=Op.DUP3, offset=0x4, size=Op.CALLDATASIZE + ) + + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) + + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) + + Op.MSTORE( + offset=0x1980, + value=Op.ADD(Op.ADD(Op.DUP3, 0x20), Op.CALLDATALOAD(offset=0x44)), + ) + + Op.POP + + Op.PUSH1[0xA0] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -5542,137 +4751,68 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.JUMPI( - pc=0x10C4, - condition=Op.CALL( - gas=0x1C, - address=0x4, - value=0x0, - args_offset=Op.DUP5, - args_size=0x64, - ret_offset=Op.DUP2, - ret_size=0x64, - ), - ) - + Op.INVALID - + Op.JUMPDEST - + Op.ADD(Op.DUP2, 0x64) - + Op.SWAP3 - + Op.POP - + Op.MLOAD(offset=Op.ADD(Op.DUP3, 0x108)) + + Op.MSTORE(offset=Op.DUP2, value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x6) + + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x0) + Op.DUP1 - + Op.JUMPI( - pc=0x10EB, - condition=Op.CALL( - gas=Op.ADD(0x12, Op.SDIV(Op.DUP8, 0xA)), - address=0x4, - value=0x0, - args_offset=Op.MLOAD(offset=Op.ADD(Op.DUP8, 0xA4)), - args_size=Op.DUP3, - ret_offset=Op.DUP6, - ret_size=Op.DUP1, - ), - ) - + Op.INVALID - + Op.JUMPDEST - + Op.POP - + Op.ADD(Op.DUP5, Op.DUP1) - + Op.SWAP4 - + Op.POP * 2 - + Op.SUB(Op.DUP4, Op.DUP1) - + Op.POP( - Op.CALL( - gas=Op.SUB(Op.GAS, 0x2D), - address=Op.MLOAD(offset=0x20), - value=0x0, - args_offset=Op.DUP5, - args_size=Op.DUP3, - ret_offset=0x580, - ret_size=0x20, - ) - ) - + Op.MLOAD(offset=0x580) - + Op.SWAP1 - + Op.POP + Op.SWAP1 + Op.POP + + Op.SHA3 + + Op.MUL(0x20, Op.MLOAD(offset=Op.SUB(Op.MLOAD(offset=0x1980), 0x20))) + + Op.DIV(Op.DUP2, 0x20) + + Op.PUSH1[0x0] + + Op.JUMPDEST + + Op.JUMPI(pc=0x170B, condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.DUP2))) + + Op.SSTORE( + key=Op.ADD(Op.DUP3, Op.DUP5), + value=Op.MLOAD( + offset=Op.ADD(Op.MLOAD(offset=0x1980), Op.MUL(0x20, Op.DUP1)) + ), + ) + + Op.ADD(Op.DUP2, 0x1) + Op.SWAP1 + Op.POP - + Op.SWAP1 - + Op.POP * 2 - + Op.JUMPI( - pc=0x113A, - condition=Op.ISZERO( - Op.EQ( - Op.MLOAD( - offset=Op.ADD( - Op.DUP6, - Op.MUL(0x20, Op.ADD(Op.MLOAD(offset=0x100), 0x1)), - ) - ), - 0x0, - ) + + Op.JUMP(pc=0x16EA) + + Op.JUMPDEST + + Op.SSTORE( + key=Op.ADD(Op.DUP3, Op.DUP5), + value=Op.AND( + Op.MLOAD( + offset=Op.ADD( + Op.MLOAD(offset=0x1980), Op.MUL(0x20, Op.DUP2) + ) + ), + Op.SUB( + 0x0, Op.EXP(0x100, Op.SUB(0x20, Op.MOD(Op.DUP4, 0x20))) + ), ), ) - + Op.MSTORE(offset=0x5A0, value=0x0) - + Op.RETURN(offset=0x5A0, size=0x20) - + Op.JUMP(pc=0x1147) - + Op.JUMPDEST - + Op.MSTORE(offset=0x5C0, value=0x1) - + Op.RETURN(offset=0x5C0, size=0x20) - + Op.JUMPDEST + Op.POP * 4 + + Op.MSTORE(offset=0x1A40, value=0x1) + + Op.RETURN(offset=0x1A40, size=0x20) + Op.JUMPDEST - + Op.POP, - nonce=0, - address=Address(0x9761FECF88590592CF05CE545504D376D1693AB3), # noqa: E501 - ) - pre[sender] = Account(balance=0xD8D726B7177A800000) - # Source: raw - # 0x600061075f537c010000000000000000000000000000000000000000000000000000000060003504731e147037f0a63df228fe6e7aef730f1ea31c8ce3602052730ea65418d7bf32680f55572c943a94b59080499860405273e509e3a93beb1eba72f8cb8d25f93a85e2d54afb60605273c9ae5868651bf7b7db6e360217db49ce4e69c07e60805273142a6927cf0060133187ba8a8e74d641438f0c1c60a05273b163e767e4c1ba5ae88b2ee7594f3a3fec2bb09660c05273ba7b277319128ef4c22635534d0f61dffdaa13ab60e052739761fecf88590592cf05ce545504d376d1693ab36101005273f70bbc50f1468cecae0761ef09386a87c1c696ea6101205273a89d22f049aaa5bbfb5f1a1939fff3ae7a26ae746101405273174827f7e53e8ce13b047adcac0eb3f2cb0c3285610160526336a560bd811415610a88576004356101a052601c60445990590160009052016327138bfb601c8203526101a051600482015260206101e0602483600060a051602d5a03f1506101e05190501515610195576001600003610200526020610200f35b601c6044599059016000905201637a66d7ca601c8203526101a051600482015260206102206024836000608051602d5a03f150610220519050601c606459905901600090520163cc1c944e601c8203526101a05160048201528160248201526020610260604483600061028051602d5a03f150610260519050601c60445990590160009052016380b5e7bd601c8203526101a051600482015260206102a06024836000606051602d5a03f1506102a0519050808202601c60445990590160009052016318633576601c8203526101a051600482015260206103006024836000608051602d5a03f150610300519050600981141561036d57601c60c459905901600090520163ac44d71e601c8203526101a0516004820152856024820152846044820152836064820152826084820152602061036060a483600061016051602d5a03f15061036051905050601c6064599059016000905201637265802d601c8203526101a05160048201526000602482015260206103806044836000608051602d5a03f15061038051905050601c604459905901600090520163c5476efe601c8203526101a051600482015260206103a06024836000608051602d5a03f1506103a051905050600185016103c05260206103c0f3610a3a565b60008114156103cd57601c60c459905901600090520163ef72638a601c8203526101a051600482015285602482015284604482015283606482015282608482015260206103e060a483600060c051602d5a03f1506103e051905050610a39565b600181141561042d57601c60c459905901600090520163a63e976c601c8203526101a0516004820152856024820152846044820152836064820152826084820152602061040060a483600060e051602d5a03f15061040051905050610a38565b600281141561048d57601c60c459905901600090520163533ea0ed601c8203526101a0516004820152856024820152846044820152836064820152826084820152602061042060a483600060e051602d5a03f15061042051905050610a37565b600381141561085057601c606459905901600090520163e05dcb56601c8203526101a0516004820152856024820152600285016040816020020159905901600090528160200260400181604485600061028051602d5a03f15060408101905090509050601c6044599059016000905201633d905045601c8203526101a051600482015260206104806024836000608051602d5a03f150610480519050600481141561063357601c60c4599059016000905201630939aa8c601c8203526101a051600482015287602482015286604482015285606482015284608482015260206104e060a483600061010051602d5a03f1506104e05190506104c052601c606459905901600090520163c286273a601c8203526101a05160048201526000602482015260206105006044836000608051602d5a03f1506105005190505060016104c05114156105e55782610520526020610520f361062e565b601c604459905901600090520163aac2ffb5601c8203526101a051600482015260206105406024836000608051602d5a03f1506105405190505060018301610560526020610560f35b610804565b600081141561069457601c60c459905901600090520163546fdeb3601c8203526101a0516004820152876024820152866044820152856064820152846084820152602061058060a483600061010051602d5a03f15061058051905050610803565b6001811415610742576000601c60c459905901600090520163de9080c8601c8203526101a051600482015288602482015287604482015286606482015285608482015260206105a060a483600061010051602d5a03f1506105a0519050141561073257601c6044599059016000905201631cda01ef601c8203526101a051600482015260206105c06024836000608051602d5a03f1506105c0519050505b826105e05260206105e0f3610802565b60028114156107a357601c60c459905901600090520163384ca8dd601c8203526101a0516004820152876024820152866044820152856064820152846084820152602061060060a483600061010051602d5a03f15061060051905050610801565b600381141561080057601c60c459905901600090520163d5dc5af1601c8203526101a0516004820152876024820152866044820152856064820152846084820152602061062060a483600061010051602d5a03f150610620519050505b5b5b5b5b601c6044599059016000905201631cda01ef601c8203526101a051600482015260206106406024836000608051602d5a03f1506106405190505082610660526020610660f35050610a36565b60048114156108b157601c60c459905901600090520163f6559853601c8203526101a0516004820152856024820152846044820152836064820152826084820152602061068060a483600061012051602d5a03f15061068051905050610a35565b600581141561091257601c60c459905901600090520163d8e5473d601c8203526101a051600482015285602482015284604482015283606482015282608482015260206106a060a483600061012051602d5a03f1506106a051905050610a34565b600681141561097357601c60c459905901600090520163090507ea601c8203526101a051600482015285602482015284604482015283606482015282608482015260206106c060a483600061012051602d5a03f1506106c051905050610a33565b60078114156109d457601c60c4599059016000905201635b911842601c8203526101a051600482015285602482015284604482015283606482015282608482015260206106e060a483600061014051602d5a03f1506106e051905050610a32565b6008811415610a3157601c60c459905901600090520163abe22b84601c8203526101a0516004820152856024820152846044820152836064820152826084820152602061070060a483600061014051602d5a03f150610700519050505b5b5b5b5b5b5b5b5b5b601c604459905901600090520163aac2ffb5601c8203526101a051600482015260206107206024836000608051602d5a03f1506107205190505060018101610740526020610740f350505050505b50 # noqa: E501 - contract_8 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE8(offset=0x75F, value=0x0) - + Op.DIV( - Op.CALLDATALOAD(offset=0x0), - 0x100000000000000000000000000000000000000000000000000000000, - ) - + Op.MSTORE( - offset=0x20, value=0x1E147037F0A63DF228FE6E7AEF730F1EA31C8CE3 - ) - + Op.MSTORE( - offset=0x40, value=0xEA65418D7BF32680F55572C943A94B590804998 - ) - + Op.MSTORE( - offset=0x60, value=0xE509E3A93BEB1EBA72F8CB8D25F93A85E2D54AFB - ) - + Op.MSTORE( - offset=0x80, value=0xC9AE5868651BF7B7DB6E360217DB49CE4E69C07E - ) - + Op.MSTORE( - offset=0xA0, value=0x142A6927CF0060133187BA8A8E74D641438F0C1C - ) - + Op.MSTORE( - offset=0xC0, value=0xB163E767E4C1BA5AE88B2EE7594F3A3FEC2BB096 - ) - + Op.MSTORE( - offset=0xE0, value=0xBA7B277319128EF4C22635534D0F61DFFDAA13AB - ) - + Op.MSTORE( - offset=0x100, value=0x9761FECF88590592CF05CE545504D376D1693AB3 - ) - + Op.MSTORE( - offset=0x120, value=0xF70BBC50F1468CECAE0761EF09386A87C1C696EA - ) - + Op.MSTORE( - offset=0x140, value=0xA89D22F049AAA5BBFB5F1A1939FFF3AE7A26AE74 + + Op.JUMPI(pc=0x17FF, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0xA1FA51F9))) + + Op.CALLDATASIZE + + Op.MSIZE + + Op.SWAP1 + + Op.MSIZE + + Op.ADD + + Op.PUSH1[0x0] + + Op.SWAP1 + + Op.MSTORE + + Op.CALLDATACOPY( + dest_offset=Op.DUP3, offset=0x4, size=Op.CALLDATASIZE ) + + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) + + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) + Op.MSTORE( - offset=0x160, value=0x174827F7E53E8CE13B047ADCAC0EB3F2CB0C3285 + offset=0x1A60, + value=Op.ADD(Op.ADD(Op.DUP3, 0x20), Op.CALLDATALOAD(offset=0x44)), ) - + Op.JUMPI(pc=0xA88, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x36A560BD))) - + Op.MSTORE(offset=0x1A0, value=Op.CALLDATALOAD(offset=0x4)) - + Op.PUSH1[0x1C] - + Op.PUSH1[0x44] + + Op.POP + + Op.PUSH1[0xA0] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -5680,29 +4820,50 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.ADD - + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0x27138BFB) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0x1A0)) - + Op.POP( - Op.CALL( - gas=Op.SUB(Op.GAS, 0x2D), - address=Op.MLOAD(offset=0xA0), - value=0x0, - args_offset=Op.DUP4, - args_size=0x24, - ret_offset=0x1E0, - ret_size=0x20, - ) + + Op.MSTORE(offset=Op.DUP2, value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x7) + + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x0) + + Op.DUP1 + + Op.SWAP1 + + Op.POP + + Op.SHA3 + + Op.MUL(0x20, Op.MLOAD(offset=Op.SUB(Op.MLOAD(offset=0x1A60), 0x20))) + + Op.DIV(Op.DUP2, 0x20) + + Op.PUSH1[0x0] + + Op.JUMPDEST + + Op.JUMPI(pc=0x17D1, condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.DUP2))) + + Op.SSTORE( + key=Op.ADD(Op.DUP3, Op.DUP5), + value=Op.MLOAD( + offset=Op.ADD(Op.MLOAD(offset=0x1A60), Op.MUL(0x20, Op.DUP1)) + ), ) - + Op.MLOAD(offset=0x1E0) + + Op.ADD(Op.DUP2, 0x1) + Op.SWAP1 + Op.POP - + Op.JUMPI(pc=0x195, condition=Op.ISZERO(Op.ISZERO)) - + Op.MSTORE(offset=0x200, value=Op.SUB(0x0, 0x1)) - + Op.RETURN(offset=0x200, size=0x20) + + Op.JUMP(pc=0x17B0) + Op.JUMPDEST - + Op.PUSH1[0x1C] - + Op.PUSH1[0x44] + + Op.SSTORE( + key=Op.ADD(Op.DUP3, Op.DUP5), + value=Op.AND( + Op.MLOAD( + offset=Op.ADD( + Op.MLOAD(offset=0x1A60), Op.MUL(0x20, Op.DUP2) + ) + ), + Op.SUB( + 0x0, Op.EXP(0x100, Op.SUB(0x20, Op.MOD(Op.DUP4, 0x20))) + ), + ), + ) + + Op.POP * 4 + + Op.MSTORE(offset=0x1B20, value=0x1) + + Op.RETURN(offset=0x1B20, size=0x20) + + Op.JUMPDEST + + Op.JUMPI(pc=0x18C5, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0xCD87F43A))) + + Op.CALLDATASIZE + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -5710,25 +4871,17 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.ADD - + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0x7A66D7CA) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0x1A0)) - + Op.POP( - Op.CALL( - gas=Op.SUB(Op.GAS, 0x2D), - address=Op.MLOAD(offset=0x80), - value=0x0, - args_offset=Op.DUP4, - args_size=0x24, - ret_offset=0x220, - ret_size=0x20, - ) + + Op.CALLDATACOPY( + dest_offset=Op.DUP3, offset=0x4, size=Op.CALLDATASIZE + ) + + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) + + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) + + Op.MSTORE( + offset=0x1B40, + value=Op.ADD(Op.ADD(Op.DUP3, 0x20), Op.CALLDATALOAD(offset=0x44)), ) - + Op.MLOAD(offset=0x220) - + Op.SWAP1 + Op.POP - + Op.PUSH1[0x1C] - + Op.PUSH1[0x64] + + Op.PUSH1[0xA0] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -5736,26 +4889,50 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.ADD - + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0xCC1C944E) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0x1A0)) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=Op.DUP2) - + Op.POP( - Op.CALL( - gas=Op.SUB(Op.GAS, 0x2D), - address=Op.MLOAD(offset=0x280), - value=0x0, - args_offset=Op.DUP4, - args_size=0x44, - ret_offset=0x260, - ret_size=0x20, - ) + + Op.MSTORE(offset=Op.DUP2, value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x8) + + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x0) + + Op.DUP1 + + Op.SWAP1 + + Op.POP + + Op.SHA3 + + Op.MUL(0x20, Op.MLOAD(offset=Op.SUB(Op.MLOAD(offset=0x1B40), 0x20))) + + Op.DIV(Op.DUP2, 0x20) + + Op.PUSH1[0x0] + + Op.JUMPDEST + + Op.JUMPI(pc=0x1897, condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.DUP2))) + + Op.SSTORE( + key=Op.ADD(Op.DUP3, Op.DUP5), + value=Op.MLOAD( + offset=Op.ADD(Op.MLOAD(offset=0x1B40), Op.MUL(0x20, Op.DUP1)) + ), ) - + Op.MLOAD(offset=0x260) + + Op.ADD(Op.DUP2, 0x1) + Op.SWAP1 + Op.POP - + Op.PUSH1[0x1C] - + Op.PUSH1[0x44] + + Op.JUMP(pc=0x1876) + + Op.JUMPDEST + + Op.SSTORE( + key=Op.ADD(Op.DUP3, Op.DUP5), + value=Op.AND( + Op.MLOAD( + offset=Op.ADD( + Op.MLOAD(offset=0x1B40), Op.MUL(0x20, Op.DUP2) + ) + ), + Op.SUB( + 0x0, Op.EXP(0x100, Op.SUB(0x20, Op.MOD(Op.DUP4, 0x20))) + ), + ), + ) + + Op.POP * 4 + + Op.MSTORE(offset=0x1C00, value=0x1) + + Op.RETURN(offset=0x1C00, size=0x20) + + Op.JUMPDEST + + Op.JUMPI(pc=0x198B, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x222A8663))) + + Op.CALLDATASIZE + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -5763,26 +4940,17 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.ADD - + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0x80B5E7BD) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0x1A0)) - + Op.POP( - Op.CALL( - gas=Op.SUB(Op.GAS, 0x2D), - address=Op.MLOAD(offset=0x60), - value=0x0, - args_offset=Op.DUP4, - args_size=0x24, - ret_offset=0x2A0, - ret_size=0x20, - ) + + Op.CALLDATACOPY( + dest_offset=Op.DUP3, offset=0x4, size=Op.CALLDATASIZE + ) + + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) + + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) + + Op.MSTORE( + offset=0x1C20, + value=Op.ADD(Op.ADD(Op.DUP3, 0x20), Op.CALLDATALOAD(offset=0x44)), ) - + Op.MLOAD(offset=0x2A0) - + Op.SWAP1 + Op.POP - + Op.MUL(Op.DUP3, Op.DUP1) - + Op.PUSH1[0x1C] - + Op.PUSH1[0x44] + + Op.PUSH1[0xA0] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -5790,26 +4958,50 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.ADD - + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0x18633576) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0x1A0)) - + Op.POP( - Op.CALL( - gas=Op.SUB(Op.GAS, 0x2D), - address=Op.MLOAD(offset=0x80), - value=0x0, - args_offset=Op.DUP4, - args_size=0x24, - ret_offset=0x300, - ret_size=0x20, - ) + + Op.MSTORE(offset=Op.DUP2, value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x9) + + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x0) + + Op.DUP1 + + Op.SWAP1 + + Op.POP + + Op.SHA3 + + Op.MUL(0x20, Op.MLOAD(offset=Op.SUB(Op.MLOAD(offset=0x1C20), 0x20))) + + Op.DIV(Op.DUP2, 0x20) + + Op.PUSH1[0x0] + + Op.JUMPDEST + + Op.JUMPI(pc=0x195D, condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.DUP2))) + + Op.SSTORE( + key=Op.ADD(Op.DUP3, Op.DUP5), + value=Op.MLOAD( + offset=Op.ADD(Op.MLOAD(offset=0x1C20), Op.MUL(0x20, Op.DUP1)) + ), ) - + Op.MLOAD(offset=0x300) + + Op.ADD(Op.DUP2, 0x1) + Op.SWAP1 + Op.POP - + Op.JUMPI(pc=0x36D, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x9))) - + Op.PUSH1[0x1C] - + Op.PUSH1[0xC4] + + Op.JUMP(pc=0x193C) + + Op.JUMPDEST + + Op.SSTORE( + key=Op.ADD(Op.DUP3, Op.DUP5), + value=Op.AND( + Op.MLOAD( + offset=Op.ADD( + Op.MLOAD(offset=0x1C20), Op.MUL(0x20, Op.DUP2) + ) + ), + Op.SUB( + 0x0, Op.EXP(0x100, Op.SUB(0x20, Op.MOD(Op.DUP4, 0x20))) + ), + ), + ) + + Op.POP * 4 + + Op.MSTORE(offset=0x1CE0, value=0x1) + + Op.RETURN(offset=0x1CE0, size=0x20) + + Op.JUMPDEST + + Op.JUMPI(pc=0x1A51, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0xB39E1FAA))) + + Op.CALLDATASIZE + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -5817,29 +5009,17 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.ADD - + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0xAC44D71E) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0x1A0)) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=Op.DUP6) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x44), value=Op.DUP5) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x64), value=Op.DUP4) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x84), value=Op.DUP3) - + Op.POP( - Op.CALL( - gas=Op.SUB(Op.GAS, 0x2D), - address=Op.MLOAD(offset=0x160), - value=0x0, - args_offset=Op.DUP4, - args_size=0xA4, - ret_offset=0x360, - ret_size=0x20, - ) + + Op.CALLDATACOPY( + dest_offset=Op.DUP3, offset=0x4, size=Op.CALLDATASIZE ) - + Op.MLOAD(offset=0x360) - + Op.SWAP1 - + Op.POP * 2 - + Op.PUSH1[0x1C] - + Op.PUSH1[0x64] + + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) + + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) + + Op.MSTORE( + offset=0x1D00, + value=Op.ADD(Op.ADD(Op.DUP3, 0x20), Op.CALLDATALOAD(offset=0x44)), + ) + + Op.POP + + Op.PUSH1[0xA0] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -5847,26 +5027,50 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.ADD - + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0x7265802D) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0x1A0)) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=0x0) - + Op.POP( - Op.CALL( - gas=Op.SUB(Op.GAS, 0x2D), - address=Op.MLOAD(offset=0x80), - value=0x0, - args_offset=Op.DUP4, - args_size=0x44, - ret_offset=0x380, - ret_size=0x20, - ) + + Op.MSTORE(offset=Op.DUP2, value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0xA) + + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x0) + + Op.DUP1 + + Op.SWAP1 + + Op.POP + + Op.SHA3 + + Op.MUL(0x20, Op.MLOAD(offset=Op.SUB(Op.MLOAD(offset=0x1D00), 0x20))) + + Op.DIV(Op.DUP2, 0x20) + + Op.PUSH1[0x0] + + Op.JUMPDEST + + Op.JUMPI(pc=0x1A23, condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.DUP2))) + + Op.SSTORE( + key=Op.ADD(Op.DUP3, Op.DUP5), + value=Op.MLOAD( + offset=Op.ADD(Op.MLOAD(offset=0x1D00), Op.MUL(0x20, Op.DUP1)) + ), ) - + Op.MLOAD(offset=0x380) + + Op.ADD(Op.DUP2, 0x1) + Op.SWAP1 - + Op.POP * 2 - + Op.PUSH1[0x1C] - + Op.PUSH1[0x44] + + Op.POP + + Op.JUMP(pc=0x1A02) + + Op.JUMPDEST + + Op.SSTORE( + key=Op.ADD(Op.DUP3, Op.DUP5), + value=Op.AND( + Op.MLOAD( + offset=Op.ADD( + Op.MLOAD(offset=0x1D00), Op.MUL(0x20, Op.DUP2) + ) + ), + Op.SUB( + 0x0, Op.EXP(0x100, Op.SUB(0x20, Op.MOD(Op.DUP4, 0x20))) + ), + ), + ) + + Op.POP * 4 + + Op.MSTORE(offset=0x1DC0, value=0x1) + + Op.RETURN(offset=0x1DC0, size=0x20) + + Op.JUMPDEST + + Op.JUMPI(pc=0x1B17, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0xE365736B))) + + Op.CALLDATASIZE + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -5874,30 +5078,17 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.ADD - + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0xC5476EFE) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0x1A0)) - + Op.POP( - Op.CALL( - gas=Op.SUB(Op.GAS, 0x2D), - address=Op.MLOAD(offset=0x80), - value=0x0, - args_offset=Op.DUP4, - args_size=0x24, - ret_offset=0x3A0, - ret_size=0x20, - ) + + Op.CALLDATACOPY( + dest_offset=Op.DUP3, offset=0x4, size=Op.CALLDATASIZE ) - + Op.MLOAD(offset=0x3A0) - + Op.SWAP1 - + Op.POP * 2 - + Op.MSTORE(offset=0x3C0, value=Op.ADD(Op.DUP6, 0x1)) - + Op.RETURN(offset=0x3C0, size=0x20) - + Op.JUMP(pc=0xA3A) - + Op.JUMPDEST - + Op.JUMPI(pc=0x3CD, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x0))) - + Op.PUSH1[0x1C] - + Op.PUSH1[0xC4] + + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) + + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) + + Op.MSTORE( + offset=0x1DE0, + value=Op.ADD(Op.ADD(Op.DUP3, 0x20), Op.CALLDATALOAD(offset=0x44)), + ) + + Op.POP + + Op.PUSH1[0xA0] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -5905,65 +5096,54 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.ADD - + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0xEF72638A) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0x1A0)) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=Op.DUP6) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x44), value=Op.DUP5) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x64), value=Op.DUP4) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x84), value=Op.DUP3) - + Op.POP( - Op.CALL( - gas=Op.SUB(Op.GAS, 0x2D), - address=Op.MLOAD(offset=0xC0), - value=0x0, - args_offset=Op.DUP4, - args_size=0xA4, - ret_offset=0x3E0, - ret_size=0x20, - ) - ) - + Op.MLOAD(offset=0x3E0) - + Op.SWAP1 - + Op.POP * 2 - + Op.JUMP(pc=0xA39) - + Op.JUMPDEST - + Op.JUMPI(pc=0x42D, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x1))) - + Op.PUSH1[0x1C] - + Op.PUSH1[0xC4] - + Op.MSIZE + + Op.MSTORE(offset=Op.DUP2, value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0xB) + + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x0) + + Op.DUP1 + Op.SWAP1 - + Op.MSIZE - + Op.ADD + + Op.POP + + Op.SHA3 + + Op.MUL(0x20, Op.MLOAD(offset=Op.SUB(Op.MLOAD(offset=0x1DE0), 0x20))) + + Op.DIV(Op.DUP2, 0x20) + Op.PUSH1[0x0] - + Op.SWAP1 - + Op.MSTORE - + Op.ADD - + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0xA63E976C) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0x1A0)) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=Op.DUP6) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x44), value=Op.DUP5) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x64), value=Op.DUP4) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x84), value=Op.DUP3) - + Op.POP( - Op.CALL( - gas=Op.SUB(Op.GAS, 0x2D), - address=Op.MLOAD(offset=0xE0), - value=0x0, - args_offset=Op.DUP4, - args_size=0xA4, - ret_offset=0x400, - ret_size=0x20, - ) + + Op.JUMPDEST + + Op.JUMPI(pc=0x1AE9, condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.DUP2))) + + Op.SSTORE( + key=Op.ADD(Op.DUP3, Op.DUP5), + value=Op.MLOAD( + offset=Op.ADD(Op.MLOAD(offset=0x1DE0), Op.MUL(0x20, Op.DUP1)) + ), ) - + Op.MLOAD(offset=0x400) + + Op.ADD(Op.DUP2, 0x1) + Op.SWAP1 - + Op.POP * 2 - + Op.JUMP(pc=0xA38) + + Op.POP + + Op.JUMP(pc=0x1AC8) + Op.JUMPDEST - + Op.JUMPI(pc=0x48D, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x2))) - + Op.PUSH1[0x1C] - + Op.PUSH1[0xC4] + + Op.SSTORE( + key=Op.ADD(Op.DUP3, Op.DUP5), + value=Op.AND( + Op.MLOAD( + offset=Op.ADD( + Op.MLOAD(offset=0x1DE0), Op.MUL(0x20, Op.DUP2) + ) + ), + Op.SUB( + 0x0, Op.EXP(0x100, Op.SUB(0x20, Op.MOD(Op.DUP4, 0x20))) + ), + ), + ) + + Op.POP * 4 + + Op.MSTORE(offset=0x1EA0, value=0x1) + + Op.RETURN(offset=0x1EA0, size=0x20) + + Op.JUMPDEST + + Op.JUMPI(pc=0x1B73, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0xAAD7D6E3))) + + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) + + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) + + Op.MSTORE(offset=0x1EC0, value=Op.CALLDATALOAD(offset=0x44)) + + Op.MLOAD(offset=0x1EC0) + + Op.PUSH1[0x80] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -5971,32 +5151,20 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.ADD - + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0x533EA0ED) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0x1A0)) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=Op.DUP6) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x44), value=Op.DUP5) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x64), value=Op.DUP4) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x84), value=Op.DUP3) - + Op.POP( - Op.CALL( - gas=Op.SUB(Op.GAS, 0x2D), - address=Op.MLOAD(offset=0xE0), - value=0x0, - args_offset=Op.DUP4, - args_size=0xA4, - ret_offset=0x420, - ret_size=0x20, - ) - ) - + Op.MLOAD(offset=0x420) + + Op.MSTORE(offset=Op.DUP2, value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0xC) + + Op.DUP1 + Op.SWAP1 - + Op.POP * 2 - + Op.JUMP(pc=0xA37) + + Op.POP + + Op.SHA3 + + Op.SSTORE + + Op.MSTORE(offset=0x1F00, value=0x1) + + Op.RETURN(offset=0x1F00, size=0x20) + Op.JUMPDEST - + Op.JUMPI(pc=0x850, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x3))) - + Op.PUSH1[0x1C] - + Op.PUSH1[0x64] + + Op.JUMPI(pc=0x1C39, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x1112B27))) + + Op.CALLDATASIZE + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -6004,12 +5172,17 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.ADD - + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0xE05DCB56) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0x1A0)) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=Op.DUP6) - + Op.ADD(Op.DUP6, 0x2) - + Op.ADD(Op.MUL(0x20, Op.DUP2), 0x40) + + Op.CALLDATACOPY( + dest_offset=Op.DUP3, offset=0x4, size=Op.CALLDATASIZE + ) + + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) + + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) + + Op.MSTORE( + offset=0x1F20, + value=Op.ADD(Op.ADD(Op.DUP3, 0x20), Op.CALLDATALOAD(offset=0x44)), + ) + + Op.POP + + Op.PUSH1[0xA0] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -6017,26 +5190,50 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.POP( - Op.CALL( - gas=Op.SUB(Op.GAS, 0x2D), - address=Op.MLOAD(offset=0x280), - value=0x0, - args_offset=Op.DUP6, - args_size=0x44, - ret_offset=Op.DUP2, - ret_size=Op.ADD(0x40, Op.MUL(0x20, Op.DUP2)), - ) - ) - + Op.ADD(Op.DUP2, 0x40) - + Op.SWAP1 - + Op.POP + + Op.MSTORE(offset=Op.DUP2, value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0xD) + + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x0) + + Op.DUP1 + Op.SWAP1 + Op.POP + + Op.SHA3 + + Op.MUL(0x20, Op.MLOAD(offset=Op.SUB(Op.MLOAD(offset=0x1F20), 0x20))) + + Op.DIV(Op.DUP2, 0x20) + + Op.PUSH1[0x0] + + Op.JUMPDEST + + Op.JUMPI(pc=0x1C0B, condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.DUP2))) + + Op.SSTORE( + key=Op.ADD(Op.DUP3, Op.DUP5), + value=Op.MLOAD( + offset=Op.ADD(Op.MLOAD(offset=0x1F20), Op.MUL(0x20, Op.DUP1)) + ), + ) + + Op.ADD(Op.DUP2, 0x1) + Op.SWAP1 + Op.POP - + Op.PUSH1[0x1C] - + Op.PUSH1[0x44] + + Op.JUMP(pc=0x1BEA) + + Op.JUMPDEST + + Op.SSTORE( + key=Op.ADD(Op.DUP3, Op.DUP5), + value=Op.AND( + Op.MLOAD( + offset=Op.ADD( + Op.MLOAD(offset=0x1F20), Op.MUL(0x20, Op.DUP2) + ) + ), + Op.SUB( + 0x0, Op.EXP(0x100, Op.SUB(0x20, Op.MOD(Op.DUP4, 0x20))) + ), + ), + ) + + Op.POP * 4 + + Op.MSTORE(offset=0x1FE0, value=0x1) + + Op.RETURN(offset=0x1FE0, size=0x20) + + Op.JUMPDEST + + Op.JUMPI(pc=0x1CFF, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0xBDBB239B))) + + Op.CALLDATASIZE + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -6044,26 +5241,17 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.ADD - + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0x3D905045) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0x1A0)) - + Op.POP( - Op.CALL( - gas=Op.SUB(Op.GAS, 0x2D), - address=Op.MLOAD(offset=0x80), - value=0x0, - args_offset=Op.DUP4, - args_size=0x24, - ret_offset=0x480, - ret_size=0x20, - ) + + Op.CALLDATACOPY( + dest_offset=Op.DUP3, offset=0x4, size=Op.CALLDATASIZE + ) + + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) + + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) + + Op.MSTORE( + offset=0x2000, + value=Op.ADD(Op.ADD(Op.DUP3, 0x20), Op.CALLDATALOAD(offset=0x44)), ) - + Op.MLOAD(offset=0x480) - + Op.SWAP1 + Op.POP - + Op.JUMPI(pc=0x633, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x4))) - + Op.PUSH1[0x1C] - + Op.PUSH1[0xC4] + + Op.PUSH1[0xA0] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -6071,31 +5259,50 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.ADD - + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0x939AA8C) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0x1A0)) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=Op.DUP8) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x44), value=Op.DUP7) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x64), value=Op.DUP6) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x84), value=Op.DUP5) - + Op.POP( - Op.CALL( - gas=Op.SUB(Op.GAS, 0x2D), - address=Op.MLOAD(offset=0x100), - value=0x0, - args_offset=Op.DUP4, - args_size=0xA4, - ret_offset=0x4E0, - ret_size=0x20, - ) + + Op.MSTORE(offset=Op.DUP2, value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0xE) + + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x0) + + Op.DUP1 + + Op.SWAP1 + + Op.POP + + Op.SHA3 + + Op.MUL(0x20, Op.MLOAD(offset=Op.SUB(Op.MLOAD(offset=0x2000), 0x20))) + + Op.DIV(Op.DUP2, 0x20) + + Op.PUSH1[0x0] + + Op.JUMPDEST + + Op.JUMPI(pc=0x1CD1, condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.DUP2))) + + Op.SSTORE( + key=Op.ADD(Op.DUP3, Op.DUP5), + value=Op.MLOAD( + offset=Op.ADD(Op.MLOAD(offset=0x2000), Op.MUL(0x20, Op.DUP1)) + ), ) - + Op.MLOAD(offset=0x4E0) + + Op.ADD(Op.DUP2, 0x1) + Op.SWAP1 + Op.POP - + Op.PUSH2[0x4C0] - + Op.MSTORE - + Op.PUSH1[0x1C] - + Op.PUSH1[0x64] + + Op.JUMP(pc=0x1CB0) + + Op.JUMPDEST + + Op.SSTORE( + key=Op.ADD(Op.DUP3, Op.DUP5), + value=Op.AND( + Op.MLOAD( + offset=Op.ADD( + Op.MLOAD(offset=0x2000), Op.MUL(0x20, Op.DUP2) + ) + ), + Op.SUB( + 0x0, Op.EXP(0x100, Op.SUB(0x20, Op.MOD(Op.DUP4, 0x20))) + ), + ), + ) + + Op.POP * 4 + + Op.MSTORE(offset=0x20C0, value=0x1) + + Op.RETURN(offset=0x20C0, size=0x20) + + Op.JUMPDEST + + Op.JUMPI(pc=0x1DC5, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x5A0CD48))) + + Op.CALLDATASIZE + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -6103,33 +5310,17 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.ADD - + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0xC286273A) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0x1A0)) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=0x0) - + Op.POP( - Op.CALL( - gas=Op.SUB(Op.GAS, 0x2D), - address=Op.MLOAD(offset=0x80), - value=0x0, - args_offset=Op.DUP4, - args_size=0x44, - ret_offset=0x500, - ret_size=0x20, - ) + + Op.CALLDATACOPY( + dest_offset=Op.DUP3, offset=0x4, size=Op.CALLDATASIZE ) - + Op.MLOAD(offset=0x500) - + Op.SWAP1 - + Op.POP * 2 - + Op.JUMPI( - pc=0x5E5, condition=Op.ISZERO(Op.EQ(Op.MLOAD(offset=0x4C0), 0x1)) + + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) + + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) + + Op.MSTORE( + offset=0x20E0, + value=Op.ADD(Op.ADD(Op.DUP3, 0x20), Op.CALLDATALOAD(offset=0x44)), ) - + Op.MSTORE(offset=0x520, value=Op.DUP3) - + Op.RETURN(offset=0x520, size=0x20) - + Op.JUMP(pc=0x62E) - + Op.JUMPDEST - + Op.PUSH1[0x1C] - + Op.PUSH1[0x44] + + Op.POP + + Op.PUSH1[0xA0] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -6137,31 +5328,50 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.ADD - + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0xAAC2FFB5) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0x1A0)) - + Op.POP( - Op.CALL( - gas=Op.SUB(Op.GAS, 0x2D), - address=Op.MLOAD(offset=0x80), - value=0x0, - args_offset=Op.DUP4, - args_size=0x24, - ret_offset=0x540, - ret_size=0x20, - ) + + Op.MSTORE(offset=Op.DUP2, value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0xF) + + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x0) + + Op.DUP1 + + Op.SWAP1 + + Op.POP + + Op.SHA3 + + Op.MUL(0x20, Op.MLOAD(offset=Op.SUB(Op.MLOAD(offset=0x20E0), 0x20))) + + Op.DIV(Op.DUP2, 0x20) + + Op.PUSH1[0x0] + + Op.JUMPDEST + + Op.JUMPI(pc=0x1D97, condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.DUP2))) + + Op.SSTORE( + key=Op.ADD(Op.DUP3, Op.DUP5), + value=Op.MLOAD( + offset=Op.ADD(Op.MLOAD(offset=0x20E0), Op.MUL(0x20, Op.DUP1)) + ), ) - + Op.MLOAD(offset=0x540) + + Op.ADD(Op.DUP2, 0x1) + Op.SWAP1 - + Op.POP * 2 - + Op.MSTORE(offset=0x560, value=Op.ADD(Op.DUP4, 0x1)) - + Op.RETURN(offset=0x560, size=0x20) + + Op.POP + + Op.JUMP(pc=0x1D76) + Op.JUMPDEST - + Op.JUMP(pc=0x804) + + Op.SSTORE( + key=Op.ADD(Op.DUP3, Op.DUP5), + value=Op.AND( + Op.MLOAD( + offset=Op.ADD( + Op.MLOAD(offset=0x20E0), Op.MUL(0x20, Op.DUP2) + ) + ), + Op.SUB( + 0x0, Op.EXP(0x100, Op.SUB(0x20, Op.MOD(Op.DUP4, 0x20))) + ), + ), + ) + + Op.POP * 4 + + Op.MSTORE(offset=0x21A0, value=0x1) + + Op.RETURN(offset=0x21A0, size=0x20) + Op.JUMPDEST - + Op.JUMPI(pc=0x694, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x0))) - + Op.PUSH1[0x1C] - + Op.PUSH1[0xC4] + + Op.JUMPI(pc=0x1E8B, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0xAAA1FE35))) + + Op.CALLDATASIZE + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -6169,33 +5379,68 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE + + Op.CALLDATACOPY( + dest_offset=Op.DUP3, offset=0x4, size=Op.CALLDATASIZE + ) + + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) + + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) + + Op.MSTORE( + offset=0x21C0, + value=Op.ADD(Op.ADD(Op.DUP3, 0x20), Op.CALLDATALOAD(offset=0x44)), + ) + + Op.POP + + Op.PUSH1[0xA0] * 2 + + Op.MSIZE + + Op.SWAP1 + + Op.MSIZE + Op.ADD - + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0x546FDEB3) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0x1A0)) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=Op.DUP8) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x44), value=Op.DUP7) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x64), value=Op.DUP6) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x84), value=Op.DUP5) - + Op.POP( - Op.CALL( - gas=Op.SUB(Op.GAS, 0x2D), - address=Op.MLOAD(offset=0x100), - value=0x0, - args_offset=Op.DUP4, - args_size=0xA4, - ret_offset=0x580, - ret_size=0x20, - ) + + Op.PUSH1[0x0] + + Op.SWAP1 + + Op.MSTORE + + Op.MSTORE(offset=Op.DUP2, value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x10) + + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x0) + + Op.DUP1 + + Op.SWAP1 + + Op.POP + + Op.SHA3 + + Op.MUL(0x20, Op.MLOAD(offset=Op.SUB(Op.MLOAD(offset=0x21C0), 0x20))) + + Op.DIV(Op.DUP2, 0x20) + + Op.PUSH1[0x0] + + Op.JUMPDEST + + Op.JUMPI(pc=0x1E5D, condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.DUP2))) + + Op.SSTORE( + key=Op.ADD(Op.DUP3, Op.DUP5), + value=Op.MLOAD( + offset=Op.ADD(Op.MLOAD(offset=0x21C0), Op.MUL(0x20, Op.DUP1)) + ), ) - + Op.MLOAD(offset=0x580) + + Op.ADD(Op.DUP2, 0x1) + Op.SWAP1 - + Op.POP * 2 - + Op.JUMP(pc=0x803) + + Op.POP + + Op.JUMP(pc=0x1E3C) + Op.JUMPDEST - + Op.JUMPI(pc=0x742, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x1))) - + Op.PUSH1[0x0] - + Op.PUSH1[0x1C] - + Op.PUSH1[0xC4] + + Op.SSTORE( + key=Op.ADD(Op.DUP3, Op.DUP5), + value=Op.AND( + Op.MLOAD( + offset=Op.ADD( + Op.MLOAD(offset=0x21C0), Op.MUL(0x20, Op.DUP2) + ) + ), + Op.SUB( + 0x0, Op.EXP(0x100, Op.SUB(0x20, Op.MOD(Op.DUP4, 0x20))) + ), + ), + ) + + Op.POP * 4 + + Op.MSTORE(offset=0x2280, value=0x1) + + Op.RETURN(offset=0x2280, size=0x20) + + Op.JUMPDEST + + Op.JUMPI(pc=0x1F51, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x2BE4935D))) + + Op.CALLDATASIZE + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -6203,30 +5448,17 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.ADD - + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0xDE9080C8) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0x1A0)) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=Op.DUP9) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x44), value=Op.DUP8) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x64), value=Op.DUP7) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x84), value=Op.DUP6) - + Op.POP( - Op.CALL( - gas=Op.SUB(Op.GAS, 0x2D), - address=Op.MLOAD(offset=0x100), - value=0x0, - args_offset=Op.DUP4, - args_size=0xA4, - ret_offset=0x5A0, - ret_size=0x20, - ) + + Op.CALLDATACOPY( + dest_offset=Op.DUP3, offset=0x4, size=Op.CALLDATASIZE + ) + + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) + + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) + + Op.MSTORE( + offset=0x22A0, + value=Op.ADD(Op.ADD(Op.DUP3, 0x20), Op.CALLDATALOAD(offset=0x44)), ) - + Op.MLOAD(offset=0x5A0) - + Op.SWAP1 + Op.POP - + Op.JUMPI(pc=0x732, condition=Op.ISZERO(Op.EQ)) - + Op.PUSH1[0x1C] - + Op.PUSH1[0x44] + + Op.PUSH1[0xA0] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -6234,31 +5466,50 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.ADD - + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0x1CDA01EF) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0x1A0)) - + Op.POP( - Op.CALL( - gas=Op.SUB(Op.GAS, 0x2D), - address=Op.MLOAD(offset=0x80), - value=0x0, - args_offset=Op.DUP4, - args_size=0x24, - ret_offset=0x5C0, - ret_size=0x20, - ) + + Op.MSTORE(offset=Op.DUP2, value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x11) + + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x0) + + Op.DUP1 + + Op.SWAP1 + + Op.POP + + Op.SHA3 + + Op.MUL(0x20, Op.MLOAD(offset=Op.SUB(Op.MLOAD(offset=0x22A0), 0x20))) + + Op.DIV(Op.DUP2, 0x20) + + Op.PUSH1[0x0] + + Op.JUMPDEST + + Op.JUMPI(pc=0x1F23, condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.DUP2))) + + Op.SSTORE( + key=Op.ADD(Op.DUP3, Op.DUP5), + value=Op.MLOAD( + offset=Op.ADD(Op.MLOAD(offset=0x22A0), Op.MUL(0x20, Op.DUP1)) + ), ) - + Op.MLOAD(offset=0x5C0) + + Op.ADD(Op.DUP2, 0x1) + Op.SWAP1 - + Op.POP * 2 + + Op.POP + + Op.JUMP(pc=0x1F02) + Op.JUMPDEST - + Op.MSTORE(offset=0x5E0, value=Op.DUP3) - + Op.RETURN(offset=0x5E0, size=0x20) - + Op.JUMP(pc=0x802) + + Op.SSTORE( + key=Op.ADD(Op.DUP3, Op.DUP5), + value=Op.AND( + Op.MLOAD( + offset=Op.ADD( + Op.MLOAD(offset=0x22A0), Op.MUL(0x20, Op.DUP2) + ) + ), + Op.SUB( + 0x0, Op.EXP(0x100, Op.SUB(0x20, Op.MOD(Op.DUP4, 0x20))) + ), + ), + ) + + Op.POP * 4 + + Op.MSTORE(offset=0x2360, value=0x1) + + Op.RETURN(offset=0x2360, size=0x20) + Op.JUMPDEST - + Op.JUMPI(pc=0x7A3, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x2))) - + Op.PUSH1[0x1C] - + Op.PUSH1[0xC4] + + Op.JUMPI(pc=0x2017, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x13A8350D))) + + Op.CALLDATASIZE + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -6266,32 +5517,17 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.ADD - + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0x384CA8DD) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0x1A0)) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=Op.DUP8) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x44), value=Op.DUP7) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x64), value=Op.DUP6) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x84), value=Op.DUP5) - + Op.POP( - Op.CALL( - gas=Op.SUB(Op.GAS, 0x2D), - address=Op.MLOAD(offset=0x100), - value=0x0, - args_offset=Op.DUP4, - args_size=0xA4, - ret_offset=0x600, - ret_size=0x20, - ) + + Op.CALLDATACOPY( + dest_offset=Op.DUP3, offset=0x4, size=Op.CALLDATASIZE ) - + Op.MLOAD(offset=0x600) - + Op.SWAP1 - + Op.POP * 2 - + Op.JUMP(pc=0x801) - + Op.JUMPDEST - + Op.JUMPI(pc=0x800, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x3))) - + Op.PUSH1[0x1C] - + Op.PUSH1[0xC4] + + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) + + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) + + Op.MSTORE( + offset=0x2380, + value=Op.ADD(Op.ADD(Op.DUP3, 0x20), Op.CALLDATALOAD(offset=0x44)), + ) + + Op.POP + + Op.PUSH1[0xA0] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -6299,95 +5535,50 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.ADD - + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0xD5DC5AF1) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0x1A0)) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=Op.DUP8) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x44), value=Op.DUP7) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x64), value=Op.DUP6) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x84), value=Op.DUP5) - + Op.POP( - Op.CALL( - gas=Op.SUB(Op.GAS, 0x2D), - address=Op.MLOAD(offset=0x100), - value=0x0, - args_offset=Op.DUP4, - args_size=0xA4, - ret_offset=0x620, - ret_size=0x20, - ) - ) - + Op.MLOAD(offset=0x620) - + Op.SWAP1 - + Op.POP * 2 - + Op.JUMPDEST * 5 - + Op.PUSH1[0x1C] - + Op.PUSH1[0x44] - + Op.MSIZE + + Op.MSTORE(offset=Op.DUP2, value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x12) + + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x0) + + Op.DUP1 + Op.SWAP1 - + Op.MSIZE - + Op.ADD + + Op.POP + + Op.SHA3 + + Op.MUL(0x20, Op.MLOAD(offset=Op.SUB(Op.MLOAD(offset=0x2380), 0x20))) + + Op.DIV(Op.DUP2, 0x20) + Op.PUSH1[0x0] - + Op.SWAP1 - + Op.MSTORE - + Op.ADD - + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0x1CDA01EF) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0x1A0)) - + Op.POP( - Op.CALL( - gas=Op.SUB(Op.GAS, 0x2D), - address=Op.MLOAD(offset=0x80), - value=0x0, - args_offset=Op.DUP4, - args_size=0x24, - ret_offset=0x640, - ret_size=0x20, - ) + + Op.JUMPDEST + + Op.JUMPI(pc=0x1FE9, condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.DUP2))) + + Op.SSTORE( + key=Op.ADD(Op.DUP3, Op.DUP5), + value=Op.MLOAD( + offset=Op.ADD(Op.MLOAD(offset=0x2380), Op.MUL(0x20, Op.DUP1)) + ), ) - + Op.MLOAD(offset=0x640) + + Op.ADD(Op.DUP2, 0x1) + Op.SWAP1 - + Op.POP * 2 - + Op.MSTORE(offset=0x660, value=Op.DUP3) - + Op.RETURN(offset=0x660, size=0x20) - + Op.POP * 2 - + Op.JUMP(pc=0xA36) + + Op.POP + + Op.JUMP(pc=0x1FC8) + Op.JUMPDEST - + Op.JUMPI(pc=0x8B1, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x4))) - + Op.PUSH1[0x1C] - + Op.PUSH1[0xC4] - + Op.MSIZE - + Op.SWAP1 - + Op.MSIZE - + Op.ADD - + Op.PUSH1[0x0] - + Op.SWAP1 - + Op.MSTORE - + Op.ADD - + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0xF6559853) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0x1A0)) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=Op.DUP6) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x44), value=Op.DUP5) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x64), value=Op.DUP4) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x84), value=Op.DUP3) - + Op.POP( - Op.CALL( - gas=Op.SUB(Op.GAS, 0x2D), - address=Op.MLOAD(offset=0x120), - value=0x0, - args_offset=Op.DUP4, - args_size=0xA4, - ret_offset=0x680, - ret_size=0x20, - ) + + Op.SSTORE( + key=Op.ADD(Op.DUP3, Op.DUP5), + value=Op.AND( + Op.MLOAD( + offset=Op.ADD( + Op.MLOAD(offset=0x2380), Op.MUL(0x20, Op.DUP2) + ) + ), + Op.SUB( + 0x0, Op.EXP(0x100, Op.SUB(0x20, Op.MOD(Op.DUP4, 0x20))) + ), + ), ) - + Op.MLOAD(offset=0x680) - + Op.SWAP1 - + Op.POP * 2 - + Op.JUMP(pc=0xA35) + + Op.POP * 4 + + Op.MSTORE(offset=0x2440, value=0x1) + + Op.RETURN(offset=0x2440, size=0x20) + Op.JUMPDEST - + Op.JUMPI(pc=0x912, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x5))) - + Op.PUSH1[0x1C] - + Op.PUSH1[0xC4] + + Op.JUMPI(pc=0x20DD, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0xCB540B45))) + + Op.CALLDATASIZE + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -6395,32 +5586,17 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.ADD - + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0xD8E5473D) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0x1A0)) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=Op.DUP6) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x44), value=Op.DUP5) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x64), value=Op.DUP4) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x84), value=Op.DUP3) - + Op.POP( - Op.CALL( - gas=Op.SUB(Op.GAS, 0x2D), - address=Op.MLOAD(offset=0x120), - value=0x0, - args_offset=Op.DUP4, - args_size=0xA4, - ret_offset=0x6A0, - ret_size=0x20, - ) + + Op.CALLDATACOPY( + dest_offset=Op.DUP3, offset=0x4, size=Op.CALLDATASIZE ) - + Op.MLOAD(offset=0x6A0) - + Op.SWAP1 - + Op.POP * 2 - + Op.JUMP(pc=0xA34) - + Op.JUMPDEST - + Op.JUMPI(pc=0x973, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x6))) - + Op.PUSH1[0x1C] - + Op.PUSH1[0xC4] + + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) + + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) + + Op.MSTORE( + offset=0x2460, + value=Op.ADD(Op.ADD(Op.DUP3, 0x20), Op.CALLDATALOAD(offset=0x44)), + ) + + Op.POP + + Op.PUSH1[0xA0] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -6428,96 +5604,50 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.ADD - + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0x90507EA) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0x1A0)) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=Op.DUP6) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x44), value=Op.DUP5) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x64), value=Op.DUP4) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x84), value=Op.DUP3) - + Op.POP( - Op.CALL( - gas=Op.SUB(Op.GAS, 0x2D), - address=Op.MLOAD(offset=0x120), - value=0x0, - args_offset=Op.DUP4, - args_size=0xA4, - ret_offset=0x6C0, - ret_size=0x20, - ) - ) - + Op.MLOAD(offset=0x6C0) - + Op.SWAP1 - + Op.POP * 2 - + Op.JUMP(pc=0xA33) - + Op.JUMPDEST - + Op.JUMPI(pc=0x9D4, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x7))) - + Op.PUSH1[0x1C] - + Op.PUSH1[0xC4] - + Op.MSIZE + + Op.MSTORE(offset=Op.DUP2, value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x13) + + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x0) + + Op.DUP1 + Op.SWAP1 - + Op.MSIZE - + Op.ADD + + Op.POP + + Op.SHA3 + + Op.MUL(0x20, Op.MLOAD(offset=Op.SUB(Op.MLOAD(offset=0x2460), 0x20))) + + Op.DIV(Op.DUP2, 0x20) + Op.PUSH1[0x0] - + Op.SWAP1 - + Op.MSTORE - + Op.ADD - + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0x5B911842) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0x1A0)) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=Op.DUP6) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x44), value=Op.DUP5) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x64), value=Op.DUP4) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x84), value=Op.DUP3) - + Op.POP( - Op.CALL( - gas=Op.SUB(Op.GAS, 0x2D), - address=Op.MLOAD(offset=0x140), - value=0x0, - args_offset=Op.DUP4, - args_size=0xA4, - ret_offset=0x6E0, - ret_size=0x20, - ) + + Op.JUMPDEST + + Op.JUMPI(pc=0x20AF, condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.DUP2))) + + Op.SSTORE( + key=Op.ADD(Op.DUP3, Op.DUP5), + value=Op.MLOAD( + offset=Op.ADD(Op.MLOAD(offset=0x2460), Op.MUL(0x20, Op.DUP1)) + ), ) - + Op.MLOAD(offset=0x6E0) + + Op.ADD(Op.DUP2, 0x1) + Op.SWAP1 - + Op.POP * 2 - + Op.JUMP(pc=0xA32) + + Op.POP + + Op.JUMP(pc=0x208E) + Op.JUMPDEST - + Op.JUMPI(pc=0xA31, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x8))) - + Op.PUSH1[0x1C] - + Op.PUSH1[0xC4] - + Op.MSIZE - + Op.SWAP1 - + Op.MSIZE - + Op.ADD - + Op.PUSH1[0x0] - + Op.SWAP1 - + Op.MSTORE - + Op.ADD - + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0xABE22B84) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0x1A0)) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=Op.DUP6) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x44), value=Op.DUP5) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x64), value=Op.DUP4) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x84), value=Op.DUP3) - + Op.POP( - Op.CALL( - gas=Op.SUB(Op.GAS, 0x2D), - address=Op.MLOAD(offset=0x140), - value=0x0, - args_offset=Op.DUP4, - args_size=0xA4, - ret_offset=0x700, - ret_size=0x20, - ) + + Op.SSTORE( + key=Op.ADD(Op.DUP3, Op.DUP5), + value=Op.AND( + Op.MLOAD( + offset=Op.ADD( + Op.MLOAD(offset=0x2460), Op.MUL(0x20, Op.DUP2) + ) + ), + Op.SUB( + 0x0, Op.EXP(0x100, Op.SUB(0x20, Op.MOD(Op.DUP4, 0x20))) + ), + ), ) - + Op.MLOAD(offset=0x700) - + Op.SWAP1 - + Op.POP * 2 - + Op.JUMPDEST * 10 - + Op.PUSH1[0x1C] - + Op.PUSH1[0x44] + + Op.POP * 4 + + Op.MSTORE(offset=0x2520, value=0x1) + + Op.RETURN(offset=0x2520, size=0x20) + + Op.JUMPDEST + + Op.JUMPI(pc=0x21A3, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0xBE030627))) + + Op.CALLDATASIZE + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -6525,44 +5655,17 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.ADD - + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0xAAC2FFB5) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0x1A0)) - + Op.POP( - Op.CALL( - gas=Op.SUB(Op.GAS, 0x2D), - address=Op.MLOAD(offset=0x80), - value=0x0, - args_offset=Op.DUP4, - args_size=0x24, - ret_offset=0x720, - ret_size=0x20, - ) - ) - + Op.MLOAD(offset=0x720) - + Op.SWAP1 - + Op.POP * 2 - + Op.MSTORE(offset=0x740, value=Op.ADD(Op.DUP2, 0x1)) - + Op.RETURN(offset=0x740, size=0x20) - + Op.POP * 5 - + Op.JUMPDEST - + Op.POP, - nonce=0, - address=Address(0xB03F030056DB7D467D778326658BAC0D1B35D8F7), # noqa: E501 - ) - # Source: raw - # 0x600061083f537c010000000000000000000000000000000000000000000000000000000060003504637a66d7ca8114156100665760043560405260606060599059016000905260008152604051816020015260008160400152809050205460605260206060f35b63c60409c68114156100a55760043560405260606060599059016000905260008152604051816020015260018160400152809050205460a052602060a0f35b63186335768114156100e45760043560405260606060599059016000905260008152604051816020015260028160400152809050205460e052602060e0f35b63b3903c8a8114156101bc57600435604052606060605990590160009052600081526040518160200152600581604001528090502054610120526101205180602002602001599059016000905281815260208101905090506101605260006101c0525b610120516101c051121561019f57608060805990590160009052600081526040518160200152600481604001526101c051816060015280905020546101c05160200261016051015260016101c051016101c052610147565b6101605160206040820352602060208203510260400160408203f3505b636824e0fb8114156101fd57600435604052606060605990590160009052600081526040518160200152600581604001528090502054610220526020610220f35b633db16be381141561023e57600435604052606060605990590160009052600081526040518160200152600681604001528090502054610260526020610260f35b63c33878588114156102e05760006102a0526000546102c0526102c05180602002602001599059016000905281815260208101905090506102e0525b6102c0516102a05112156102c357604060405990590160009052600181526102a051816020015280905020546102a0516020026102e051015260016102a051016102a05261027a565b6102e05160206040820352602060208203510260400160408203f3505b63175c63228114156102fa57600054610380526020610380f35b63d861f2b4811415610336576004356103a052604060405990590160009052600181526103a051816020015280905020546103c05260206103c0f35b63b0dab01f81141561044f57600435610400526024356104205260443561044052606435610460526000606060605990590160009052600081526104005181602001526001816040015280905020541415610441576104205160606060599059016000905260008152610400518160200152600081604001528090502055610440516060606059905901600090526000815261040051816020015260018160400152809050205561046051606060605990590160009052600081526104005181602001526006816040015280905020556104005160406040599059016000905260018152600054816020015280905020556001600054016000556001610520526020610520f361044e565b6000610540526020610540f35b5b63aac2ffb58114156104b95760043560405260016060606059905901600090526000815260405181602001526002816040015280905020540160606060599059016000905260008152604051816020015260028160400152809050205560016105a05260206105a0f35b637265802d811415610507576004356040526024356105c0526105c0516060606059905901600090526000815260405181602001526002816040015280905020556001610600526020610600f35b63c5476efe811415610571576004356040526001606060605990590160009052600081526040518160200152600081604001528090502054016060606059905901600090526000815260405181602001526000816040015280905020556001610660526020610660f35b63c551e31e81141561063b576004356040526024356106805260606060599059016000905260008152604051816020015260058160400152809050205461012052610680516080608059905901600090526000815260405181602001526004816040015261012051816060015280905020556001606060605990590160009052600081526040518160200152600581604001528090502054016060606059905901600090526000815260405181602001526005816040015280905020556001610720526020610720f35b633d90504581141561067c57600435604052606060605990590160009052600081526040518160200152600381604001528090502054610740526020610740f35b631cda01ef8114156106e65760043560405260016060606059905901600090526000815260405181602001526003816040015280905020540160606060599059016000905260008152604051816020015260038160400152809050205560016107c05260206107c0f35b63c286273a811415610734576004356040526024356107e0526107e0516060606059905901600090526000815260405181602001526003816040015280905020556001610820526020610820f35b50 # noqa: E501 - contract_9 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE8(offset=0x83F, value=0x0) - + Op.DIV( - Op.CALLDATALOAD(offset=0x0), - 0x100000000000000000000000000000000000000000000000000000000, + + Op.CALLDATACOPY( + dest_offset=Op.DUP3, offset=0x4, size=Op.CALLDATASIZE ) - + Op.JUMPI( - pc=Op.PUSH2[0x66], condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x7A66D7CA)) + + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) + + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) + + Op.MSTORE( + offset=0x2540, + value=Op.ADD(Op.ADD(Op.DUP3, 0x20), Op.CALLDATALOAD(offset=0x44)), ) - + Op.MSTORE(offset=0x40, value=Op.CALLDATALOAD(offset=0x4)) - + Op.PUSH1[0x60] * 2 + + Op.POP + + Op.PUSH1[0xA0] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -6571,40 +5674,49 @@ def test_block504980( + Op.SWAP1 + Op.MSTORE + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x40)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x14) + + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x0) + Op.DUP1 + Op.SWAP1 + Op.POP - + Op.MSTORE(offset=0x60, value=Op.SLOAD(key=Op.SHA3)) - + Op.RETURN(offset=0x60, size=0x20) + + Op.SHA3 + + Op.MUL(0x20, Op.MLOAD(offset=Op.SUB(Op.MLOAD(offset=0x2540), 0x20))) + + Op.DIV(Op.DUP2, 0x20) + + Op.PUSH1[0x0] + Op.JUMPDEST - + Op.JUMPI( - pc=Op.PUSH2[0xA5], condition=Op.ISZERO(Op.EQ(Op.DUP2, 0xC60409C6)) + + Op.JUMPI(pc=0x2175, condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.DUP2))) + + Op.SSTORE( + key=Op.ADD(Op.DUP3, Op.DUP5), + value=Op.MLOAD( + offset=Op.ADD(Op.MLOAD(offset=0x2540), Op.MUL(0x20, Op.DUP1)) + ), ) - + Op.MSTORE(offset=0x40, value=Op.CALLDATALOAD(offset=0x4)) - + Op.PUSH1[0x60] * 2 - + Op.MSIZE - + Op.SWAP1 - + Op.MSIZE - + Op.ADD - + Op.PUSH1[0x0] - + Op.SWAP1 - + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x40)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x1) - + Op.DUP1 + + Op.ADD(Op.DUP2, 0x1) + Op.SWAP1 + Op.POP - + Op.MSTORE(offset=0xA0, value=Op.SLOAD(key=Op.SHA3)) - + Op.RETURN(offset=0xA0, size=0x20) + + Op.JUMP(pc=0x2154) + Op.JUMPDEST - + Op.JUMPI( - pc=Op.PUSH2[0xE4], condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x18633576)) + + Op.SSTORE( + key=Op.ADD(Op.DUP3, Op.DUP5), + value=Op.AND( + Op.MLOAD( + offset=Op.ADD( + Op.MLOAD(offset=0x2540), Op.MUL(0x20, Op.DUP2) + ) + ), + Op.SUB( + 0x0, Op.EXP(0x100, Op.SUB(0x20, Op.MOD(Op.DUP4, 0x20))) + ), + ), ) - + Op.MSTORE(offset=0x40, value=Op.CALLDATALOAD(offset=0x4)) - + Op.PUSH1[0x60] * 2 + + Op.POP * 4 + + Op.MSTORE(offset=0x2600, value=0x1) + + Op.RETURN(offset=0x2600, size=0x20) + + Op.JUMPDEST + + Op.JUMPI(pc=0x2269, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x83FD77F0))) + + Op.CALLDATASIZE + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -6612,18 +5724,17 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x40)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x2) - + Op.DUP1 - + Op.SWAP1 + + Op.CALLDATACOPY( + dest_offset=Op.DUP3, offset=0x4, size=Op.CALLDATASIZE + ) + + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) + + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) + + Op.MSTORE( + offset=0x2620, + value=Op.ADD(Op.ADD(Op.DUP3, 0x20), Op.CALLDATALOAD(offset=0x44)), + ) + Op.POP - + Op.MSTORE(offset=0xE0, value=Op.SLOAD(key=Op.SHA3)) - + Op.RETURN(offset=0xE0, size=0x20) - + Op.JUMPDEST - + Op.JUMPI(pc=0x1BC, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0xB3903C8A))) - + Op.MSTORE(offset=0x40, value=Op.CALLDATALOAD(offset=0x4)) - + Op.PUSH1[0x60] * 2 + + Op.PUSH1[0xA0] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -6632,74 +5743,54 @@ def test_block504980( + Op.SWAP1 + Op.MSTORE + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x40)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x5) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x15) + + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x0) + Op.DUP1 + Op.SWAP1 + Op.POP - + Op.MSTORE(offset=0x120, value=Op.SLOAD(key=Op.SHA3)) - + Op.MLOAD(offset=0x120) - + Op.ADD(0x20, Op.MUL(0x20, Op.DUP1)) - + Op.MSIZE - + Op.SWAP1 - + Op.MSIZE - + Op.ADD - + Op.PUSH1[0x0] - + Op.SWAP1 - + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=Op.DUP2) - + Op.ADD(Op.DUP2, 0x20) - + Op.SWAP1 - + Op.POP - + Op.SWAP1 - + Op.POP - + Op.PUSH2[0x160] - + Op.MSTORE - + Op.MSTORE(offset=0x1C0, value=0x0) + + Op.SHA3 + + Op.MUL(0x20, Op.MLOAD(offset=Op.SUB(Op.MLOAD(offset=0x2620), 0x20))) + + Op.DIV(Op.DUP2, 0x20) + + Op.PUSH1[0x0] + Op.JUMPDEST - + Op.JUMPI( - pc=0x19F, - condition=Op.ISZERO( - Op.SLT(Op.MLOAD(offset=0x1C0), Op.MLOAD(offset=0x120)) + + Op.JUMPI(pc=0x223B, condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.DUP2))) + + Op.SSTORE( + key=Op.ADD(Op.DUP3, Op.DUP5), + value=Op.MLOAD( + offset=Op.ADD(Op.MLOAD(offset=0x2620), Op.MUL(0x20, Op.DUP1)) ), ) - + Op.PUSH1[0x80] * 2 - + Op.MSIZE - + Op.SWAP1 - + Op.MSIZE - + Op.ADD - + Op.PUSH1[0x0] - + Op.SWAP1 - + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x40)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x4) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=Op.MLOAD(offset=0x1C0)) - + Op.DUP1 + + Op.ADD(Op.DUP2, 0x1) + Op.SWAP1 + Op.POP - + Op.MSTORE( - offset=Op.ADD( - Op.MLOAD(offset=0x160), Op.MUL(0x20, Op.MLOAD(offset=0x1C0)) - ), - value=Op.SLOAD(key=Op.SHA3), - ) - + Op.MSTORE(offset=0x1C0, value=Op.ADD(Op.MLOAD(offset=0x1C0), 0x1)) - + Op.JUMP(pc=0x147) + + Op.JUMP(pc=0x221A) + Op.JUMPDEST - + Op.MLOAD(offset=0x160) - + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x40), value=0x20) - + Op.RETURN( - offset=Op.SUB(Op.DUP3, 0x40), - size=Op.ADD( - 0x40, Op.MUL(Op.MLOAD(offset=Op.SUB(Op.DUP3, 0x20)), 0x20) + + Op.SSTORE( + key=Op.ADD(Op.DUP3, Op.DUP5), + value=Op.AND( + Op.MLOAD( + offset=Op.ADD( + Op.MLOAD(offset=0x2620), Op.MUL(0x20, Op.DUP2) + ) + ), + Op.SUB( + 0x0, Op.EXP(0x100, Op.SUB(0x20, Op.MOD(Op.DUP4, 0x20))) + ), ), ) - + Op.POP + + Op.POP * 4 + + Op.MSTORE(offset=0x26E0, value=0x1) + + Op.RETURN(offset=0x26E0, size=0x20) + Op.JUMPDEST - + Op.JUMPI(pc=0x1FD, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x6824E0FB))) - + Op.MSTORE(offset=0x40, value=Op.CALLDATALOAD(offset=0x4)) - + Op.PUSH1[0x60] * 2 + + Op.JUMPI(pc=0x22D5, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x59462205))) + + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) + + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) + + Op.MSTORE(offset=0x3C0, value=Op.CALLDATALOAD(offset=0x44)) + + Op.MSTORE(offset=0x2700, value=Op.CALLDATALOAD(offset=0x64)) + + Op.MLOAD(offset=0x2700) + + Op.PUSH1[0xA0] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -6708,17 +5799,25 @@ def test_block504980( + Op.SWAP1 + Op.MSTORE + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x40)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x5) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) + + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x80)) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x4) + + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=Op.MLOAD(offset=0x3C0)) + Op.DUP1 + Op.SWAP1 + Op.POP - + Op.MSTORE(offset=0x220, value=Op.SLOAD(key=Op.SHA3)) - + Op.RETURN(offset=0x220, size=0x20) + + Op.SHA3 + + Op.SSTORE + + Op.MSTORE(offset=0x2740, value=0x1) + + Op.RETURN(offset=0x2740, size=0x20) + Op.JUMPDEST - + Op.JUMPI(pc=0x23E, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x3DB16BE3))) - + Op.MSTORE(offset=0x40, value=Op.CALLDATALOAD(offset=0x4)) - + Op.PUSH1[0x60] * 2 + + Op.JUMPI(pc=0x2448, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0xBB8E4196))) + + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) + + Op.MSTORE(offset=0x2760, value=Op.CALLDATALOAD(offset=0x24)) + + Op.MSTORE(offset=0x2780, value=Op.CALLDATALOAD(offset=0x44)) + + Op.MSTORE(offset=0x27A0, value=0x0) + + Op.JUMPDEST + + Op.PUSH1[0x80] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -6727,42 +5826,22 @@ def test_block504980( + Op.SWAP1 + Op.MSTORE + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x40)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x6) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) + + Op.MSTORE( + offset=Op.ADD(0x40, Op.DUP2), + value=Op.SUB(Op.MLOAD(offset=0x2760), 0x1), + ) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x0) + Op.DUP1 + Op.SWAP1 + Op.POP - + Op.MSTORE(offset=0x260, value=Op.SLOAD(key=Op.SHA3)) - + Op.RETURN(offset=0x260, size=0x20) - + Op.JUMPDEST - + Op.JUMPI(pc=0x2E0, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0xC3387858))) - + Op.MSTORE(offset=0x2A0, value=0x0) - + Op.MSTORE(offset=0x2C0, value=Op.SLOAD(key=0x0)) - + Op.MLOAD(offset=0x2C0) - + Op.ADD(0x20, Op.MUL(0x20, Op.DUP1)) - + Op.MSIZE - + Op.SWAP1 - + Op.MSIZE - + Op.ADD - + Op.PUSH1[0x0] - + Op.SWAP1 - + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=Op.DUP2) - + Op.ADD(Op.DUP2, 0x20) - + Op.SWAP1 - + Op.POP - + Op.SWAP1 - + Op.POP - + Op.PUSH2[0x2E0] - + Op.MSTORE - + Op.JUMPDEST + Op.JUMPI( - pc=0x2C3, + pc=0x243B, condition=Op.ISZERO( - Op.SLT(Op.MLOAD(offset=0x2A0), Op.MLOAD(offset=0x2C0)) + Op.SLT(Op.MLOAD(offset=0x27A0), Op.SLOAD(key=Op.SHA3)) ), ) - + Op.PUSH1[0x40] * 2 + + Op.PUSH1[0xA0] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -6770,59 +5849,21 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x1) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x2A0)) - + Op.DUP1 - + Op.SWAP1 - + Op.POP + + Op.MSTORE(offset=Op.DUP2, value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) + Op.MSTORE( - offset=Op.ADD( - Op.MLOAD(offset=0x2E0), Op.MUL(0x20, Op.MLOAD(offset=0x2A0)) - ), - value=Op.SLOAD(key=Op.SHA3), + offset=Op.ADD(0x40, Op.DUP2), + value=Op.SUB(Op.MLOAD(offset=0x2760), 0x1), ) - + Op.MSTORE(offset=0x2A0, value=Op.ADD(Op.MLOAD(offset=0x2A0), 0x1)) - + Op.JUMP(pc=0x27A) - + Op.JUMPDEST - + Op.MLOAD(offset=0x2E0) - + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x40), value=0x20) - + Op.RETURN( - offset=Op.SUB(Op.DUP3, 0x40), - size=Op.ADD( - 0x40, Op.MUL(Op.MLOAD(offset=Op.SUB(Op.DUP3, 0x20)), 0x20) - ), + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x1) + + Op.MSTORE( + offset=Op.ADD(0x80, Op.DUP2), value=Op.MLOAD(offset=0x27A0) ) - + Op.POP - + Op.JUMPDEST - + Op.JUMPI(pc=0x2FA, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x175C6322))) - + Op.MSTORE(offset=0x380, value=Op.SLOAD(key=0x0)) - + Op.RETURN(offset=0x380, size=0x20) - + Op.JUMPDEST - + Op.JUMPI(pc=0x336, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0xD861F2B4))) - + Op.MSTORE(offset=0x3A0, value=Op.CALLDATALOAD(offset=0x4)) - + Op.PUSH1[0x40] * 2 - + Op.MSIZE - + Op.SWAP1 - + Op.MSIZE - + Op.ADD - + Op.PUSH1[0x0] - + Op.SWAP1 - + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x1) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x3A0)) + Op.DUP1 + Op.SWAP1 + Op.POP - + Op.MSTORE(offset=0x3C0, value=Op.SLOAD(key=Op.SHA3)) - + Op.RETURN(offset=0x3C0, size=0x20) - + Op.JUMPDEST - + Op.JUMPI(pc=0x44F, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0xB0DAB01F))) - + Op.MSTORE(offset=0x400, value=Op.CALLDATALOAD(offset=0x4)) - + Op.MSTORE(offset=0x420, value=Op.CALLDATALOAD(offset=0x24)) - + Op.MSTORE(offset=0x440, value=Op.CALLDATALOAD(offset=0x44)) - + Op.MSTORE(offset=0x460, value=Op.CALLDATALOAD(offset=0x64)) - + Op.PUSH1[0x0] - + Op.PUSH1[0x60] * 2 + + Op.SLOAD(key=Op.SHA3) + + Op.PUSH1[0xA0] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -6831,15 +5872,12 @@ def test_block504980( + Op.SWAP1 + Op.MSTORE + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x400)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x1) - + Op.DUP1 - + Op.SWAP1 - + Op.POP - + Op.SLOAD(key=Op.SHA3) - + Op.JUMPI(pc=0x441, condition=Op.ISZERO(Op.EQ)) - + Op.MLOAD(offset=0x420) - + Op.PUSH1[0x60] * 2 + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) + + Op.MSTORE( + offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x2780) + ) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x1) + + Op.PUSH1[0x80] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -6848,32 +5886,22 @@ def test_block504980( + Op.SWAP1 + Op.MSTORE + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x400)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) + + Op.MSTORE( + offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x2780) + ) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x0) + Op.DUP1 + Op.SWAP1 + Op.POP - + Op.SHA3 - + Op.SSTORE - + Op.MLOAD(offset=0x440) - + Op.PUSH1[0x60] * 2 - + Op.MSIZE - + Op.SWAP1 - + Op.MSIZE - + Op.ADD - + Op.PUSH1[0x0] - + Op.SWAP1 - + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x400)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x1) + + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=Op.SLOAD(key=Op.SHA3)) + Op.DUP1 + Op.SWAP1 + Op.POP + Op.SHA3 + Op.SSTORE - + Op.MLOAD(offset=0x460) - + Op.PUSH1[0x60] * 2 + + Op.PUSH1[0x1] + + Op.PUSH1[0x80] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -6882,15 +5910,17 @@ def test_block504980( + Op.SWAP1 + Op.MSTORE + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x400)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x6) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) + + Op.MSTORE( + offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x2780) + ) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x0) + Op.DUP1 + Op.SWAP1 + Op.POP - + Op.SHA3 - + Op.SSTORE - + Op.MLOAD(offset=0x400) - + Op.PUSH1[0x40] * 2 + + Op.SLOAD(key=Op.SHA3) + + Op.ADD + + Op.PUSH1[0x80] * 2 + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -6898,25 +5928,109 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x1) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.SLOAD(key=0x0)) + + Op.MSTORE(offset=Op.DUP2, value=0x0) + + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) + + Op.MSTORE( + offset=Op.ADD(0x40, Op.DUP2), value=Op.MLOAD(offset=0x2780) + ) + + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=0x0) + Op.DUP1 + Op.SWAP1 + Op.POP + Op.SHA3 + Op.SSTORE - + Op.SSTORE(key=0x0, value=Op.ADD(Op.SLOAD(key=0x0), 0x1)) - + Op.MSTORE(offset=0x520, value=0x1) - + Op.RETURN(offset=0x520, size=0x20) - + Op.JUMP(pc=0x44E) + + Op.MSTORE(offset=0x27A0, value=Op.ADD(Op.MLOAD(offset=0x27A0), 0x1)) + + Op.JUMP(pc=0x22FC) + Op.JUMPDEST - + Op.MSTORE(offset=0x540, value=0x0) - + Op.RETURN(offset=0x540, size=0x20) - + Op.JUMPDEST * 2 - + Op.JUMPI(pc=0x4B9, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0xAAC2FFB5))) - + Op.MSTORE(offset=0x40, value=Op.CALLDATALOAD(offset=0x4)) - + Op.PUSH1[0x1] - + Op.PUSH1[0x60] * 2 + + Op.MSTORE(offset=0x2880, value=0x1) + + Op.RETURN(offset=0x2880, size=0x20) + + Op.JUMPDEST + + Op.POP, + storage={ + 0x65D5EFDFCC0FBA693DC9E467F633097FFDC97401901463AD0E28855486D1EDF: 0xB9D69098A6ACFE0C6411BCAAF430F78D363A9ADC32B78BC2E15CCD6E883E9784, # noqa: E501 + 0x12643FF300762717D27EFB567B82C65560D7B43249D908504E5510863AB82AAC: 0x154CF60E137C594516A065149610B6A3989396A42581D5FD8919E711C55DA225, # noqa: E501 + 0x1489023D18C5D10427C4AA8DC726E840EB5AE7F604A8E9243C61634FB009E4D7: 5, # noqa: E501 + 0x1489023D18C5D10427C4AA8DC726E840EB5AE7F604A8E9243C61634FB009E4D8: contract_1, # noqa: E501 + 0x19EFB13D6576359514ACE5211988A8D51379FA88CCD2B886B409F842B13D7932: 0xC849CC595B452D11C206D2EB8CDFA06DE211E3FF19EE0E0276DC857C05D4FE, # noqa: E501 + 0x1B37E91BF8580C7C6BCF8CDFF25C7ED78180124A94AF6F30C40D476A3D079AD6: 0xABA4CD295118A482A0A62579E35E4BA5BDD76146CC9E4D96172FCE8BE8977AB4, # noqa: E501 + 0x2BF9FD8FACDD6FD9C84657F5AD7381A5AECF670CDA68CB3C5829B6532C865506: 0x53098A1D111586DBCC0D051846284F5803C63C313E7F7E6D84430435D11D4C50, # noqa: E501 + 0x3111BFD25728C0ADFAD0F8C1AD79CB1B91167267DECA98DE88F156ED25CAEEDC: 0xAD393086F30B49511B08FDD27AC78810B084C7CD7DE6AC354F614C18EA9E7DF4, # noqa: E501 + 0x3379E7AE125C5C5D623D1D993C1459B61D6723B1C30D1AA026C48F6A6155B8EA: 0x8C4183732567A99A8A718E363391E102532F9A640E42968CF2354D9ACC908BB0, # noqa: E501 + 0x34CABE0C7E64A2CAA93FD8D6A0DEFC07ACB9D44B13430FA3AE9282FFFD40DEE2: contract_1, # noqa: E501 + 0x34CABE0C7E64A2CAA93FD8D6A0DEFC07ACB9D44B13430FA3AE9282FFFD40DEE3: contract_1, # noqa: E501 + 0x34CABE0C7E64A2CAA93FD8D6A0DEFC07ACB9D44B13430FA3AE9282FFFD40DEE4: contract_1, # noqa: E501 + 0x34CABE0C7E64A2CAA93FD8D6A0DEFC07ACB9D44B13430FA3AE9282FFFD40DEE5: contract_1, # noqa: E501 + 0x39050607FE892059A6344AB0F594F382FB0B345CAB373497246DBE86FE7E14E7: 0x2B3BCA833E482737E7E47B1568E6F890F8E1666490D38FE130ABD6F0CCB109CF, # noqa: E501 + 0x417BE8BC6791807372E0222A350BB8A5D67BBC8D7595C301D8A5A8372CFDCEF1: 0xABD4971B4605A7155802F70E08298B1CEB0E4E4EACCCCD348F77A77227F73A7F, # noqa: E501 + 0x41E9A54B3EE0C276AA076BABB161DE12B0F8916B47F8F6FB85CC387CF34696DD: 0x22F2F444EBDA9D2913FFEF5059B039EC9B5876AA71821991C2515BF79F64935E, # noqa: E501 + 0x45CEB8DA6FB8936592D3BCE4883F1A6A34D636F559E0A1070A5802A65AC39BD5: 0x57A5122FF3BF737B0DE0F9F08011A8648C19E43FF071FB7086234723C9383F1F, # noqa: E501 + 0x4AA6B934608A45C8F53A945C05DDEE1814A3B9F63A048FC7AD3D47E67156F024: 0xD03862BECEDADA67B4825A0238F3E67495CCB595CD7D08F1BD5D3160644B9299, # noqa: E501 + 0x4B8B58F0B0E326A5907D1A810E5FF31E05B4CAB45125B776DB8577E7DBC46BCE: 0x2F0000000000000000, # noqa: E501 + 0x4C33460347337BFC7DF08BF182988301B7B426A27A67F1C6C634F637C60E87AC: 0xBAB4AB2AD4EAFE7C84EF6A8CD69157D9CE6B843793A2CD0877B8E91F63CB2D4D, # noqa: E501 + 0x58DA0C0C256BBA101CE36FAD8BF838717A57E6AB850A191DC9C09DA9CE56BF1B: 5, # noqa: E501 + 0x5CB38B16DB1D632086D4AF695DE7F5F242A6E40947067F96EDD566FE2AC438EF: 0x6D0BE832B2007EA28CDA705B73922CBF9794C5A25B89BD2F28B7347ED2B96C86, # noqa: E501 + 0x64A9621CC4BA92BF738C55010C609DFAA3972A1138C30B5ADCEF1BA2363B360E: 0xD7953BFE8CB591F129FD0862A9E9C421151E2B5831560FF5215D23F751364B35, # noqa: E501 + 0x696664A5F0AB5ACD9304A377FB684F2D3FE6BB60B8A95CB2BDBB57DB767E7A84: 0x154CF60E137C594516A065149610B6A3989396A42581D5FD8919E711C55DA225, # noqa: E501 + 0x69AD1D19E617936ABDF05133BF268DC8CED6B518F22B249B5860967D07006487: 0x8C803B48B383DDABD1B3AFE858EFB48C203229B7317DD76149DDDAB4253B858A, # noqa: E501 + 0x70B3BF53996FAC325EB67608A4EEB0CD0B55DEF6255D7ED42AD28EC07238B5D6: 0x45E9723E9232B37207ECAC1C97B8647D053625A578D450F7456280B2FF8EFC27, # noqa: E501 + 0x7A9DCEE62E3E02CC8E020F372DF2EFDEB835F091C1EF1DBE221072D1095AABD2: 0x2F0000000000000000, # noqa: E501 + 0x7E4D8C0F6D8ABB4CE1AE45B254046ACEEDABFA9548851B8B5D3E2C0637C985FD: 11, # noqa: E501 + 0x7E95F3CC3315D289C52253BAABA29B1B00C86816E6B788D50795279A8BAA00DB: 0x45E9723E9232B37207ECAC1C97B8647D053625A578D450F7456280B2FF8EFC27, # noqa: E501 + 0x8DA187157087529EE4E9C381F8E3149C56ACF3BDFDA29B8B9B4532F24B83F5FE: 0x8C4183732567A99A8A718E363391E102532F9A640E42968CF2354D9ACC908BB0, # noqa: E501 + 0x9001F91DDAEF87BC067886E874C0749998C9B58B2EC8472CA014CA8B55F88578: 0xFB76974EEFCA01F33FB38646C2D3C1536F1A763D7AFF53AB7F877D4C5EA7FD0, # noqa: E501 + 0x9ED0CEDD2A9A78D949F40019F53D10031AEF6ED342C97E01FC03B481EE56B3CB: contract_4, # noqa: E501 + 0x9FDDF1DB29CAA5C1239EDD86E9E0835CDFE41F7253EC78F62D3DA8558D6F3CD7: 0x104EEF8FA35BF39F677D81855BC0B9F42317F32792E98E95E4DF441DEB634211, # noqa: E501 + 0xA0953566119395C11186B334805FC1A16175ECAC0ECC93AE0322264F0DC2E40D: 0x10C5A00466AB7C0ADAE1E93537CC275EA8CF23FF509D5466A1FD6F56B0A61D1B, # noqa: E501 + 0xAA0DBF8241EF3AE07C254E6869E84895BA2BE0779A7F261C8308A3114BE1C54A: contract_4, # noqa: E501 + 0xAFFE808B495D13A14391CE5F27C211C36DA12826969CD7841EE0D81E5B900E2D: contract_1, # noqa: E501 + 0xAFFE808B495D13A14391CE5F27C211C36DA12826969CD7841EE0D81E5B900E2E: contract_1, # noqa: E501 + 0xB4A2B68C48EF78AEB641EE538FAD51781022FD23ED9D93D211017DB6A02376CE: 0xFBC06642245CF2FED7ED46EA0A18A7185830B6F2C4E0A4CA55246041E8BFA72, # noqa: E501 + 0xBA8D79990898383919E437F2458B93B340072C89D963808D9E04F51858E3C5EC: 0x41D2CAC534D90A0DBD199117481A63E32CC11411DAB2EAA36C91C0EEC62823CF, # noqa: E501 + 0xBB3BC1A2015123750DF57D4CEFF7E28CB847910B79B34841DE905B59A8BB177C: 0x734417EB19E1873427257F1EA1594748C16CFA866A7B7CF896E281F2EC774A40, # noqa: E501 + 0xBF30CDCB83AB2BD5F5EEE691FFA4107B58B75BA6A5C2E6754D4C5C0437F2876C: 5, # noqa: E501 + 0xC2A26B80067FC36B8268B0D5B31AFFF953FA91CEBEA39F191E2763D6E71259B9: 0x2A43C547FE8DE2400D2A141016550E8BAE058D41164247C099E787DDD40E789, # noqa: E501 + 0xC98339D275EEF16E0562CA8521212CEF61AA0F39B12E2A27502AAA97A9E5E70F: 0x5A3DE2A5C268CDB75F4B01507AA80C4E4A1BC67BCB0DF265BBB00060774E5978, # noqa: E501 + 0xCBD6AE6BD61BC9270EC836F1919B3268113ABE076C7FEBFDB8CF573B199CE9A9: 0xF402B17773C1F7534034EE58DC0D2A3421470A7A67DAF4FA790DC3B420EEF790, # noqa: E501 + 0xD2C8CBB562FCCD0C9A3D0D491B7F65CC6A89856498F933427D9D21B745B9D50E: 0x3625A26FDB7B747501F1EE2500F98C49D9CD290383A21254587C3C49D2805321, # noqa: E501 + 0xD66F52A4E24585238CCC03443B2FDB8B2B100259BC7260F39097C7C339211FFE: 0x1641851904381915C86B60DF7E288896FB5F8EBAD65D594829FB9F2B59CD1DA6, # noqa: E501 + 0xD8F720C05A5526DD621D1831AE122ABDDD3DFECD8B63B0BA4C92FA7B2ADE44FF: 0xAD393086F30B49511B08FDD27AC78810B084C7CD7DE6AC354F614C18EA9E7DF4, # noqa: E501 + 0xDC22D3171B82817C910BBEAC1F8B50C8DE99F8C524F172AEF3491981BD5ED4FB: 0x94B8CBA4EA090D1C392FBC94B82FB9EF9F468A15BBC537F4D051776F4D422B1D, # noqa: E501 + 0xDCE8ADBDEFA929DBE60245F359446DB4174C62824B42E5D4D9E7B834B4D61DEB: 0x2C9069845B2E74C577FF1CD18DF6BC452805F527A9EE91FD4A059E0408B5DEA6, # noqa: E501 + 0xDD9493073DB9E42FD955E834C89A74089F99196186EE0B2688124989BE00D196: contract_1, # noqa: E501 + 0xDD9493073DB9E42FD955E834C89A74089F99196186EE0B2688124989BE00D197: contract_1, # noqa: E501 + 0xDD9493073DB9E42FD955E834C89A74089F99196186EE0B2688124989BE00D198: contract_1, # noqa: E501 + 0xDD9493073DB9E42FD955E834C89A74089F99196186EE0B2688124989BE00D199: contract_1, # noqa: E501 + 0xDD9493073DB9E42FD955E834C89A74089F99196186EE0B2688124989BE00D19A: contract_1, # noqa: E501 + 0xE54F074C81BFA60B5BF413934C108086298B77291560EDFEEAD8AA1232E95236: 0xF40AAA24323C9E6983CCFFAFEEBE4B426509B901E8C98B8A40D881804804E6B, # noqa: E501 + 0xE66C0F55F66C752EDF73027D45B7B1AE729AE15E1C67C362DBC6F25EDF8D76FF: contract_1, # noqa: E501 + 0xE983D899F807BBCB5881F2DDF875B2EBB5CB8A7A4E77A8C98A40AAAE6A468735: 0x6D0BE832B2007EA28CDA705B73922CBF9794C5A25B89BD2F28B7347ED2B96C86, # noqa: E501 + 0xED7D6E2D40FBD5046412FFAD1C45B63D87C6197182D6DBC66BB1E5C6E4DED5C7: 0xABA4CD295118A482A0A62579E35E4BA5BDD76146CC9E4D96172FCE8BE8977AB4, # noqa: E501 + 0xF043B5A1952847579F233706A8F130889A484D2DA3E574FDD5859F05AAF52111: contract_2, # noqa: E501 + 0xF40F4CFDACB62DD799F36B580349FAC1F4A4CAF8DD3383CC387C35ADB6574E21: 0x2F0000000000000000, # noqa: E501 + 0xF60FA6E25E9028A6DC6B26BBC1EADAE3DA157DF0D1D6F6628BC33CAD68A7E455: 0x2D7D00618C059EBE40593B9497C633E1AC6E161DADBD5BB734C2663CD3E8A8E1, # noqa: E501 + 0xFD280AC5182D5B2366122F38ACFA6DC471240FFDE9D5FEB985CE7A2325C960E7: contract_3, # noqa: E501 + }, + nonce=0, + address=Address(0x0EA65418D7BF32680F55572C943A94B590804998), # noqa: E501 + ) + # Source: raw + # 0x600061031f537c01000000000000000000000000000000000000000000000000000000006000350473c9ae5868651bf7b7db6e360217db49ce4e69c07e602052730ea65418d7bf32680f55572c943a94b5908049986040526327138bfb81141561038d57600435608052601c6044599059016000905201637a66d7ca601c8203526080516004820152602060e06024836000602051602d5a03f15060e051905060a052601c604459905901600090520163c60409c6601c820352608051600482015260206101206024836000602051602d5a03f150610120519050430561010052600061014052600061016052600061018052600260a051016101005112151561010a576001610140525b60006101a052610100516101c0525b606461010051016101c051121561018457601c606459905901600090520163cc1c944e601c82035260805160048201526101c051602482015260206101e06044836000604051602d5a03f1506101e05190506101a051016101a05260016101c051016101c052610119565b6005601c606459905901600090520163cc1c944e601c820352608051600482015260a051602482015260206102006044836000604051602d5a03f1506102005190501280156101d357806101db565b600a6101a051125b9050156101eb57610140516101ee565b60005b1561033657601c604459905901600090520163c5476efe601c820352608051600482015260206102406024836000602051602d5a03f15061024051905050601c6064599059016000905201637265802d601c82035260805160048201526000602482015260206102606044836000602051602d5a03f15061026051905050601c606459905901600090520163c286273a601c82035260805160048201526000602482015260206102806044836000602051602d5a03f15061028051905050601c6044599059016000905201637a66d7ca601c820352608051600482015260206102a06024836000602051602d5a03f1506102a051905060a052601c608459905901600090520163bb8e4196601c820352608051600482015260a051602482015261010051604482015260206102c06064836000604051602d5a03f1506102c051905050610343565b6001610160526001610180525b61014051156103555761016051610358565b60005b156103665761018051610369565b60005b1561037f5760016102e05260206102e0f361038c565b6000610300526020610300f35b5b50 # noqa: E501 + contract_6 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE8(offset=0x31F, value=0x0) + + Op.DIV( + Op.CALLDATALOAD(offset=0x0), + 0x100000000000000000000000000000000000000000000000000000000, + ) + + Op.MSTORE( + offset=0x20, value=0xC9AE5868651BF7B7DB6E360217DB49CE4E69C07E + ) + + Op.MSTORE( + offset=0x40, value=0xEA65418D7BF32680F55572C943A94B590804998 + ) + + Op.JUMPI(pc=0x38D, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x27138BFB))) + + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x4)) + + Op.PUSH1[0x1C] + + Op.PUSH1[0x44] + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -6924,15 +6038,27 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x40)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x2) - + Op.DUP1 + + Op.ADD + + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0x7A66D7CA) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0x80)) + + Op.POP( + Op.CALL( + gas=Op.SUB(Op.GAS, 0x2D), + address=Op.MLOAD(offset=0x20), + value=0x0, + args_offset=Op.DUP4, + args_size=0x24, + ret_offset=0xE0, + ret_size=0x20, + ) + ) + + Op.MLOAD(offset=0xE0) + Op.SWAP1 + Op.POP - + Op.SLOAD(key=Op.SHA3) - + Op.ADD - + Op.PUSH1[0x60] * 2 + + Op.PUSH1[0xA0] + + Op.MSTORE + + Op.PUSH1[0x1C] + + Op.PUSH1[0x44] + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -6940,22 +6066,55 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x40)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x2) - + Op.DUP1 + + Op.ADD + + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0xC60409C6) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0x80)) + + Op.POP( + Op.CALL( + gas=Op.SUB(Op.GAS, 0x2D), + address=Op.MLOAD(offset=0x20), + value=0x0, + args_offset=Op.DUP4, + args_size=0x24, + ret_offset=0x120, + ret_size=0x20, + ) + ) + + Op.MLOAD(offset=0x120) + Op.SWAP1 + Op.POP - + Op.SHA3 - + Op.SSTORE - + Op.MSTORE(offset=0x5A0, value=0x1) - + Op.RETURN(offset=0x5A0, size=0x20) + + Op.NUMBER + + Op.MSTORE(offset=0x100, value=Op.SDIV) + + Op.MSTORE(offset=0x140, value=0x0) + + Op.MSTORE(offset=0x160, value=0x0) + + Op.MSTORE(offset=0x180, value=0x0) + + Op.JUMPI( + pc=0x10A, + condition=Op.ISZERO( + Op.ISZERO( + Op.SLT( + Op.MLOAD(offset=0x100), + Op.ADD(Op.MLOAD(offset=0xA0), 0x2), + ) + ) + ), + ) + + Op.MSTORE(offset=0x140, value=0x1) + Op.JUMPDEST - + Op.JUMPI(pc=0x507, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x7265802D))) - + Op.MSTORE(offset=0x40, value=Op.CALLDATALOAD(offset=0x4)) - + Op.MSTORE(offset=0x5C0, value=Op.CALLDATALOAD(offset=0x24)) - + Op.MLOAD(offset=0x5C0) - + Op.PUSH1[0x60] * 2 + + Op.MSTORE(offset=0x1A0, value=0x0) + + Op.MSTORE(offset=0x1C0, value=Op.MLOAD(offset=0x100)) + + Op.JUMPDEST + + Op.JUMPI( + pc=0x184, + condition=Op.ISZERO( + Op.SLT( + Op.MLOAD(offset=0x1C0), + Op.ADD(Op.MLOAD(offset=0x100), 0x64), + ) + ), + ) + + Op.PUSH1[0x1C] + + Op.PUSH1[0x64] + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -6963,21 +6122,32 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x40)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x2) - + Op.DUP1 + + Op.ADD + + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0xCC1C944E) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0x80)) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=Op.MLOAD(offset=0x1C0)) + + Op.POP( + Op.CALL( + gas=Op.SUB(Op.GAS, 0x2D), + address=Op.MLOAD(offset=0x40), + value=0x0, + args_offset=Op.DUP4, + args_size=0x44, + ret_offset=0x1E0, + ret_size=0x20, + ) + ) + + Op.MLOAD(offset=0x1E0) + Op.SWAP1 + Op.POP - + Op.SHA3 - + Op.SSTORE - + Op.MSTORE(offset=0x600, value=0x1) - + Op.RETURN(offset=0x600, size=0x20) + + Op.MLOAD(offset=0x1A0) + + Op.MSTORE(offset=0x1A0, value=Op.ADD) + + Op.MSTORE(offset=0x1C0, value=Op.ADD(Op.MLOAD(offset=0x1C0), 0x1)) + + Op.JUMP(pc=0x119) + Op.JUMPDEST - + Op.JUMPI(pc=0x571, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0xC5476EFE))) - + Op.MSTORE(offset=0x40, value=Op.CALLDATALOAD(offset=0x4)) - + Op.PUSH1[0x1] - + Op.PUSH1[0x60] * 2 + + Op.PUSH1[0x5] + + Op.PUSH1[0x1C] + + Op.PUSH1[0x64] + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -6985,15 +6155,42 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x40)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x0) + + Op.ADD + + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0xCC1C944E) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0x80)) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=Op.MLOAD(offset=0xA0)) + + Op.POP( + Op.CALL( + gas=Op.SUB(Op.GAS, 0x2D), + address=Op.MLOAD(offset=0x40), + value=0x0, + args_offset=Op.DUP4, + args_size=0x44, + ret_offset=0x200, + ret_size=0x20, + ) + ) + + Op.MLOAD(offset=0x200) + + Op.SWAP1 + + Op.POP + + Op.SLT + + Op.JUMPI(pc=0x1D3, condition=Op.ISZERO(Op.DUP1)) + Op.DUP1 + + Op.JUMP(pc=0x1DB) + + Op.JUMPDEST + + Op.SLT(Op.MLOAD(offset=0x1A0), 0xA) + + Op.JUMPDEST + Op.SWAP1 + Op.POP - + Op.SLOAD(key=Op.SHA3) - + Op.ADD - + Op.PUSH1[0x60] * 2 + + Op.JUMPI(pc=0x1EB, condition=Op.ISZERO) + + Op.MLOAD(offset=0x140) + + Op.JUMP(pc=0x1EE) + + Op.JUMPDEST + + Op.PUSH1[0x0] + + Op.JUMPDEST + + Op.JUMPI(pc=0x336, condition=Op.ISZERO) + + Op.PUSH1[0x1C] + + Op.PUSH1[0x44] + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -7001,21 +6198,25 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x40)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x0) - + Op.DUP1 - + Op.SWAP1 - + Op.POP - + Op.SHA3 - + Op.SSTORE - + Op.MSTORE(offset=0x660, value=0x1) - + Op.RETURN(offset=0x660, size=0x20) - + Op.JUMPDEST - + Op.JUMPI(pc=0x63B, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0xC551E31E))) - + Op.MSTORE(offset=0x40, value=Op.CALLDATALOAD(offset=0x4)) - + Op.MSTORE(offset=0x680, value=Op.CALLDATALOAD(offset=0x24)) - + Op.PUSH1[0x60] * 2 + + Op.ADD + + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0xC5476EFE) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0x80)) + + Op.POP( + Op.CALL( + gas=Op.SUB(Op.GAS, 0x2D), + address=Op.MLOAD(offset=0x20), + value=0x0, + args_offset=Op.DUP4, + args_size=0x24, + ret_offset=0x240, + ret_size=0x20, + ) + ) + + Op.MLOAD(offset=0x240) + + Op.SWAP1 + + Op.POP * 2 + + Op.PUSH1[0x1C] + + Op.PUSH1[0x64] + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -7023,15 +6224,26 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x40)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x5) - + Op.DUP1 + + Op.ADD + + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0x7265802D) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0x80)) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=0x0) + + Op.POP( + Op.CALL( + gas=Op.SUB(Op.GAS, 0x2D), + address=Op.MLOAD(offset=0x20), + value=0x0, + args_offset=Op.DUP4, + args_size=0x44, + ret_offset=0x260, + ret_size=0x20, + ) + ) + + Op.MLOAD(offset=0x260) + Op.SWAP1 - + Op.POP - + Op.MSTORE(offset=0x120, value=Op.SLOAD(key=Op.SHA3)) - + Op.MLOAD(offset=0x680) - + Op.PUSH1[0x80] * 2 + + Op.POP * 2 + + Op.PUSH1[0x1C] + + Op.PUSH1[0x64] + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -7039,17 +6251,26 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x40)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x4) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=Op.MLOAD(offset=0x120)) - + Op.DUP1 + + Op.ADD + + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0xC286273A) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0x80)) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=0x0) + + Op.POP( + Op.CALL( + gas=Op.SUB(Op.GAS, 0x2D), + address=Op.MLOAD(offset=0x20), + value=0x0, + args_offset=Op.DUP4, + args_size=0x44, + ret_offset=0x280, + ret_size=0x20, + ) + ) + + Op.MLOAD(offset=0x280) + Op.SWAP1 - + Op.POP - + Op.SHA3 - + Op.SSTORE - + Op.PUSH1[0x1] - + Op.PUSH1[0x60] * 2 + + Op.POP * 2 + + Op.PUSH1[0x1C] + + Op.PUSH1[0x44] + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -7057,15 +6278,27 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x40)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x5) - + Op.DUP1 + + Op.ADD + + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0x7A66D7CA) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0x80)) + + Op.POP( + Op.CALL( + gas=Op.SUB(Op.GAS, 0x2D), + address=Op.MLOAD(offset=0x20), + value=0x0, + args_offset=Op.DUP4, + args_size=0x24, + ret_offset=0x2A0, + ret_size=0x20, + ) + ) + + Op.MLOAD(offset=0x2A0) + Op.SWAP1 + Op.POP - + Op.SLOAD(key=Op.SHA3) - + Op.ADD - + Op.PUSH1[0x60] * 2 + + Op.PUSH1[0xA0] + + Op.MSTORE + + Op.PUSH1[0x1C] + + Op.PUSH1[0x84] + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -7073,20 +6306,83 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x40)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x5) - + Op.DUP1 + + Op.ADD + + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0xBB8E4196) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0x80)) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=Op.MLOAD(offset=0xA0)) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x44), value=Op.MLOAD(offset=0x100)) + + Op.POP( + Op.CALL( + gas=Op.SUB(Op.GAS, 0x2D), + address=Op.MLOAD(offset=0x40), + value=0x0, + args_offset=Op.DUP4, + args_size=0x64, + ret_offset=0x2C0, + ret_size=0x20, + ) + ) + + Op.MLOAD(offset=0x2C0) + Op.SWAP1 - + Op.POP - + Op.SHA3 - + Op.SSTORE - + Op.MSTORE(offset=0x720, value=0x1) - + Op.RETURN(offset=0x720, size=0x20) + + Op.POP * 2 + + Op.JUMP(pc=0x343) + Op.JUMPDEST - + Op.JUMPI(pc=0x67C, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x3D905045))) - + Op.MSTORE(offset=0x40, value=Op.CALLDATALOAD(offset=0x4)) - + Op.PUSH1[0x60] * 2 + + Op.MSTORE(offset=0x160, value=0x1) + + Op.MSTORE(offset=0x180, value=0x1) + + Op.JUMPDEST + + Op.JUMPI(pc=0x355, condition=Op.ISZERO(Op.MLOAD(offset=0x140))) + + Op.MLOAD(offset=0x160) + + Op.JUMP(pc=0x358) + + Op.JUMPDEST + + Op.PUSH1[0x0] + + Op.JUMPDEST + + Op.JUMPI(pc=0x366, condition=Op.ISZERO) + + Op.MLOAD(offset=0x180) + + Op.JUMP(pc=0x369) + + Op.JUMPDEST + + Op.PUSH1[0x0] + + Op.JUMPDEST + + Op.JUMPI(pc=0x37F, condition=Op.ISZERO) + + Op.MSTORE(offset=0x2E0, value=0x1) + + Op.RETURN(offset=0x2E0, size=0x20) + + Op.JUMP(pc=0x38C) + + Op.JUMPDEST + + Op.MSTORE(offset=0x300, value=0x0) + + Op.RETURN(offset=0x300, size=0x20) + + Op.JUMPDEST * 2 + + Op.POP, + nonce=0, + address=Address(0x142A6927CF0060133187BA8A8E74D641438F0C1C), # noqa: E501 + ) + # Source: raw + # 0x60006105df537c010000000000000000000000000000000000000000000000000000000060003504730ea65418d7bf32680f55572c943a94b59080499860205273e509e3a93beb1eba72f8cb8d25f93a85e2d54afb60405273c9ae5868651bf7b7db6e360217db49ce4e69c07e60605273f1562e1c0d0baa3ea746442bb7f11153fcf5cfda60805263546fdeb381141561038d5760043560c05260243560e05260443561010052606435610120526084356101405260026101005101601c606459905901600090520163e05dcb56601c82035260c051600482015260e05160248201526002610100510160408160200201599059016000905281602002604001816044856000602051602d5a03f150604081019050905090506000600161010051016020028201511415610250576060601c61014c59905901600090520163e365736b601c82035260c051600482015260e0516024820152601c6084599059016000905201632f300bee601c82035260026004820152600560248201526101005160448201528460408160200201599059016000905281602002604001816064856000608051602d5a03f1506040810190509050905060208103516020026020018360448401526020820360a4840152806101088401528084019350505081600401599059016000905260648160648460006004601cf16101fc57fe5b6064810192506101088201518080858260a487015160006004600a8705601201f161022357fe5b50808401935050808303602061028082846000602051602d5a03f15061028051905090509050905061037d565b6060601c61014c59905901600090520163e365736b601c82035260c051600482015260e0516024820152601c6084599059016000905201632f300bee601c820352600160016101005101602002850151036004820152600560248201526101005160448201528460408160200201599059016000905281602002604001816064856000608051602d5a03f1506040810190509050905060208103516020026020018360448401526020820360a4840152806101088401528084019350505081600401599059016000905260648160648460006004601cf161032d57fe5b6064810192506101088201518080858260a487015160006004600a8705601201f161035457fe5b5080840193505080830360206102c082846000602051602d5a03f1506102c05190509050905090505b5060016102e05260206102e0f350505b63de9080c88114156107645760043560c05260243560e05260443561010052606435610120526084356101405260026101005101601c606459905901600090520163e05dcb56601c82035260c051600482015260e05160248201528160408160200201599059016000905281602002604001816044856000602051602d5a03f15060408101905090509050601c6064599059016000905201632c5a40d5601c82035260c051600482015260e05160248201526101405160408160200201599059016000905281602002604001816044856000602051602d5a03f1506040810190509050905061012051806020026020015990590160009052818152602081019050905060005b610120518112156104ee57601c60645990590160009052016328c8b315601c82035260c051600482015281602482015260206103606044836000604051602d5a03f15061036051905081602002830152600181019050610493565b5060a0601c61020c59905901600090520163a647a5b9601c8203528460208103516020026020018360048401526020820360a484015280610148840152808401935050508360208103516020026020018360248401526020820360c484015280610168840152808401935050508260208103516020026020018360448401526020820360e4840152806101888401528084019350505061012051606482015261010051608482015281600401599059016000905260a48160a484600060046022f16105b557fe5b60a4810192506101488201518080858260a487015160006004600a8705601201f16105dc57fe5b508084019350506101688201518080858260c487015160006004600a8705601201f161060457fe5b508084019350506101888201518080858260e487015160006004600a8705601201f161062c57fe5b5080840193505080830387604081602002015990590160009052816020026040018184866000608051602d5a03f1506040810190509050905090509050905092506060601c61014c59905901600090520163e365736b601c82035260c051600482015260e05160248201528460208103516020026020018360448401526020820360a4840152806101088401528084019350505081600401599059016000905260648160648460006004601cf16106df57fe5b6064810192506101088201518080858260a487015160006004600a8705601201f161070657fe5b5080840193505080830360206103c082846000602051602d5a03f1506103c05190509050905090505060006101005160200284015114156107525760006103e05260206103e0f361075f565b6001610400526020610400f35b505050505b63384ca8dd811415610a665760043560c05260243560e052604435610100526064356101205260843561014052601c606459905901600090520163e05dcb56601c82035260c051600482015260e05160248201526002610100510160408160200201599059016000905281602002604001816044856000602051602d5a03f15060408101905090509050601c606459905901600090520163fa9832d1601c82035260c051600482015260e05160248201526101005160408160200201599059016000905281602002604001816044856000602051602d5a03f15060408101905090509050601c608459905901600090520163aad7d6e3601c82035260c051600482015260e05160248201526060601c61014c599059016000905201635b180229601c8203528360208103516020026020018360048401526020820360648401528060c8840152808401935050508460208103516020026020018360248401526020820360848401528060e88401528084019350505061010051604482015281600401599059016000905260648160648460006004601cf161090157fe5b60648101925060c882015180808582606487015160006004600a8705601201f161092757fe5b5080840193505060e882015180808582608487015160006004600a8705601201f161094e57fe5b50808401935050808303602061044082846000608051602d5a03f150610440519050905090509050604482015260206104606064836000602051602d5a03f150610460519050506060601c61014c59905901600090520163222a8663601c82035260c051600482015260e05160248201528260208103516020026020018360448401526020820360a4840152806101088401528084019350505081600401599059016000905260648160648460006004601cf1610a0757fe5b6064810192506101088201518080858260a487015160006004600a8705601201f1610a2e57fe5b50808401935050808303602061048082846000602051602d5a03f1506104805190509050905090505060016104a05260206104a0f350505b63d5dc5af1811415610d4b5760043560c05260243560e052604435610100526064356101205260843561014052601c606459905901600090520163e05dcb56601c82035260c051600482015260e05160248201526002610100510160408160200201599059016000905281602002604001816044856000602051602d5a03f15060408101905090509050601c6064599059016000905201632c5a40d5601c82035260c051600482015260e05160248201526101405160408160200201599059016000905281602002604001816044856000602051602d5a03f150604081019050905090506080601c6101ac59905901600090520163f4ca7dc4601c82035283602081035160200260200183600484015260208203608484015280610108840152808401935050508260208103516020026020018360248401526020820360a4840152806101288401528084019350505061012051604482015261010051606482015281600401599059016000905260848160848460006004601ff1610be757fe5b60848101925061010882015180808582608487015160006004600a8705601201f1610c0e57fe5b508084019350506101288201518080858260a487015160006004600a8705601201f1610c3657fe5b5080840193505080830361014051604081602002015990590160009052816020026040018184866000608051602d5a03f1506040810190509050905090509050905090506060601c61014c59905901600090520163b39e1faa601c82035260c051600482015260e05160248201528260208103516020026020018360448401526020820360a4840152806101088401528084019350505081600401599059016000905260648160648460006004601cf1610cec57fe5b6064810192506101088201518080858260a487015160006004600a8705601201f1610d1357fe5b5080840193505080830360206104c082846000602051602d5a03f1506104c05190509050905090505060016104e05260206104e0f350505b630939aa8c81141561114c5760043560c05260243560e052604435610100526064356101205260843561014052601c606459905901600090520163e05dcb56601c82035260c051600482015260e05160248201526002610100510160408160200201599059016000905281602002604001816044856000602051602d5a03f15060408101905090509050601c6064599059016000905201637dc12195601c82035260c051600482015260e05160248201526101405160408160200201599059016000905281602002604001816044856000602051602d5a03f15060408101905090509050601c606459905901600090520163586b5be0601c82035260c051600482015260e051602482015260206105006044836000602051602d5a03f150610500519050601c606459905901600090520163eb8af5aa601c82035260c051600482015260e05160248201526101205160408160200201599059016000905281602002604001816044856000602051602d5a03f1506040810190509050905060c0601c61026c59905901600090520163232b2734601c8203528260208103516020026020018360048401526020820360c484015280610188840152808401935050508560208103516020026020018360248401526020820360e4840152806101a88401528084019350505084602081035160200260200183604484015260208203610104840152806101c8840152808401935050508360648201526101205160848201526101005160a482015281600401599059016000905260c48160c484600060046025f1610f9657fe5b60c4810192506101888201518080858260c487015160006004600a8705601201f1610fbd57fe5b508084019350506101a88201518080858260e487015160006004600a8705601201f1610fe557fe5b508084019350506101c88201518080858261010487015160006004600a8705601201f161100e57fe5b5080840193505080830361012051604081602002015990590160009052816020026040018184866000608051602d5a03f1506040810190509050905090509050905090506060601c61014c5990590160009052016301112b27601c82035260c051600482015260e05160248201528260208103516020026020018360448401526020820360a4840152806101088401528084019350505081600401599059016000905260648160648460006004601cf16110c457fe5b6064810192506101088201518080858260a487015160006004600a8705601201f16110eb57fe5b50808401935050808303602061058082846000602051602d5a03f15061058051905090509050905050600060016101005101602002850151141561113a5760006105a05260206105a0f3611147565b60016105c05260206105c0f35b505050505b50 # noqa: E501 + contract_7 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE8(offset=0x5DF, value=0x0) + + Op.DIV( + Op.CALLDATALOAD(offset=0x0), + 0x100000000000000000000000000000000000000000000000000000000, + ) + + Op.MSTORE( + offset=0x20, value=0xEA65418D7BF32680F55572C943A94B590804998 + ) + + Op.MSTORE( + offset=0x40, value=0xE509E3A93BEB1EBA72F8CB8D25F93A85E2D54AFB + ) + + Op.MSTORE( + offset=0x60, value=0xC9AE5868651BF7B7DB6E360217DB49CE4E69C07E + ) + + Op.MSTORE( + offset=0x80, value=0xF1562E1C0D0BAA3EA746442BB7F11153FCF5CFDA + ) + + Op.JUMPI(pc=0x38D, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x546FDEB3))) + + Op.MSTORE(offset=0xC0, value=Op.CALLDATALOAD(offset=0x4)) + + Op.MSTORE(offset=0xE0, value=Op.CALLDATALOAD(offset=0x24)) + + Op.MSTORE(offset=0x100, value=Op.CALLDATALOAD(offset=0x44)) + + Op.MSTORE(offset=0x120, value=Op.CALLDATALOAD(offset=0x64)) + + Op.MSTORE(offset=0x140, value=Op.CALLDATALOAD(offset=0x84)) + + Op.ADD(Op.MLOAD(offset=0x100), 0x2) + + Op.PUSH1[0x1C] + + Op.PUSH1[0x64] + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -7094,19 +6390,12 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x40)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x3) - + Op.DUP1 - + Op.SWAP1 - + Op.POP - + Op.MSTORE(offset=0x740, value=Op.SLOAD(key=Op.SHA3)) - + Op.RETURN(offset=0x740, size=0x20) - + Op.JUMPDEST - + Op.JUMPI(pc=0x6E6, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x1CDA01EF))) - + Op.MSTORE(offset=0x40, value=Op.CALLDATALOAD(offset=0x4)) - + Op.PUSH1[0x1] - + Op.PUSH1[0x60] * 2 + + Op.ADD + + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0xE05DCB56) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0xC0)) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=Op.MLOAD(offset=0xE0)) + + Op.ADD(Op.MLOAD(offset=0x100), 0x2) + + Op.ADD(Op.MUL(0x20, Op.DUP2), 0x40) + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -7114,15 +6403,41 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x40)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x3) - + Op.DUP1 + + Op.POP( + Op.CALL( + gas=Op.SUB(Op.GAS, 0x2D), + address=Op.MLOAD(offset=0x20), + value=0x0, + args_offset=Op.DUP6, + args_size=0x44, + ret_offset=Op.DUP2, + ret_size=Op.ADD(0x40, Op.MUL(0x20, Op.DUP2)), + ) + ) + + Op.ADD(Op.DUP2, 0x40) + Op.SWAP1 + Op.POP - + Op.SLOAD(key=Op.SHA3) - + Op.ADD - + Op.PUSH1[0x60] * 2 + + Op.SWAP1 + + Op.POP + + Op.SWAP1 + + Op.POP + + Op.JUMPI( + pc=0x250, + condition=Op.ISZERO( + Op.EQ( + Op.MLOAD( + offset=Op.ADD( + Op.DUP3, + Op.MUL(0x20, Op.ADD(Op.MLOAD(offset=0x100), 0x1)), + ) + ), + 0x0, + ) + ), + ) + + Op.PUSH1[0x60] + + Op.PUSH1[0x1C] + + Op.PUSH2[0x14C] + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -7130,22 +6445,12 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x40)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x3) - + Op.DUP1 - + Op.SWAP1 - + Op.POP - + Op.SHA3 - + Op.SSTORE - + Op.MSTORE(offset=0x7C0, value=0x1) - + Op.RETURN(offset=0x7C0, size=0x20) - + Op.JUMPDEST - + Op.JUMPI(pc=0x734, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0xC286273A))) - + Op.MSTORE(offset=0x40, value=Op.CALLDATALOAD(offset=0x4)) - + Op.MSTORE(offset=0x7E0, value=Op.CALLDATALOAD(offset=0x24)) - + Op.MLOAD(offset=0x7E0) - + Op.PUSH1[0x60] * 2 + + Op.ADD + + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0xE365736B) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0xC0)) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=Op.MLOAD(offset=0xE0)) + + Op.PUSH1[0x1C] + + Op.PUSH1[0x84] + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -7153,73 +6458,13 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x40)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x3) - + Op.DUP1 - + Op.SWAP1 - + Op.POP - + Op.SHA3 - + Op.SSTORE - + Op.MSTORE(offset=0x820, value=0x1) - + Op.RETURN(offset=0x820, size=0x20) - + Op.JUMPDEST - + Op.POP, - storage={ - 0: 1, - 0xA4470E9D0419DF71F6257FCDFD2C0A3BAD96A23F5AB414BC10AAF1A31A536A7: 0xB4876148229C22BD2291F1A4F5468C8C789B23639370C4D447F270BA341DBBEC, # noqa: E501 - 0x16EF4193A274568D283FF919C299729E07696D9ADA48187B81D68E12E7B962DE: 0xA103C04E7ECB9B3395F77C7B0CAD28E62C85F042DE4767CCC6C005E6F47F8D4, # noqa: E501 - 0x1F1866E966F321B84535705846689749D34D5DC02994613E2931973C605D9E93: 0xC723D0AA4A60529FE42277C8094AA19263AFF36650136EFC5EDFD0785D457634, # noqa: E501 - 0x252A4EC7133643FDDCDB22A86C415F78B2DD251F18D1EFCD6A44ACF590C4AE72: 0x9CAF94B82715869E71D3CEE986094EA612F0258570B7E5EF47B5D09E9515322B, # noqa: E501 - 0x41B451E8D86D28ADD758CBD3F48A18FD04B11A80288C1DC434A5BF2D8FB1CA64: 0xB602498F12A8B4AF3A1FCA357CEA6B19BCD163DFEC1D845364CE1395F7C21FA7, # noqa: E501 - 0x491D10658C1EC762152D8AD2D890AD59111B1EE7B4BC25736046923D3534D9A5: 25246, # noqa: E501 - 0x5B0E8552EFD72A845E47318ABBBEF9DC9FCDFE0D1A06CDA44494401301581511: 0xFBC98F4017AE5C20459DAADAA6BEE519B6DE871D3DBAA9AB3F34340FEF4CB643, # noqa: E501 - 0x5B672A107BA6FAB01CBDDF079042E9F6176A8E6F154584FC4DF4B15674C9456E: 0x1603DA41D610854D85536B37D000E5EB7CA09786C43F50E7441C0AFBFF1DE0A9, # noqa: E501 - 0x605B934BD26C9ECDF7029A7DC062D3A6B87338511CFF96E0C5F13DE9EEA3462E: 0xF0D24F3D0EDA573FC5D43E3D0680993C51293752CD6DE205040D3197F412F475, # noqa: E501 - 0x618355E25491DFE86175F9D9B3147E4D680AA561D98384E3621DC6A3088B0846: 0x6B2E6D2D5DEB27DFFEC973F23AF4CAF111E66D1397F467DBBEDF5AB2192FB6B6, # noqa: E501 - 0x65112936BEC0F1E84FDA6623FB54E12BAADC8A4A208C8C4EB3ED5E79CBD7E85F: 0xA59AC24E3E0663413D0F87516BA8FB44C6C3E14DA8EAABBDE80F8EE285F65934, # noqa: E501 - 0x687CB2122DE7BACF42B9CD380B04FF2A2CE92A0B63706A9A78263B3CE86F3313: 0x200000000000000, # noqa: E501 - 0x72A539B064C98D29A514EE55694225E05FB41FE63E5FE710E4536BD9BA3591B4: 0x338ECFE6C523ED1184918B19584D97DD1095ECAADC49C7BA9DA62B8B513026E0, # noqa: E501 - 0x7AEB0A0CE8882A12D853078382A2BC72F7A94AF6109F167DE37B36C0A7DEB828: 0x4C428400EA8A7BD7C46BA9895B508770EFA4551F0D793E1BEB1207DA01D9962F, # noqa: E501 - 0x7C8F4A98E086F64E28C75F54712B5D44BEC3C29B5C70519E8880D3046A5618DC: 0xAAFC1F2601752B114D722070F75539BFEC7FAF49F0D48A48D27862F0C3B09903, # noqa: E501 - 0x809C325F50ACF5787776E960985E72443B4330AD1E2F466557FFFEE16BA51D44: 0xB940A56E64B5B661D87919B8EF03640EC077A6D72DD0B524ADEDAA7DDC91FF7A, # noqa: E501 - 0x84E4A80D33C5D2ABD2B0A5AEC0FDC5EAEED90AB31DB556E404A81718EA286E39: 28, # noqa: E501 - 0x877305412FA2486F563C457B744E5C8B1E4D0ECA73371DE5E771F2ABC263F4DC: 0x7088A36F67276D475AA62127CFDE9790CC802FDF3A54DF49461A25EB8BF15707, # noqa: E501 - 0x922A8F2FC1CBE67C8ACC6A8A720983C366D71D3E2E78E3048949EBC913EA611A: 0x50FB9F913CA102534BB0A8EB8EBF19C68DFD16FFE5E207BCC580084CD4ECD8B4, # noqa: E501 - 0x987CB9ECFD8CE499D9D0E9E6B7DA29617AA02774A34F4A8EA54442F44A1E1936: 0x5179F98F555F1E9F1D4A335D16F41154579A53E361E9859269B6FA74EA9C7D21, # noqa: E501 - 0xADA5013122D395BA3C54772283FB069B10426056EF8CA54750CB9BB552A59E7D: 0xF69B5, # noqa: E501 - 0xB16B117660F31197087F4D6FE50D3D4579152244956F753F9653CCF85F4B35C4: 0x830272E3BB35226B047244CBDC46F1B6B864A280461E7A592F70E0863F4F1D33, # noqa: E501 - 0xB1F1AAEDFB83C7755A2BFFC9E2557F1723F9ABE5642397963E76248C9209AF57: 0xE9BE955C5FBFCD846D7425EAEA05CE897786AEFAD99665342CBF30761B352526, # noqa: E501 - 0xB7BD50FDF7B043411C9AC33F0AF2CEBC69C393EB0B91F4976946F9C7B15AD0DA: 0xFCCCA0E7832BAE9AFE799A6D6177DC3869FA6C5B5105F8DF6F365DE5723820EC, # noqa: E501 - 0xBC96058EB03504EE6F5C0A9582F8720D99A6E9738B171499507FACFF0B2C0B5B: 0x9DB6A4F2766B51013B8D2F9038131D1BB4AF725D019D111D7E26FF96C023B23F, # noqa: E501 - 0xC186C4F377B7F13892ADE9656ACD1522AA1F8AC151AC4F62457B5073241D79FC: 0x7289738FEF00F1770EEB098DB9BD486C01AC12398D79CDF935514A128C585C51, # noqa: E501 - 0xCAE57AE3017972D63EFFD8EAE44F5054402C3E890D154B905ED6B5B533327FA9: 0xD2E4BF465E61993D13089B940A7C55017A5117D8E43E4115550A139E1D4B3E3A, # noqa: E501 - 0xCF569EE7BF3ACCC0F893DFFD04F1A757F373EFE80893EFF504FB3678F688EC1D: 3, # noqa: E501 - 0xD69B7284545A9F5275DF64CE94848DC954FCB8A8B525E7AC801517C12A75AF84: 0x4202995350ABAE303B43E564AA79121A30B5F1AEA31F69CD25E07DD3FA64DCE7, # noqa: E501 - 0xD8F6F90F51E657690EE28D1CC80D81BC1B89290065891FDD853D09CAAAF756AA: 1, # noqa: E501 - 0xDE72F8EED43CC2A5A3EAA51483D14B17DC92BB26C154AE184CEE4B4895011EDC: 0x47CE2B6FDB72C3FABB9C74F82C1E3E522BCD42E614FD85C208AC3C4C840CEA72, # noqa: E501 - 0xE0E687DDF317F3D2B209AE3884148EFF0F636E16827F82EDED14ADA8FC603009: 0xFA7C8939F9B033162CF8D75EA69671BB8A27041BD4CDC76594E61E99333CB041, # noqa: E501 - 0xE8CDA339D72A1A350B62F1E3FA52E254C395CC9FDD9F60ADB21C7633FBDAB531: 0x128C4FDF4801A30EAE99DD58F0F3FF5CA65F71B66A9AC0F38DD450FB24B4AAAA, # noqa: E501 - 0xEC5E7F54FA5E516E616B04F9D5A0EE433A80E09ED47D7E5269AFD76C05FF251E: 20, # noqa: E501 - 0xF9A3BF5F2CCB903EE1A7644113B794DB0260DE404FB8F11203E75A7FFF151618: 0xBD94773C0D85C68240AE8DFD53D9D33CD137509BFC5D3433381299DF768C8377, # noqa: E501 - }, - nonce=0, - address=Address(0xC9AE5868651BF7B7DB6E360217DB49CE4E69C07E), # noqa: E501 - ) - # Source: raw - # 0x6000610b7f537c01000000000000000000000000000000000000000000000000000000006000350473c9ae5868651bf7b7db6e360217db49ce4e69c07e6020526308d3d58781141561024557600435606052606060605990590160009052600081526060518160200152600181604001528090502054608052600060806080599059016000905260008152606051816020015260028160400152328160600152809050205414151561014e57608060805990590160009052600081526060518160200152600281604001523281606001528090502054608052682f000000000000000060a060a059905901600090526000815260605181602001526000816040015260805181606001526000816080015280905020553260a060a05990590160009052600081526060518160200152600081604001526080518160600152600181608001528090502055610238565b608051608060805990590160009052600081526060518160200152600281604001523281606001528090502055682f000000000000000060a060a059905901600090526000815260605181602001526000816040015260805181606001526000816080015280905020553260a060a059905901600090526000815260605181602001526000816040015260805181606001526001816080015280905020556001606060605990590160009052600081526060518160200152600181604001528090502054016060606059905901600090526000815260605181602001526001816040015280905020555b60016101e05260206101e0f35b6328c8b31581141561029d576004356060526024356102005260a060a0599059016000905260008152606051816020015260008160400152610200518160600152600081608001528090502054610220526020610220f35b6374af23ec8114156103865760043560605260243561026052608060805990590160009052600081526060518160200152600281604001526102605181606001528090502054610200526000610200511415610332576102605160a060a05990590160009052600081526060518160200152600081604001526102005181606001526001816080015280905020541415610335565b60005b156103475760006102c05260206102c0f35b60a060a05990590160009052600081526060518160200152600081604001526102005181606001526000816080015280905020546102e05260206102e0f35b6384d646ee8114156103dc5760043560605260243560805260a060a05990590160009052600081526060518160200152600081604001526080518160600152600181608001528090502054610320526020610320f35b63f42294278114156106f45760043561026052601c602459905901600090520163175c6322601c82035260206103a06004836000602051602d5a03f1506103a0519050610360526102605115610581576103605160020280602002602001599059016000905281815260208101905090506103c05261036051806020026020015990590160009052818152602081019050905061042052601c602459905901600090520163c3387858601c8203526103605160408160200201599059016000905281602002604001816004856000602051602d5a03f150604081019050905090506104205260006104c05260006104e0525b610360516104c051121561057c576104c051602002610420510151606052601c60645990590160009052016374af23ec601c82035260605160048201526102605160248201526020610520604483600030602d5a03f1506105205190506105005260006105005114151561056c576060516104e0516020026103c05101526105005160016104e051016020026103c051015260026104e051016104e0525b60016104c051016104c0526104ce565b6106d7565b32610260526103605160020280602002602001599059016000905281815260208101905090506103c05261036051806020026020015990590160009052818152602081019050905061042052601c602459905901600090520163c3387858601c8203526103605160408160200201599059016000905281602002604001816004856000602051602d5a03f150604081019050905090506104205260006104c05260006104e0525b610360516104c05112156106d6576104c051602002610420510151606052601c60645990590160009052016374af23ec601c820352606051600482015261026051602482015260206105c0604483600030602d5a03f1506105c0519050610500526000610500511415156106c6576060516104e0516020026103c05101526105005160016104e051016020026103c051015260026104e051016104e0525b60016104c051016104c052610628565b5b6103c05160206040820352602060208203510260400160408203f3505b6380b5e7bd81141561073557600435606052606060605990590160009052600081526060518160200152600181604001528090502054610600526020610600f35b63156f1c328114156107865760043560605260243561064052608060805990590160009052600081526060518160200152600281604001526106405181606001528090502054610660526020610660f35b63b3a24fc081141561087857365990590160009052366004823760043560208201016106c0526024356106e05250600260206106c0510351018060200260200159905901600090528181526020810190509050610700523261070051526106e051602061070051015260026104c0525b600260206106c0510351016104c05112156108385760026104c051036020026106c05101516104c05160200261070051015260016104c051016104c0526107f6565b60206107005103516020026020599059016000905260208183610700516000600287604801f15080519050905061076052610760516107c05260206107c0f35b63e346f5fc811415610a1c576004356107e0526024356108005260006104c0525b606060605990590160009052600081526107e05181602001526001816040015280905020546104c05112156109e65760a060a05990590160009052600081526107e0518160200152600081604001526104c0518160600152600181608001528090502054610840526108405160a060a0599059016000905260008152610800518160200152600081604001526104c051816060015260018160800152809050205560a060a05990590160009052600081526107e0518160200152600081604001526104c051816060015260008160800152809050205460a060a0599059016000905260008152610800518160200152600081604001526104c05181606001526000816080015280905020556104c0516080608059905901600090526000815261080051816020015260028160400152610840518160600152809050205560016104c051016104c052610899565b6104c051606060605990590160009052600081526108005181602001526001816040015280905020556001610920526020610920f35b633fb57036811415610b5457600435606052602435610940526060606059905901600090526000815260605181602001526001816040015280905020546109605261096051608060805990590160009052600081526060518160200152600281604001526109405181606001528090502055600060a060a05990590160009052600081526060518160200152600081604001526109605181606001526000816080015280905020556109405160a060a05990590160009052600081526060518160200152600081604001526109605181606001526001816080015280905020556001606060605990590160009052600081526060518160200152600181604001528090502054016060606059905901600090526000815260605181602001526001816040015280905020556001610a40526020610a40f35b6312709a33811415610beb57600435606052602435608052604435610a6052610a605160a060a059905901600090526000815260605181602001526000816040015260805181606001526000816080015280905020540160a060a059905901600090526000815260605181602001526000816040015260805181606001526000816080015280905020556001610ac0526020610ac0f35b633229cf6e811415610c8257600435606052602435608052604435610a6052610a605160a060a059905901600090526000815260605181602001526000816040015260805181606001526000816080015280905020540360a060a059905901600090526000815260605181602001526000816040015260805181606001526000816080015280905020556001610b20526020610b20f35b63a75f5c6a811415610ce557600435606052602435608052604435610a6052610a605160a060a059905901600090526000815260605181602001526000816040015260805181606001526000816080015280905020556001610b60526020610b60f35b50 # noqa: E501 - contract_10 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE8(offset=0xB7F, value=0x0) - + Op.DIV( - Op.CALLDATALOAD(offset=0x0), - 0x100000000000000000000000000000000000000000000000000000000, - ) - + Op.MSTORE( - offset=0x20, value=0xC9AE5868651BF7B7DB6E360217DB49CE4E69C07E - ) - + Op.JUMPI(pc=0x245, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x8D3D587))) - + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) - + Op.PUSH1[0x60] * 2 + + Op.ADD + + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0x2F300BEE) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=0x2) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=0x5) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x44), value=Op.MLOAD(offset=0x100)) + + Op.DUP5 + + Op.ADD(Op.MUL(0x20, Op.DUP2), 0x40) + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -7227,32 +6472,32 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x1) - + Op.DUP1 + + Op.POP( + Op.CALL( + gas=Op.SUB(Op.GAS, 0x2D), + address=Op.MLOAD(offset=0x80), + value=0x0, + args_offset=Op.DUP6, + args_size=0x64, + ret_offset=Op.DUP2, + ret_size=Op.ADD(0x40, Op.MUL(0x20, Op.DUP2)), + ) + ) + + Op.ADD(Op.DUP2, 0x40) + Op.SWAP1 + Op.POP - + Op.MSTORE(offset=0x80, value=Op.SLOAD(key=Op.SHA3)) - + Op.PUSH1[0x0] - + Op.PUSH1[0x80] * 2 - + Op.MSIZE - + Op.SWAP1 - + Op.MSIZE - + Op.ADD - + Op.PUSH1[0x0] + Op.SWAP1 - + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x2) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=Op.ORIGIN) - + Op.DUP1 + + Op.POP + Op.SWAP1 + Op.POP - + Op.SLOAD(key=Op.SHA3) - + Op.JUMPI(pc=0x14E, condition=Op.ISZERO(Op.ISZERO(Op.EQ))) - + Op.PUSH1[0x80] * 2 + + Op.ADD(0x20, Op.MUL(0x20, Op.MLOAD(offset=Op.SUB(Op.DUP2, 0x20)))) + + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0x44), value=Op.DUP4) + + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0xA4), value=Op.SUB(Op.DUP3, 0x20)) + + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0x108), value=Op.DUP1) + + Op.ADD(Op.DUP5, Op.DUP1) + + Op.SWAP4 + + Op.POP * 3 + + Op.ADD(0x4, Op.DUP2) + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -7260,35 +6505,69 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x2) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=Op.ORIGIN) + + Op.JUMPI( + pc=0x1FC, + condition=Op.CALL( + gas=0x1C, + address=0x4, + value=0x0, + args_offset=Op.DUP5, + args_size=0x64, + ret_offset=Op.DUP2, + ret_size=0x64, + ), + ) + + Op.INVALID + + Op.JUMPDEST + + Op.ADD(Op.DUP2, 0x64) + + Op.SWAP3 + + Op.POP + + Op.MLOAD(offset=Op.ADD(Op.DUP3, 0x108)) + Op.DUP1 + + Op.JUMPI( + pc=0x223, + condition=Op.CALL( + gas=Op.ADD(0x12, Op.SDIV(Op.DUP8, 0xA)), + address=0x4, + value=0x0, + args_offset=Op.MLOAD(offset=Op.ADD(Op.DUP8, 0xA4)), + args_size=Op.DUP3, + ret_offset=Op.DUP6, + ret_size=Op.DUP1, + ), + ) + + Op.INVALID + + Op.JUMPDEST + + Op.POP + + Op.ADD(Op.DUP5, Op.DUP1) + + Op.SWAP4 + + Op.POP * 2 + + Op.SUB(Op.DUP4, Op.DUP1) + + Op.POP( + Op.CALL( + gas=Op.SUB(Op.GAS, 0x2D), + address=Op.MLOAD(offset=0x20), + value=0x0, + args_offset=Op.DUP5, + args_size=Op.DUP3, + ret_offset=0x280, + ret_size=0x20, + ) + ) + + Op.MLOAD(offset=0x280) + Op.SWAP1 + Op.POP - + Op.MSTORE(offset=0x80, value=Op.SLOAD(key=Op.SHA3)) - + Op.PUSH9[0x2F0000000000000000] - + Op.PUSH1[0xA0] * 2 - + Op.MSIZE + Op.SWAP1 - + Op.MSIZE - + Op.ADD - + Op.PUSH1[0x0] + + Op.POP + Op.SWAP1 - + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x0) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=Op.MLOAD(offset=0x80)) - + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x0) - + Op.DUP1 + + Op.POP + Op.SWAP1 + Op.POP - + Op.SHA3 - + Op.SSTORE - + Op.ORIGIN - + Op.PUSH1[0xA0] * 2 + + Op.JUMP(pc=0x37D) + + Op.JUMPDEST + + Op.PUSH1[0x60] + + Op.PUSH1[0x1C] + + Op.PUSH2[0x14C] + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -7296,20 +6575,12 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x0) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=Op.MLOAD(offset=0x80)) - + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x1) - + Op.DUP1 - + Op.SWAP1 - + Op.POP - + Op.SHA3 - + Op.SSTORE - + Op.JUMP(pc=0x238) - + Op.JUMPDEST - + Op.MLOAD(offset=0x80) - + Op.PUSH1[0x80] * 2 + + Op.ADD + + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0xE365736B) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0xC0)) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=Op.MLOAD(offset=0xE0)) + + Op.PUSH1[0x1C] + + Op.PUSH1[0x84] + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -7317,17 +6588,24 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x2) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=Op.ORIGIN) - + Op.DUP1 - + Op.SWAP1 - + Op.POP - + Op.SHA3 - + Op.SSTORE - + Op.PUSH9[0x2F0000000000000000] - + Op.PUSH1[0xA0] * 2 + + Op.ADD + + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0x2F300BEE) + + Op.MSTORE( + offset=Op.ADD(Op.DUP3, 0x4), + value=Op.SUB( + Op.MLOAD( + offset=Op.ADD( + Op.DUP6, + Op.MUL(0x20, Op.ADD(Op.MLOAD(offset=0x100), 0x1)), + ) + ), + 0x1, + ), + ) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=0x5) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x44), value=Op.MLOAD(offset=0x100)) + + Op.DUP5 + + Op.ADD(Op.MUL(0x20, Op.DUP2), 0x40) + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -7335,18 +6613,32 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x0) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=Op.MLOAD(offset=0x80)) - + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x0) - + Op.DUP1 + + Op.POP( + Op.CALL( + gas=Op.SUB(Op.GAS, 0x2D), + address=Op.MLOAD(offset=0x80), + value=0x0, + args_offset=Op.DUP6, + args_size=0x64, + ret_offset=Op.DUP2, + ret_size=Op.ADD(0x40, Op.MUL(0x20, Op.DUP2)), + ) + ) + + Op.ADD(Op.DUP2, 0x40) + Op.SWAP1 + Op.POP - + Op.SHA3 - + Op.SSTORE - + Op.ORIGIN - + Op.PUSH1[0xA0] * 2 + + Op.SWAP1 + + Op.POP + + Op.SWAP1 + + Op.POP + + Op.ADD(0x20, Op.MUL(0x20, Op.MLOAD(offset=Op.SUB(Op.DUP2, 0x20)))) + + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0x44), value=Op.DUP4) + + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0xA4), value=Op.SUB(Op.DUP3, 0x20)) + + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0x108), value=Op.DUP1) + + Op.ADD(Op.DUP5, Op.DUP1) + + Op.SWAP4 + + Op.POP * 3 + + Op.ADD(0x4, Op.DUP2) + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -7354,34 +6646,79 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x0) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=Op.MLOAD(offset=0x80)) - + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x1) + + Op.JUMPI( + pc=0x32D, + condition=Op.CALL( + gas=0x1C, + address=0x4, + value=0x0, + args_offset=Op.DUP5, + args_size=0x64, + ret_offset=Op.DUP2, + ret_size=0x64, + ), + ) + + Op.INVALID + + Op.JUMPDEST + + Op.ADD(Op.DUP2, 0x64) + + Op.SWAP3 + + Op.POP + + Op.MLOAD(offset=Op.ADD(Op.DUP3, 0x108)) + Op.DUP1 + + Op.JUMPI( + pc=0x354, + condition=Op.CALL( + gas=Op.ADD(0x12, Op.SDIV(Op.DUP8, 0xA)), + address=0x4, + value=0x0, + args_offset=Op.MLOAD(offset=Op.ADD(Op.DUP8, 0xA4)), + args_size=Op.DUP3, + ret_offset=Op.DUP6, + ret_size=Op.DUP1, + ), + ) + + Op.INVALID + + Op.JUMPDEST + + Op.POP + + Op.ADD(Op.DUP5, Op.DUP1) + + Op.SWAP4 + + Op.POP * 2 + + Op.SUB(Op.DUP4, Op.DUP1) + + Op.POP( + Op.CALL( + gas=Op.SUB(Op.GAS, 0x2D), + address=Op.MLOAD(offset=0x20), + value=0x0, + args_offset=Op.DUP5, + args_size=Op.DUP3, + ret_offset=0x2C0, + ret_size=0x20, + ) + ) + + Op.MLOAD(offset=0x2C0) + Op.SWAP1 + Op.POP - + Op.SHA3 - + Op.SSTORE - + Op.PUSH1[0x1] - + Op.PUSH1[0x60] * 2 - + Op.MSIZE + Op.SWAP1 - + Op.MSIZE - + Op.ADD - + Op.PUSH1[0x0] + + Op.POP + Op.SWAP1 - + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x1) - + Op.DUP1 + + Op.POP + Op.SWAP1 + Op.POP - + Op.SLOAD(key=Op.SHA3) - + Op.ADD - + Op.PUSH1[0x60] * 2 + + Op.JUMPDEST + + Op.POP + + Op.MSTORE(offset=0x2E0, value=0x1) + + Op.RETURN(offset=0x2E0, size=0x20) + + Op.POP * 2 + + Op.JUMPDEST + + Op.JUMPI(pc=0x764, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0xDE9080C8))) + + Op.MSTORE(offset=0xC0, value=Op.CALLDATALOAD(offset=0x4)) + + Op.MSTORE(offset=0xE0, value=Op.CALLDATALOAD(offset=0x24)) + + Op.MSTORE(offset=0x100, value=Op.CALLDATALOAD(offset=0x44)) + + Op.MSTORE(offset=0x120, value=Op.CALLDATALOAD(offset=0x64)) + + Op.MSTORE(offset=0x140, value=Op.CALLDATALOAD(offset=0x84)) + + Op.ADD(Op.MLOAD(offset=0x100), 0x2) + + Op.PUSH1[0x1C] + + Op.PUSH1[0x64] + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -7389,22 +6726,12 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x1) - + Op.DUP1 - + Op.SWAP1 - + Op.POP - + Op.SHA3 - + Op.SSTORE - + Op.JUMPDEST - + Op.MSTORE(offset=0x1E0, value=0x1) - + Op.RETURN(offset=0x1E0, size=0x20) - + Op.JUMPDEST - + Op.JUMPI(pc=0x29D, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x28C8B315))) - + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) - + Op.MSTORE(offset=0x200, value=Op.CALLDATALOAD(offset=0x24)) - + Op.PUSH1[0xA0] * 2 + + Op.ADD + + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0xE05DCB56) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0xC0)) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=Op.MLOAD(offset=0xE0)) + + Op.DUP2 + + Op.ADD(Op.MUL(0x20, Op.DUP2), 0x40) + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -7412,21 +6739,26 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x0) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=Op.MLOAD(offset=0x200)) - + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x0) - + Op.DUP1 + + Op.POP( + Op.CALL( + gas=Op.SUB(Op.GAS, 0x2D), + address=Op.MLOAD(offset=0x20), + value=0x0, + args_offset=Op.DUP6, + args_size=0x44, + ret_offset=Op.DUP2, + ret_size=Op.ADD(0x40, Op.MUL(0x20, Op.DUP2)), + ) + ) + + Op.ADD(Op.DUP2, 0x40) + Op.SWAP1 + Op.POP - + Op.MSTORE(offset=0x220, value=Op.SLOAD(key=Op.SHA3)) - + Op.RETURN(offset=0x220, size=0x20) - + Op.JUMPDEST - + Op.JUMPI(pc=0x386, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x74AF23EC))) - + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) - + Op.MSTORE(offset=0x260, value=Op.CALLDATALOAD(offset=0x24)) - + Op.PUSH1[0x80] * 2 + + Op.SWAP1 + + Op.POP + + Op.SWAP1 + + Op.POP + + Op.PUSH1[0x1C] + + Op.PUSH1[0x64] + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -7434,19 +6766,12 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x2) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=Op.MLOAD(offset=0x260)) - + Op.DUP1 - + Op.SWAP1 - + Op.POP - + Op.MSTORE(offset=0x200, value=Op.SLOAD(key=Op.SHA3)) - + Op.JUMPI( - pc=0x332, condition=Op.ISZERO(Op.EQ(Op.MLOAD(offset=0x200), 0x0)) - ) - + Op.MLOAD(offset=0x260) - + Op.PUSH1[0xA0] * 2 + + Op.ADD + + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0x2C5A40D5) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0xC0)) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=Op.MLOAD(offset=0xE0)) + + Op.MLOAD(offset=0x140) + + Op.ADD(Op.MUL(0x20, Op.DUP2), 0x40) + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -7454,25 +6779,26 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x0) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=Op.MLOAD(offset=0x200)) - + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x1) - + Op.DUP1 + + Op.POP( + Op.CALL( + gas=Op.SUB(Op.GAS, 0x2D), + address=Op.MLOAD(offset=0x20), + value=0x0, + args_offset=Op.DUP6, + args_size=0x44, + ret_offset=Op.DUP2, + ret_size=Op.ADD(0x40, Op.MUL(0x20, Op.DUP2)), + ) + ) + + Op.ADD(Op.DUP2, 0x40) + Op.SWAP1 + Op.POP - + Op.SLOAD(key=Op.SHA3) - + Op.ISZERO(Op.EQ) - + Op.JUMP(pc=0x335) - + Op.JUMPDEST - + Op.PUSH1[0x0] - + Op.JUMPDEST - + Op.JUMPI(pc=0x347, condition=Op.ISZERO) - + Op.MSTORE(offset=0x2C0, value=0x0) - + Op.RETURN(offset=0x2C0, size=0x20) - + Op.JUMPDEST - + Op.PUSH1[0xA0] * 2 + + Op.SWAP1 + + Op.POP + + Op.SWAP1 + + Op.POP + + Op.MLOAD(offset=0x120) + + Op.ADD(0x20, Op.MUL(0x20, Op.DUP1)) + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -7480,43 +6806,20 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x0) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=Op.MLOAD(offset=0x200)) - + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x0) - + Op.DUP1 + + Op.MSTORE(offset=Op.DUP2, value=Op.DUP2) + + Op.ADD(Op.DUP2, 0x20) + Op.SWAP1 + Op.POP - + Op.MSTORE(offset=0x2E0, value=Op.SLOAD(key=Op.SHA3)) - + Op.RETURN(offset=0x2E0, size=0x20) + + Op.SWAP1 + + Op.POP + + Op.PUSH1[0x0] + Op.JUMPDEST - + Op.JUMPI(pc=0x3DC, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x84D646EE))) - + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) - + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) - + Op.PUSH1[0xA0] * 2 - + Op.MSIZE - + Op.SWAP1 - + Op.MSIZE - + Op.ADD - + Op.PUSH1[0x0] - + Op.SWAP1 - + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x0) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=Op.MLOAD(offset=0x80)) - + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x1) - + Op.DUP1 - + Op.SWAP1 - + Op.POP - + Op.MSTORE(offset=0x320, value=Op.SLOAD(key=Op.SHA3)) - + Op.RETURN(offset=0x320, size=0x20) - + Op.JUMPDEST - + Op.JUMPI(pc=0x6F4, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0xF4229427))) - + Op.MSTORE(offset=0x260, value=Op.CALLDATALOAD(offset=0x4)) - + Op.PUSH1[0x1C] - + Op.PUSH1[0x24] + + Op.JUMPI( + pc=0x4EE, + condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.MLOAD(offset=0x120))), + ) + + Op.PUSH1[0x1C] + + Op.PUSH1[0x64] + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -7525,43 +6828,34 @@ def test_block504980( + Op.SWAP1 + Op.MSTORE + Op.ADD - + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0x175C6322) + + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0x28C8B315) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0xC0)) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=Op.DUP2) + Op.POP( Op.CALL( gas=Op.SUB(Op.GAS, 0x2D), - address=Op.MLOAD(offset=0x20), + address=Op.MLOAD(offset=0x40), value=0x0, args_offset=Op.DUP4, - args_size=0x4, - ret_offset=0x3A0, + args_size=0x44, + ret_offset=0x360, ret_size=0x20, ) ) - + Op.MLOAD(offset=0x3A0) + + Op.MLOAD(offset=0x360) + Op.SWAP1 + Op.POP - + Op.PUSH2[0x360] - + Op.MSTORE - + Op.JUMPI(pc=0x581, condition=Op.ISZERO(Op.MLOAD(offset=0x260))) - + Op.MUL(0x2, Op.MLOAD(offset=0x360)) - + Op.ADD(0x20, Op.MUL(0x20, Op.DUP1)) - + Op.MSIZE - + Op.SWAP1 - + Op.MSIZE - + Op.ADD - + Op.PUSH1[0x0] - + Op.SWAP1 + + Op.ADD(Op.DUP4, Op.MUL(0x20, Op.DUP2)) + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=Op.DUP2) - + Op.ADD(Op.DUP2, 0x20) + + Op.ADD(Op.DUP2, 0x1) + Op.SWAP1 + Op.POP - + Op.SWAP1 + + Op.JUMP(pc=0x493) + + Op.JUMPDEST + Op.POP - + Op.PUSH2[0x3C0] - + Op.MSTORE - + Op.MLOAD(offset=0x360) - + Op.ADD(0x20, Op.MUL(0x20, Op.DUP1)) + + Op.PUSH1[0xA0] + + Op.PUSH1[0x1C] + + Op.PUSH2[0x20C] + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -7569,16 +6863,35 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=Op.DUP2) - + Op.ADD(Op.DUP2, 0x20) - + Op.SWAP1 - + Op.POP - + Op.SWAP1 - + Op.POP - + Op.PUSH2[0x420] - + Op.MSTORE - + Op.PUSH1[0x1C] - + Op.PUSH1[0x24] + + Op.ADD + + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0xA647A5B9) + + Op.DUP5 + + Op.ADD(0x20, Op.MUL(0x20, Op.MLOAD(offset=Op.SUB(Op.DUP2, 0x20)))) + + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0x4), value=Op.DUP4) + + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0xA4), value=Op.SUB(Op.DUP3, 0x20)) + + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0x148), value=Op.DUP1) + + Op.ADD(Op.DUP5, Op.DUP1) + + Op.SWAP4 + + Op.POP * 3 + + Op.DUP4 + + Op.ADD(0x20, Op.MUL(0x20, Op.MLOAD(offset=Op.SUB(Op.DUP2, 0x20)))) + + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0x24), value=Op.DUP4) + + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0xC4), value=Op.SUB(Op.DUP3, 0x20)) + + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0x168), value=Op.DUP1) + + Op.ADD(Op.DUP5, Op.DUP1) + + Op.SWAP4 + + Op.POP * 3 + + Op.DUP3 + + Op.ADD(0x20, Op.MUL(0x20, Op.MLOAD(offset=Op.SUB(Op.DUP2, 0x20)))) + + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0x44), value=Op.DUP4) + + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0xE4), value=Op.SUB(Op.DUP3, 0x20)) + + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0x188), value=Op.DUP1) + + Op.ADD(Op.DUP5, Op.DUP1) + + Op.SWAP4 + + Op.POP * 3 + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x64), value=Op.MLOAD(offset=0x120)) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x84), value=Op.MLOAD(offset=0x100)) + + Op.ADD(0x4, Op.DUP2) + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -7586,9 +6899,85 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.ADD - + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0xC3387858) - + Op.MLOAD(offset=0x360) + + Op.JUMPI( + pc=0x5B5, + condition=Op.CALL( + gas=0x22, + address=0x4, + value=0x0, + args_offset=Op.DUP5, + args_size=0xA4, + ret_offset=Op.DUP2, + ret_size=0xA4, + ), + ) + + Op.INVALID + + Op.JUMPDEST + + Op.ADD(Op.DUP2, 0xA4) + + Op.SWAP3 + + Op.POP + + Op.MLOAD(offset=Op.ADD(Op.DUP3, 0x148)) + + Op.DUP1 + + Op.JUMPI( + pc=0x5DC, + condition=Op.CALL( + gas=Op.ADD(0x12, Op.SDIV(Op.DUP8, 0xA)), + address=0x4, + value=0x0, + args_offset=Op.MLOAD(offset=Op.ADD(Op.DUP8, 0xA4)), + args_size=Op.DUP3, + ret_offset=Op.DUP6, + ret_size=Op.DUP1, + ), + ) + + Op.INVALID + + Op.JUMPDEST + + Op.POP + + Op.ADD(Op.DUP5, Op.DUP1) + + Op.SWAP4 + + Op.POP * 2 + + Op.MLOAD(offset=Op.ADD(Op.DUP3, 0x168)) + + Op.DUP1 + + Op.JUMPI( + pc=0x604, + condition=Op.CALL( + gas=Op.ADD(0x12, Op.SDIV(Op.DUP8, 0xA)), + address=0x4, + value=0x0, + args_offset=Op.MLOAD(offset=Op.ADD(Op.DUP8, 0xC4)), + args_size=Op.DUP3, + ret_offset=Op.DUP6, + ret_size=Op.DUP1, + ), + ) + + Op.INVALID + + Op.JUMPDEST + + Op.POP + + Op.ADD(Op.DUP5, Op.DUP1) + + Op.SWAP4 + + Op.POP * 2 + + Op.MLOAD(offset=Op.ADD(Op.DUP3, 0x188)) + + Op.DUP1 + + Op.JUMPI( + pc=0x62C, + condition=Op.CALL( + gas=Op.ADD(0x12, Op.SDIV(Op.DUP8, 0xA)), + address=0x4, + value=0x0, + args_offset=Op.MLOAD(offset=Op.ADD(Op.DUP8, 0xE4)), + args_size=Op.DUP3, + ret_offset=Op.DUP6, + ret_size=Op.DUP1, + ), + ) + + Op.INVALID + + Op.JUMPDEST + + Op.POP + + Op.ADD(Op.DUP5, Op.DUP1) + + Op.SWAP4 + + Op.POP * 2 + + Op.SUB(Op.DUP4, Op.DUP1) + + Op.DUP8 + Op.ADD(Op.MUL(0x20, Op.DUP2), 0x40) + Op.MSIZE + Op.SWAP1 @@ -7600,10 +6989,10 @@ def test_block504980( + Op.POP( Op.CALL( gas=Op.SUB(Op.GAS, 0x2D), - address=Op.MLOAD(offset=0x20), + address=Op.MLOAD(offset=0x80), value=0x0, - args_offset=Op.DUP6, - args_size=0x4, + args_offset=Op.DUP7, + args_size=Op.DUP5, ret_offset=Op.DUP2, ret_size=Op.ADD(0x40, Op.MUL(0x20, Op.DUP2)), ) @@ -7615,28 +7004,17 @@ def test_block504980( + Op.POP + Op.SWAP1 + Op.POP - + Op.PUSH2[0x420] - + Op.MSTORE - + Op.MSTORE(offset=0x4C0, value=0x0) - + Op.MSTORE(offset=0x4E0, value=0x0) - + Op.JUMPDEST - + Op.JUMPI( - pc=0x57C, - condition=Op.ISZERO( - Op.SLT(Op.MLOAD(offset=0x4C0), Op.MLOAD(offset=0x360)) - ), - ) - + Op.MSTORE( - offset=0x60, - value=Op.MLOAD( - offset=Op.ADD( - Op.MLOAD(offset=0x420), - Op.MUL(0x20, Op.MLOAD(offset=0x4C0)), - ) - ), - ) + + Op.SWAP1 + + Op.POP + + Op.SWAP1 + + Op.POP + + Op.SWAP1 + + Op.POP + + Op.SWAP3 + + Op.POP + + Op.PUSH1[0x60] + Op.PUSH1[0x1C] - + Op.PUSH1[0x64] + + Op.PUSH2[0x14C] + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -7645,86 +7023,113 @@ def test_block504980( + Op.SWAP1 + Op.MSTORE + Op.ADD - + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0x74AF23EC) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=Op.MLOAD(offset=0x260)) - + Op.POP( - Op.CALL( - gas=Op.SUB(Op.GAS, 0x2D), - address=Op.ADDRESS, - value=0x0, - args_offset=Op.DUP4, - args_size=0x44, - ret_offset=0x520, - ret_size=0x20, - ) - ) - + Op.MLOAD(offset=0x520) + + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0xE365736B) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0xC0)) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=Op.MLOAD(offset=0xE0)) + + Op.DUP5 + + Op.ADD(0x20, Op.MUL(0x20, Op.MLOAD(offset=Op.SUB(Op.DUP2, 0x20)))) + + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0x44), value=Op.DUP4) + + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0xA4), value=Op.SUB(Op.DUP3, 0x20)) + + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0x108), value=Op.DUP1) + + Op.ADD(Op.DUP5, Op.DUP1) + + Op.SWAP4 + + Op.POP * 3 + + Op.ADD(0x4, Op.DUP2) + + Op.MSIZE + + Op.SWAP1 + + Op.MSIZE + + Op.ADD + + Op.PUSH1[0x0] + Op.SWAP1 - + Op.POP - + Op.PUSH2[0x500] + Op.MSTORE + Op.JUMPI( - pc=0x56C, - condition=Op.ISZERO(Op.ISZERO(Op.EQ(Op.MLOAD(offset=0x500), 0x0))), - ) - + Op.MSTORE( - offset=Op.ADD( - Op.MLOAD(offset=0x3C0), Op.MUL(0x20, Op.MLOAD(offset=0x4E0)) - ), - value=Op.MLOAD(offset=0x60), - ) - + Op.MSTORE( - offset=Op.ADD( - Op.MLOAD(offset=0x3C0), - Op.MUL(0x20, Op.ADD(Op.MLOAD(offset=0x4E0), 0x1)), + pc=0x6DF, + condition=Op.CALL( + gas=0x1C, + address=0x4, + value=0x0, + args_offset=Op.DUP5, + args_size=0x64, + ret_offset=Op.DUP2, + ret_size=0x64, ), - value=Op.MLOAD(offset=0x500), ) - + Op.MSTORE(offset=0x4E0, value=Op.ADD(Op.MLOAD(offset=0x4E0), 0x2)) - + Op.JUMPDEST - + Op.MSTORE(offset=0x4C0, value=Op.ADD(Op.MLOAD(offset=0x4C0), 0x1)) - + Op.JUMP(pc=0x4CE) + + Op.INVALID + Op.JUMPDEST - + Op.JUMP(pc=0x6D7) + + Op.ADD(Op.DUP2, 0x64) + + Op.SWAP3 + + Op.POP + + Op.MLOAD(offset=Op.ADD(Op.DUP3, 0x108)) + + Op.DUP1 + + Op.JUMPI( + pc=0x706, + condition=Op.CALL( + gas=Op.ADD(0x12, Op.SDIV(Op.DUP8, 0xA)), + address=0x4, + value=0x0, + args_offset=Op.MLOAD(offset=Op.ADD(Op.DUP8, 0xA4)), + args_size=Op.DUP3, + ret_offset=Op.DUP6, + ret_size=Op.DUP1, + ), + ) + + Op.INVALID + Op.JUMPDEST - + Op.MSTORE(offset=0x260, value=Op.ORIGIN) - + Op.MUL(0x2, Op.MLOAD(offset=0x360)) - + Op.ADD(0x20, Op.MUL(0x20, Op.DUP1)) - + Op.MSIZE - + Op.SWAP1 - + Op.MSIZE - + Op.ADD - + Op.PUSH1[0x0] - + Op.SWAP1 - + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=Op.DUP2) - + Op.ADD(Op.DUP2, 0x20) - + Op.SWAP1 + Op.POP + + Op.ADD(Op.DUP5, Op.DUP1) + + Op.SWAP4 + + Op.POP * 2 + + Op.SUB(Op.DUP4, Op.DUP1) + + Op.POP( + Op.CALL( + gas=Op.SUB(Op.GAS, 0x2D), + address=Op.MLOAD(offset=0x20), + value=0x0, + args_offset=Op.DUP5, + args_size=Op.DUP3, + ret_offset=0x3C0, + ret_size=0x20, + ) + ) + + Op.MLOAD(offset=0x3C0) + Op.SWAP1 + Op.POP - + Op.PUSH2[0x3C0] - + Op.MSTORE - + Op.MLOAD(offset=0x360) - + Op.ADD(0x20, Op.MUL(0x20, Op.DUP1)) - + Op.MSIZE - + Op.SWAP1 - + Op.MSIZE - + Op.ADD - + Op.PUSH1[0x0] - + Op.SWAP1 - + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=Op.DUP2) - + Op.ADD(Op.DUP2, 0x20) + Op.SWAP1 + Op.POP + Op.SWAP1 + Op.POP - + Op.PUSH2[0x420] - + Op.MSTORE + + Op.SWAP1 + + Op.POP * 2 + + Op.JUMPI( + pc=0x752, + condition=Op.ISZERO( + Op.EQ( + Op.MLOAD( + offset=Op.ADD( + Op.DUP5, Op.MUL(0x20, Op.MLOAD(offset=0x100)) + ) + ), + 0x0, + ) + ), + ) + + Op.MSTORE(offset=0x3E0, value=0x0) + + Op.RETURN(offset=0x3E0, size=0x20) + + Op.JUMP(pc=0x75F) + + Op.JUMPDEST + + Op.MSTORE(offset=0x400, value=0x1) + + Op.RETURN(offset=0x400, size=0x20) + + Op.JUMPDEST + + Op.POP * 4 + + Op.JUMPDEST + + Op.JUMPI(pc=0xA66, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x384CA8DD))) + + Op.MSTORE(offset=0xC0, value=Op.CALLDATALOAD(offset=0x4)) + + Op.MSTORE(offset=0xE0, value=Op.CALLDATALOAD(offset=0x24)) + + Op.MSTORE(offset=0x100, value=Op.CALLDATALOAD(offset=0x44)) + + Op.MSTORE(offset=0x120, value=Op.CALLDATALOAD(offset=0x64)) + + Op.MSTORE(offset=0x140, value=Op.CALLDATALOAD(offset=0x84)) + Op.PUSH1[0x1C] - + Op.PUSH1[0x24] + + Op.PUSH1[0x64] + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -7733,8 +7138,10 @@ def test_block504980( + Op.SWAP1 + Op.MSTORE + Op.ADD - + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0xC3387858) - + Op.MLOAD(offset=0x360) + + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0xE05DCB56) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0xC0)) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=Op.MLOAD(offset=0xE0)) + + Op.ADD(Op.MLOAD(offset=0x100), 0x2) + Op.ADD(Op.MUL(0x20, Op.DUP2), 0x40) + Op.MSIZE + Op.SWAP1 @@ -7749,7 +7156,7 @@ def test_block504980( address=Op.MLOAD(offset=0x20), value=0x0, args_offset=Op.DUP6, - args_size=0x4, + args_size=0x44, ret_offset=Op.DUP2, ret_size=Op.ADD(0x40, Op.MUL(0x20, Op.DUP2)), ) @@ -7761,26 +7168,6 @@ def test_block504980( + Op.POP + Op.SWAP1 + Op.POP - + Op.PUSH2[0x420] - + Op.MSTORE - + Op.MSTORE(offset=0x4C0, value=0x0) - + Op.MSTORE(offset=0x4E0, value=0x0) - + Op.JUMPDEST - + Op.JUMPI( - pc=0x6D6, - condition=Op.ISZERO( - Op.SLT(Op.MLOAD(offset=0x4C0), Op.MLOAD(offset=0x360)) - ), - ) - + Op.MSTORE( - offset=0x60, - value=Op.MLOAD( - offset=Op.ADD( - Op.MLOAD(offset=0x420), - Op.MUL(0x20, Op.MLOAD(offset=0x4C0)), - ) - ), - ) + Op.PUSH1[0x1C] + Op.PUSH1[0x64] + Op.MSIZE @@ -7791,80 +7178,38 @@ def test_block504980( + Op.SWAP1 + Op.MSTORE + Op.ADD - + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0x74AF23EC) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=Op.MLOAD(offset=0x260)) + + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0xFA9832D1) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0xC0)) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=Op.MLOAD(offset=0xE0)) + + Op.MLOAD(offset=0x100) + + Op.ADD(Op.MUL(0x20, Op.DUP2), 0x40) + + Op.MSIZE + + Op.SWAP1 + + Op.MSIZE + + Op.ADD + + Op.PUSH1[0x0] + + Op.SWAP1 + + Op.MSTORE + Op.POP( Op.CALL( gas=Op.SUB(Op.GAS, 0x2D), - address=Op.ADDRESS, + address=Op.MLOAD(offset=0x20), value=0x0, - args_offset=Op.DUP4, + args_offset=Op.DUP6, args_size=0x44, - ret_offset=0x5C0, - ret_size=0x20, + ret_offset=Op.DUP2, + ret_size=Op.ADD(0x40, Op.MUL(0x20, Op.DUP2)), ) ) - + Op.MLOAD(offset=0x5C0) + + Op.ADD(Op.DUP2, 0x40) + Op.SWAP1 + Op.POP - + Op.PUSH2[0x500] - + Op.MSTORE - + Op.JUMPI( - pc=0x6C6, - condition=Op.ISZERO(Op.ISZERO(Op.EQ(Op.MLOAD(offset=0x500), 0x0))), - ) - + Op.MSTORE( - offset=Op.ADD( - Op.MLOAD(offset=0x3C0), Op.MUL(0x20, Op.MLOAD(offset=0x4E0)) - ), - value=Op.MLOAD(offset=0x60), - ) - + Op.MSTORE( - offset=Op.ADD( - Op.MLOAD(offset=0x3C0), - Op.MUL(0x20, Op.ADD(Op.MLOAD(offset=0x4E0), 0x1)), - ), - value=Op.MLOAD(offset=0x500), - ) - + Op.MSTORE(offset=0x4E0, value=Op.ADD(Op.MLOAD(offset=0x4E0), 0x2)) - + Op.JUMPDEST - + Op.MSTORE(offset=0x4C0, value=Op.ADD(Op.MLOAD(offset=0x4C0), 0x1)) - + Op.JUMP(pc=0x628) - + Op.JUMPDEST * 2 - + Op.MLOAD(offset=0x3C0) - + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x40), value=0x20) - + Op.RETURN( - offset=Op.SUB(Op.DUP3, 0x40), - size=Op.ADD( - 0x40, Op.MUL(Op.MLOAD(offset=Op.SUB(Op.DUP3, 0x20)), 0x20) - ), - ) - + Op.POP - + Op.JUMPDEST - + Op.JUMPI(pc=0x735, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x80B5E7BD))) - + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) - + Op.PUSH1[0x60] * 2 - + Op.MSIZE - + Op.SWAP1 - + Op.MSIZE - + Op.ADD - + Op.PUSH1[0x0] + Op.SWAP1 - + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x1) - + Op.DUP1 + + Op.POP + Op.SWAP1 + Op.POP - + Op.MSTORE(offset=0x600, value=Op.SLOAD(key=Op.SHA3)) - + Op.RETURN(offset=0x600, size=0x20) - + Op.JUMPDEST - + Op.JUMPI(pc=0x786, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x156F1C32))) - + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) - + Op.MSTORE(offset=0x640, value=Op.CALLDATALOAD(offset=0x24)) - + Op.PUSH1[0x80] * 2 + + Op.PUSH1[0x1C] + + Op.PUSH1[0x84] + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -7872,18 +7217,13 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x2) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=Op.MLOAD(offset=0x640)) - + Op.DUP1 - + Op.SWAP1 - + Op.POP - + Op.MSTORE(offset=0x660, value=Op.SLOAD(key=Op.SHA3)) - + Op.RETURN(offset=0x660, size=0x20) - + Op.JUMPDEST - + Op.JUMPI(pc=0x878, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0xB3A24FC0))) - + Op.CALLDATASIZE + + Op.ADD + + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0xAAD7D6E3) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0xC0)) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=Op.MLOAD(offset=0xE0)) + + Op.PUSH1[0x60] + + Op.PUSH1[0x1C] + + Op.PUSH2[0x14C] + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -7891,121 +7231,130 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.CALLDATACOPY( - dest_offset=Op.DUP3, offset=0x4, size=Op.CALLDATASIZE - ) - + Op.MSTORE( - offset=0x6C0, - value=Op.ADD(Op.ADD(Op.DUP3, 0x20), Op.CALLDATALOAD(offset=0x4)), - ) - + Op.MSTORE(offset=0x6E0, value=Op.CALLDATALOAD(offset=0x24)) - + Op.POP - + Op.ADD(Op.MLOAD(offset=Op.SUB(Op.MLOAD(offset=0x6C0), 0x20)), 0x2) - + Op.ADD(0x20, Op.MUL(0x20, Op.DUP1)) - + Op.MSIZE - + Op.SWAP1 - + Op.MSIZE + Op.ADD - + Op.PUSH1[0x0] - + Op.SWAP1 - + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=Op.DUP2) - + Op.ADD(Op.DUP2, 0x20) + + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0x5B180229) + + Op.DUP4 + + Op.ADD(0x20, Op.MUL(0x20, Op.MLOAD(offset=Op.SUB(Op.DUP2, 0x20)))) + + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0x4), value=Op.DUP4) + + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0x64), value=Op.SUB(Op.DUP3, 0x20)) + + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0xC8), value=Op.DUP1) + + Op.ADD(Op.DUP5, Op.DUP1) + + Op.SWAP4 + + Op.POP * 3 + + Op.DUP5 + + Op.ADD(0x20, Op.MUL(0x20, Op.MLOAD(offset=Op.SUB(Op.DUP2, 0x20)))) + + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0x24), value=Op.DUP4) + + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0x84), value=Op.SUB(Op.DUP3, 0x20)) + + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0xE8), value=Op.DUP1) + + Op.ADD(Op.DUP5, Op.DUP1) + + Op.SWAP4 + + Op.POP * 3 + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x44), value=Op.MLOAD(offset=0x100)) + + Op.ADD(0x4, Op.DUP2) + + Op.MSIZE + Op.SWAP1 - + Op.POP + + Op.MSIZE + + Op.ADD + + Op.PUSH1[0x0] + Op.SWAP1 - + Op.POP - + Op.PUSH2[0x700] + Op.MSTORE - + Op.MSTORE(offset=Op.MLOAD(offset=0x700), value=Op.ORIGIN) - + Op.MSTORE( - offset=Op.ADD(Op.MLOAD(offset=0x700), 0x20), - value=Op.MLOAD(offset=0x6E0), + + Op.JUMPI( + pc=0x901, + condition=Op.CALL( + gas=0x1C, + address=0x4, + value=0x0, + args_offset=Op.DUP5, + args_size=0x64, + ret_offset=Op.DUP2, + ret_size=0x64, + ), ) - + Op.MSTORE(offset=0x4C0, value=0x2) + + Op.INVALID + Op.JUMPDEST + + Op.ADD(Op.DUP2, 0x64) + + Op.SWAP3 + + Op.POP + + Op.MLOAD(offset=Op.ADD(Op.DUP3, 0xC8)) + + Op.DUP1 + Op.JUMPI( - pc=0x838, - condition=Op.ISZERO( - Op.SLT( - Op.MLOAD(offset=0x4C0), - Op.ADD( - Op.MLOAD(offset=Op.SUB(Op.MLOAD(offset=0x6C0), 0x20)), - 0x2, - ), - ) + pc=0x927, + condition=Op.CALL( + gas=Op.ADD(0x12, Op.SDIV(Op.DUP8, 0xA)), + address=0x4, + value=0x0, + args_offset=Op.MLOAD(offset=Op.ADD(Op.DUP8, 0x64)), + args_size=Op.DUP3, + ret_offset=Op.DUP6, + ret_size=Op.DUP1, ), ) - + Op.MSTORE( - offset=Op.ADD( - Op.MLOAD(offset=0x700), Op.MUL(0x20, Op.MLOAD(offset=0x4C0)) - ), - value=Op.MLOAD( - offset=Op.ADD( - Op.MLOAD(offset=0x6C0), - Op.MUL(0x20, Op.SUB(Op.MLOAD(offset=0x4C0), 0x2)), - ) + + Op.INVALID + + Op.JUMPDEST + + Op.POP + + Op.ADD(Op.DUP5, Op.DUP1) + + Op.SWAP4 + + Op.POP * 2 + + Op.MLOAD(offset=Op.ADD(Op.DUP3, 0xE8)) + + Op.DUP1 + + Op.JUMPI( + pc=0x94E, + condition=Op.CALL( + gas=Op.ADD(0x12, Op.SDIV(Op.DUP8, 0xA)), + address=0x4, + value=0x0, + args_offset=Op.MLOAD(offset=Op.ADD(Op.DUP8, 0x84)), + args_size=Op.DUP3, + ret_offset=Op.DUP6, + ret_size=Op.DUP1, ), ) - + Op.MSTORE(offset=0x4C0, value=Op.ADD(Op.MLOAD(offset=0x4C0), 0x1)) - + Op.JUMP(pc=0x7F6) + + Op.INVALID + Op.JUMPDEST - + Op.MUL(0x20, Op.MLOAD(offset=Op.SUB(Op.MLOAD(offset=0x700), 0x20))) - + Op.PUSH1[0x20] - + Op.MSIZE - + Op.SWAP1 - + Op.MSIZE - + Op.ADD - + Op.PUSH1[0x0] - + Op.SWAP1 - + Op.MSTORE + + Op.POP + + Op.ADD(Op.DUP5, Op.DUP1) + + Op.SWAP4 + + Op.POP * 2 + + Op.SUB(Op.DUP4, Op.DUP1) + Op.POP( Op.CALL( - gas=Op.ADD(0x48, Op.DUP8), - address=0x2, + gas=Op.SUB(Op.GAS, 0x2D), + address=Op.MLOAD(offset=0x80), value=0x0, - args_offset=Op.MLOAD(offset=0x700), - args_size=Op.DUP4, - ret_offset=Op.DUP2, + args_offset=Op.DUP5, + args_size=Op.DUP3, + ret_offset=0x440, ret_size=0x20, ) ) - + Op.MLOAD(offset=Op.DUP1) + + Op.MLOAD(offset=0x440) + Op.SWAP1 + Op.POP + Op.SWAP1 + Op.POP - + Op.PUSH2[0x760] - + Op.MSTORE - + Op.MSTORE(offset=0x7C0, value=Op.MLOAD(offset=0x760)) - + Op.RETURN(offset=0x7C0, size=0x20) - + Op.JUMPDEST - + Op.JUMPI(pc=0xA1C, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0xE346F5FC))) - + Op.MSTORE(offset=0x7E0, value=Op.CALLDATALOAD(offset=0x4)) - + Op.MSTORE(offset=0x800, value=Op.CALLDATALOAD(offset=0x24)) - + Op.MSTORE(offset=0x4C0, value=0x0) - + Op.JUMPDEST - + Op.PUSH1[0x60] * 2 - + Op.MSIZE - + Op.SWAP1 - + Op.MSIZE - + Op.ADD - + Op.PUSH1[0x0] + Op.SWAP1 - + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x7E0)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x1) - + Op.DUP1 + + Op.POP + Op.SWAP1 + Op.POP - + Op.JUMPI( - pc=0x9E6, - condition=Op.ISZERO( - Op.SLT(Op.MLOAD(offset=0x4C0), Op.SLOAD(key=Op.SHA3)) - ), + + Op.ADD(Op.DUP3, 0x44) + + Op.MSTORE + + Op.POP( + Op.CALL( + gas=Op.SUB(Op.GAS, 0x2D), + address=Op.MLOAD(offset=0x20), + value=0x0, + args_offset=Op.DUP4, + args_size=0x64, + ret_offset=0x460, + ret_size=0x20, + ) ) - + Op.PUSH1[0xA0] * 2 + + Op.MLOAD(offset=0x460) + + Op.SWAP1 + + Op.POP * 2 + + Op.PUSH1[0x60] + + Op.PUSH1[0x1C] + + Op.PUSH2[0x14C] + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -8013,17 +7362,19 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x7E0)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x0) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=Op.MLOAD(offset=0x4C0)) - + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x1) - + Op.DUP1 - + Op.SWAP1 - + Op.POP - + Op.MSTORE(offset=0x840, value=Op.SLOAD(key=Op.SHA3)) - + Op.MLOAD(offset=0x840) - + Op.PUSH1[0xA0] * 2 + + Op.ADD + + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0x222A8663) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0xC0)) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=Op.MLOAD(offset=0xE0)) + + Op.DUP3 + + Op.ADD(0x20, Op.MUL(0x20, Op.MLOAD(offset=Op.SUB(Op.DUP2, 0x20)))) + + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0x44), value=Op.DUP4) + + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0xA4), value=Op.SUB(Op.DUP3, 0x20)) + + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0x108), value=Op.DUP1) + + Op.ADD(Op.DUP5, Op.DUP1) + + Op.SWAP4 + + Op.POP * 3 + + Op.ADD(0x4, Op.DUP2) + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -8031,34 +7382,76 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x800)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x0) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=Op.MLOAD(offset=0x4C0)) - + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x1) + + Op.JUMPI( + pc=0xA07, + condition=Op.CALL( + gas=0x1C, + address=0x4, + value=0x0, + args_offset=Op.DUP5, + args_size=0x64, + ret_offset=Op.DUP2, + ret_size=0x64, + ), + ) + + Op.INVALID + + Op.JUMPDEST + + Op.ADD(Op.DUP2, 0x64) + + Op.SWAP3 + + Op.POP + + Op.MLOAD(offset=Op.ADD(Op.DUP3, 0x108)) + Op.DUP1 + + Op.JUMPI( + pc=0xA2E, + condition=Op.CALL( + gas=Op.ADD(0x12, Op.SDIV(Op.DUP8, 0xA)), + address=0x4, + value=0x0, + args_offset=Op.MLOAD(offset=Op.ADD(Op.DUP8, 0xA4)), + args_size=Op.DUP3, + ret_offset=Op.DUP6, + ret_size=Op.DUP1, + ), + ) + + Op.INVALID + + Op.JUMPDEST + + Op.POP + + Op.ADD(Op.DUP5, Op.DUP1) + + Op.SWAP4 + + Op.POP * 2 + + Op.SUB(Op.DUP4, Op.DUP1) + + Op.POP( + Op.CALL( + gas=Op.SUB(Op.GAS, 0x2D), + address=Op.MLOAD(offset=0x20), + value=0x0, + args_offset=Op.DUP5, + args_size=Op.DUP3, + ret_offset=0x480, + ret_size=0x20, + ) + ) + + Op.MLOAD(offset=0x480) + Op.SWAP1 + Op.POP - + Op.SHA3 - + Op.SSTORE - + Op.PUSH1[0xA0] * 2 - + Op.MSIZE + Op.SWAP1 - + Op.MSIZE - + Op.ADD - + Op.PUSH1[0x0] - + Op.SWAP1 - + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x7E0)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x0) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=Op.MLOAD(offset=0x4C0)) - + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x0) - + Op.DUP1 + + Op.POP + Op.SWAP1 + Op.POP - + Op.SLOAD(key=Op.SHA3) - + Op.PUSH1[0xA0] * 2 + + Op.SWAP1 + + Op.POP * 2 + + Op.MSTORE(offset=0x4A0, value=0x1) + + Op.RETURN(offset=0x4A0, size=0x20) + + Op.POP * 2 + + Op.JUMPDEST + + Op.JUMPI(pc=0xD4B, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0xD5DC5AF1))) + + Op.MSTORE(offset=0xC0, value=Op.CALLDATALOAD(offset=0x4)) + + Op.MSTORE(offset=0xE0, value=Op.CALLDATALOAD(offset=0x24)) + + Op.MSTORE(offset=0x100, value=Op.CALLDATALOAD(offset=0x44)) + + Op.MSTORE(offset=0x120, value=Op.CALLDATALOAD(offset=0x64)) + + Op.MSTORE(offset=0x140, value=Op.CALLDATALOAD(offset=0x84)) + + Op.PUSH1[0x1C] + + Op.PUSH1[0x64] + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -8066,18 +7459,12 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x800)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x0) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=Op.MLOAD(offset=0x4C0)) - + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x0) - + Op.DUP1 - + Op.SWAP1 - + Op.POP - + Op.SHA3 - + Op.SSTORE - + Op.MLOAD(offset=0x4C0) - + Op.PUSH1[0x80] * 2 + + Op.ADD + + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0xE05DCB56) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0xC0)) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=Op.MLOAD(offset=0xE0)) + + Op.ADD(Op.MLOAD(offset=0x100), 0x2) + + Op.ADD(Op.MUL(0x20, Op.DUP2), 0x40) + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -8085,42 +7472,26 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x800)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x2) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=Op.MLOAD(offset=0x840)) - + Op.DUP1 + + Op.POP( + Op.CALL( + gas=Op.SUB(Op.GAS, 0x2D), + address=Op.MLOAD(offset=0x20), + value=0x0, + args_offset=Op.DUP6, + args_size=0x44, + ret_offset=Op.DUP2, + ret_size=Op.ADD(0x40, Op.MUL(0x20, Op.DUP2)), + ) + ) + + Op.ADD(Op.DUP2, 0x40) + Op.SWAP1 + Op.POP - + Op.SHA3 - + Op.SSTORE - + Op.MSTORE(offset=0x4C0, value=Op.ADD(Op.MLOAD(offset=0x4C0), 0x1)) - + Op.JUMP(pc=0x899) - + Op.JUMPDEST - + Op.MLOAD(offset=0x4C0) - + Op.PUSH1[0x60] * 2 - + Op.MSIZE - + Op.SWAP1 - + Op.MSIZE - + Op.ADD - + Op.PUSH1[0x0] + Op.SWAP1 - + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x800)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x1) - + Op.DUP1 + + Op.POP + Op.SWAP1 + Op.POP - + Op.SHA3 - + Op.SSTORE - + Op.MSTORE(offset=0x920, value=0x1) - + Op.RETURN(offset=0x920, size=0x20) - + Op.JUMPDEST - + Op.JUMPI(pc=0xB54, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x3FB57036))) - + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) - + Op.MSTORE(offset=0x940, value=Op.CALLDATALOAD(offset=0x24)) - + Op.PUSH1[0x60] * 2 + + Op.PUSH1[0x1C] + + Op.PUSH1[0x64] + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -8128,15 +7499,12 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x1) - + Op.DUP1 - + Op.SWAP1 - + Op.POP - + Op.MSTORE(offset=0x960, value=Op.SLOAD(key=Op.SHA3)) - + Op.MLOAD(offset=0x960) - + Op.PUSH1[0x80] * 2 + + Op.ADD + + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0x2C5A40D5) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0xC0)) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=Op.MLOAD(offset=0xE0)) + + Op.MLOAD(offset=0x140) + + Op.ADD(Op.MUL(0x20, Op.DUP2), 0x40) + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -8144,36 +7512,27 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x2) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=Op.MLOAD(offset=0x940)) - + Op.DUP1 + + Op.POP( + Op.CALL( + gas=Op.SUB(Op.GAS, 0x2D), + address=Op.MLOAD(offset=0x20), + value=0x0, + args_offset=Op.DUP6, + args_size=0x44, + ret_offset=Op.DUP2, + ret_size=Op.ADD(0x40, Op.MUL(0x20, Op.DUP2)), + ) + ) + + Op.ADD(Op.DUP2, 0x40) + Op.SWAP1 + Op.POP - + Op.SHA3 - + Op.SSTORE - + Op.PUSH1[0x0] - + Op.PUSH1[0xA0] * 2 - + Op.MSIZE + Op.SWAP1 - + Op.MSIZE - + Op.ADD - + Op.PUSH1[0x0] - + Op.SWAP1 - + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x0) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=Op.MLOAD(offset=0x960)) - + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x0) - + Op.DUP1 + + Op.POP + Op.SWAP1 + Op.POP - + Op.SHA3 - + Op.SSTORE - + Op.MLOAD(offset=0x940) - + Op.PUSH1[0xA0] * 2 + + Op.PUSH1[0x80] + + Op.PUSH1[0x1C] + + Op.PUSH2[0x1AC] + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -8181,18 +7540,27 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x0) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=Op.MLOAD(offset=0x960)) - + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x1) - + Op.DUP1 - + Op.SWAP1 - + Op.POP - + Op.SHA3 - + Op.SSTORE - + Op.PUSH1[0x1] - + Op.PUSH1[0x60] * 2 + + Op.ADD + + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0xF4CA7DC4) + + Op.DUP4 + + Op.ADD(0x20, Op.MUL(0x20, Op.MLOAD(offset=Op.SUB(Op.DUP2, 0x20)))) + + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0x4), value=Op.DUP4) + + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0x84), value=Op.SUB(Op.DUP3, 0x20)) + + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0x108), value=Op.DUP1) + + Op.ADD(Op.DUP5, Op.DUP1) + + Op.SWAP4 + + Op.POP * 3 + + Op.DUP3 + + Op.ADD(0x20, Op.MUL(0x20, Op.MLOAD(offset=Op.SUB(Op.DUP2, 0x20)))) + + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0x24), value=Op.DUP4) + + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0xA4), value=Op.SUB(Op.DUP3, 0x20)) + + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0x128), value=Op.DUP1) + + Op.ADD(Op.DUP5, Op.DUP1) + + Op.SWAP4 + + Op.POP * 3 + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x44), value=Op.MLOAD(offset=0x120)) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x64), value=Op.MLOAD(offset=0x100)) + + Op.ADD(0x4, Op.DUP2) + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -8200,15 +7568,66 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x1) + + Op.JUMPI( + pc=0xBE7, + condition=Op.CALL( + gas=0x1F, + address=0x4, + value=0x0, + args_offset=Op.DUP5, + args_size=0x84, + ret_offset=Op.DUP2, + ret_size=0x84, + ), + ) + + Op.INVALID + + Op.JUMPDEST + + Op.ADD(Op.DUP2, 0x84) + + Op.SWAP3 + + Op.POP + + Op.MLOAD(offset=Op.ADD(Op.DUP3, 0x108)) + Op.DUP1 - + Op.SWAP1 + + Op.JUMPI( + pc=0xC0E, + condition=Op.CALL( + gas=Op.ADD(0x12, Op.SDIV(Op.DUP8, 0xA)), + address=0x4, + value=0x0, + args_offset=Op.MLOAD(offset=Op.ADD(Op.DUP8, 0x84)), + args_size=Op.DUP3, + ret_offset=Op.DUP6, + ret_size=Op.DUP1, + ), + ) + + Op.INVALID + + Op.JUMPDEST + Op.POP - + Op.SLOAD(key=Op.SHA3) - + Op.ADD - + Op.PUSH1[0x60] * 2 + + Op.ADD(Op.DUP5, Op.DUP1) + + Op.SWAP4 + + Op.POP * 2 + + Op.MLOAD(offset=Op.ADD(Op.DUP3, 0x128)) + + Op.DUP1 + + Op.JUMPI( + pc=0xC36, + condition=Op.CALL( + gas=Op.ADD(0x12, Op.SDIV(Op.DUP8, 0xA)), + address=0x4, + value=0x0, + args_offset=Op.MLOAD(offset=Op.ADD(Op.DUP8, 0xA4)), + args_size=Op.DUP3, + ret_offset=Op.DUP6, + ret_size=Op.DUP1, + ), + ) + + Op.INVALID + + Op.JUMPDEST + + Op.POP + + Op.ADD(Op.DUP5, Op.DUP1) + + Op.SWAP4 + + Op.POP * 2 + + Op.SUB(Op.DUP4, Op.DUP1) + + Op.MLOAD(offset=0x140) + + Op.ADD(Op.MUL(0x20, Op.DUP2), 0x40) + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -8216,23 +7635,35 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x1) - + Op.DUP1 - + Op.SWAP1 - + Op.POP - + Op.SHA3 - + Op.SSTORE - + Op.MSTORE(offset=0xA40, value=0x1) - + Op.RETURN(offset=0xA40, size=0x20) - + Op.JUMPDEST - + Op.JUMPI(pc=0xBEB, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x12709A33))) - + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) - + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) - + Op.MSTORE(offset=0xA60, value=Op.CALLDATALOAD(offset=0x44)) - + Op.MLOAD(offset=0xA60) - + Op.PUSH1[0xA0] * 2 + + Op.POP( + Op.CALL( + gas=Op.SUB(Op.GAS, 0x2D), + address=Op.MLOAD(offset=0x80), + value=0x0, + args_offset=Op.DUP7, + args_size=Op.DUP5, + ret_offset=Op.DUP2, + ret_size=Op.ADD(0x40, Op.MUL(0x20, Op.DUP2)), + ) + ) + + Op.ADD(Op.DUP2, 0x40) + + Op.SWAP1 + + Op.POP + + Op.SWAP1 + + Op.POP + + Op.SWAP1 + + Op.POP + + Op.SWAP1 + + Op.POP + + Op.SWAP1 + + Op.POP + + Op.SWAP1 + + Op.POP + + Op.SWAP1 + + Op.POP + + Op.PUSH1[0x60] + + Op.PUSH1[0x1C] + + Op.PUSH2[0x14C] + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -8240,17 +7671,19 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x0) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=Op.MLOAD(offset=0x80)) - + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x0) - + Op.DUP1 - + Op.SWAP1 - + Op.POP - + Op.SLOAD(key=Op.SHA3) + Op.ADD - + Op.PUSH1[0xA0] * 2 + + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0xB39E1FAA) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0xC0)) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=Op.MLOAD(offset=0xE0)) + + Op.DUP3 + + Op.ADD(0x20, Op.MUL(0x20, Op.MLOAD(offset=Op.SUB(Op.DUP2, 0x20)))) + + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0x44), value=Op.DUP4) + + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0xA4), value=Op.SUB(Op.DUP3, 0x20)) + + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0x108), value=Op.DUP1) + + Op.ADD(Op.DUP5, Op.DUP1) + + Op.SWAP4 + + Op.POP * 3 + + Op.ADD(0x4, Op.DUP2) + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -8258,25 +7691,76 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x0) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=Op.MLOAD(offset=0x80)) - + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x0) + + Op.JUMPI( + pc=0xCEC, + condition=Op.CALL( + gas=0x1C, + address=0x4, + value=0x0, + args_offset=Op.DUP5, + args_size=0x64, + ret_offset=Op.DUP2, + ret_size=0x64, + ), + ) + + Op.INVALID + + Op.JUMPDEST + + Op.ADD(Op.DUP2, 0x64) + + Op.SWAP3 + + Op.POP + + Op.MLOAD(offset=Op.ADD(Op.DUP3, 0x108)) + Op.DUP1 + + Op.JUMPI( + pc=0xD13, + condition=Op.CALL( + gas=Op.ADD(0x12, Op.SDIV(Op.DUP8, 0xA)), + address=0x4, + value=0x0, + args_offset=Op.MLOAD(offset=Op.ADD(Op.DUP8, 0xA4)), + args_size=Op.DUP3, + ret_offset=Op.DUP6, + ret_size=Op.DUP1, + ), + ) + + Op.INVALID + + Op.JUMPDEST + + Op.POP + + Op.ADD(Op.DUP5, Op.DUP1) + + Op.SWAP4 + + Op.POP * 2 + + Op.SUB(Op.DUP4, Op.DUP1) + + Op.POP( + Op.CALL( + gas=Op.SUB(Op.GAS, 0x2D), + address=Op.MLOAD(offset=0x20), + value=0x0, + args_offset=Op.DUP5, + args_size=Op.DUP3, + ret_offset=0x4C0, + ret_size=0x20, + ) + ) + + Op.MLOAD(offset=0x4C0) + Op.SWAP1 + Op.POP - + Op.SHA3 - + Op.SSTORE - + Op.MSTORE(offset=0xAC0, value=0x1) - + Op.RETURN(offset=0xAC0, size=0x20) + + Op.SWAP1 + + Op.POP + + Op.SWAP1 + + Op.POP + + Op.SWAP1 + + Op.POP * 2 + + Op.MSTORE(offset=0x4E0, value=0x1) + + Op.RETURN(offset=0x4E0, size=0x20) + + Op.POP * 2 + Op.JUMPDEST - + Op.JUMPI(pc=0xC82, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x3229CF6E))) - + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) - + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) - + Op.MSTORE(offset=0xA60, value=Op.CALLDATALOAD(offset=0x44)) - + Op.MLOAD(offset=0xA60) - + Op.PUSH1[0xA0] * 2 + + Op.JUMPI(pc=0x114C, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x939AA8C))) + + Op.MSTORE(offset=0xC0, value=Op.CALLDATALOAD(offset=0x4)) + + Op.MSTORE(offset=0xE0, value=Op.CALLDATALOAD(offset=0x24)) + + Op.MSTORE(offset=0x100, value=Op.CALLDATALOAD(offset=0x44)) + + Op.MSTORE(offset=0x120, value=Op.CALLDATALOAD(offset=0x64)) + + Op.MSTORE(offset=0x140, value=Op.CALLDATALOAD(offset=0x84)) + + Op.PUSH1[0x1C] + + Op.PUSH1[0x64] + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -8284,17 +7768,12 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x0) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=Op.MLOAD(offset=0x80)) - + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x0) - + Op.DUP1 - + Op.SWAP1 - + Op.POP - + Op.SLOAD(key=Op.SHA3) - + Op.SUB - + Op.PUSH1[0xA0] * 2 + + Op.ADD + + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0xE05DCB56) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0xC0)) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=Op.MLOAD(offset=0xE0)) + + Op.ADD(Op.MLOAD(offset=0x100), 0x2) + + Op.ADD(Op.MUL(0x20, Op.DUP2), 0x40) + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -8302,25 +7781,26 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x0) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=Op.MLOAD(offset=0x80)) - + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x0) - + Op.DUP1 + + Op.POP( + Op.CALL( + gas=Op.SUB(Op.GAS, 0x2D), + address=Op.MLOAD(offset=0x20), + value=0x0, + args_offset=Op.DUP6, + args_size=0x44, + ret_offset=Op.DUP2, + ret_size=Op.ADD(0x40, Op.MUL(0x20, Op.DUP2)), + ) + ) + + Op.ADD(Op.DUP2, 0x40) + Op.SWAP1 + Op.POP - + Op.SHA3 - + Op.SSTORE - + Op.MSTORE(offset=0xB20, value=0x1) - + Op.RETURN(offset=0xB20, size=0x20) - + Op.JUMPDEST - + Op.JUMPI(pc=0xCE5, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0xA75F5C6A))) - + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x4)) - + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x24)) - + Op.MSTORE(offset=0xA60, value=Op.CALLDATALOAD(offset=0x44)) - + Op.MLOAD(offset=0xA60) - + Op.PUSH1[0xA0] * 2 + + Op.SWAP1 + + Op.POP + + Op.SWAP1 + + Op.POP + + Op.PUSH1[0x1C] + + Op.PUSH1[0x64] + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -8328,48 +7808,12 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=0x0) - + Op.MSTORE(offset=Op.ADD(0x20, Op.DUP2), value=Op.MLOAD(offset=0x60)) - + Op.MSTORE(offset=Op.ADD(0x40, Op.DUP2), value=0x0) - + Op.MSTORE(offset=Op.ADD(0x60, Op.DUP2), value=Op.MLOAD(offset=0x80)) - + Op.MSTORE(offset=Op.ADD(0x80, Op.DUP2), value=0x0) - + Op.DUP1 - + Op.SWAP1 - + Op.POP - + Op.SHA3 - + Op.SSTORE - + Op.MSTORE(offset=0xB60, value=0x1) - + Op.RETURN(offset=0xB60, size=0x20) - + Op.JUMPDEST - + Op.POP, - storage={ - 0xF299DBBE3A7A5D949FE794E9A47B3106699C8110FF986EB84921C183E69E7F0: 0x2F0000000000000000, # noqa: E501 - 0x1EDCD36F61CAE5DC6414157DFBADF9F11CA013AC763E27F8AF55FEAA8A239C89: 1, # noqa: E501 - 0x689082D076EC3C02CBE4B99F6D9833E3C4A161072FD42FB7649EEE5189A67CCC: 0x63524E3FE4791AEFCE1E932BBFB3FDF375BFAD89, # noqa: E501 - 0xAF1D6676BE3AB502A59D91F6F5C49BAFFC15B2CFC65A41C4D96857C0F535ADBA: 0x1D60000000000000000, # noqa: E501 - 0xDF1A770F69D93D1719292F384FDB4DA22C0E88AEF2BA462BFF16674BC7848730: 0x1C11AA45C792E202E9FFDC2F12F99D0D209BEF70, # noqa: E501 - 0xEC5E7F54FA5E516E616B04F9D5A0EE433A80E09ED47D7E5269AFD76C05FF251E: 2, # noqa: E501 - }, - nonce=0, - address=Address(0xE509E3A93BEB1EBA72F8CB8D25F93A85E2D54AFB), # noqa: E501 - ) - # Source: raw - # 0x600061067f537c010000000000000000000000000000000000000000000000000000000060003504632f300bee8114156100ac576004356040526024356060526044356080526002608051018080602002602001599059016000905281815260208101905090506801000000000000000081526060516080516020028201526001604051036001608051016020028201528060206040820352602060208203510260400160408203f35050505b63a647a5b98114156102c85736599059016000905236600482376004356020820101610100526024356020820101610160526044356020820101610180526064356101a05260843560805250602061010051035180806020026020015990590160009052818152602081019050905060005b6101a0518112156101d557600060005b608051811215610162578060200261010051015181608051850201602002610160510151028201915060018101905061012e565b50680100000000000000008105905060005b6080518112156101c857700100000000000000000000000000000000836020026101805101518260805186020160200261016051015184020205816020028501510381602002850152600181019050610174565b505060018101905061011e565b50600060005b60805181121561020357806020028301518160200284015102820191506001810190506101db565b5068010000000000000000810590506002810560005b600b81121561024257600282680100000000000000008502058301059150600181019050610219565b5060005b60805181121561027657816801000000000000000082602002860151020581602002850152600181019050610246565b5050506001608051602002610100510151036080516020028201526001608051016020026101005101516001608051016020028201528060206040820352602060208203510260400160408203f35050505b635b18022981141561037957365990590160009052366004823760043560208201016103005260243560208201016103205260443560805250600060005b60805181121561033f57680100000000000000008160200261032051015182602002610300510151020582019150600181019050610306565b6000610320515114151561036657610320515168010000000000000000830205915061036b565b600091505b81610380526020610380f350505b63f4ca7dc481141561057157365990590160009052366004823760043560208201016103a05260243560208201016103c0526044356101a0526064356080525060206103c051035160026080510a806020026020015990590160009052818152602081019050905060005b60805181121561044d5760005b6080518112156104415768010000000000000000816020026103a0510151836020026103a051015102058160805184020160200284015101816080518402016020028401526001810190506103f1565b506001810190506103e4565b81905090508180602002602001599059016000905281815260208101905090506080516101a05102806020026020015990590160009052818152602081019050905060005b6101a05181121561051e5760005b6080518112156105125760005b608051811215610506576801000000000000000082608051830201602002870151826080518602016020026103c051015102058260805185020160200285015101826080518502016020028501526001810190506104ad565b506001810190506104a0565b50600181019050610492565b819050905060005b848112156105525780602002820151816020026103c05101510381602002840152600181019050610526565b508160206040820352602060208203510260400160408203f350505050505b63232b273481141561069d57365990590160009052366004823760043560208201016106205260243560208201016102805260443560208201016103c052606435610640526084356101a05260a435608052506000610280515112156106025760005b6080518112156106005780602002610280510151600003816020026102805101526001810190506105d4565b505b60005b6101a05181121561067f5760005b60805181121561067357680100000000000000006801000000000000000082602002610280510151610640510205826080518502016020026103c05101510205826020026106205101510182602002610620510152600181019050610613565b50600181019050610605565b6106205160206040820352602060208203510260400160408203f350505b50 # noqa: E501 - contract_11 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE8(offset=0x67F, value=0x0) - + Op.DIV( - Op.CALLDATALOAD(offset=0x0), - 0x100000000000000000000000000000000000000000000000000000000, - ) - + Op.JUMPI( - pc=Op.PUSH2[0xAC], condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x2F300BEE)) - ) - + Op.MSTORE(offset=0x40, value=Op.CALLDATALOAD(offset=0x4)) - + Op.MSTORE(offset=0x60, value=Op.CALLDATALOAD(offset=0x24)) - + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x44)) - + Op.ADD(Op.MLOAD(offset=0x80), 0x2) - + Op.DUP1 - + Op.ADD(0x20, Op.MUL(0x20, Op.DUP1)) + + Op.ADD + + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0x7DC12195) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0xC0)) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=Op.MLOAD(offset=0xE0)) + + Op.MLOAD(offset=0x140) + + Op.ADD(Op.MUL(0x20, Op.DUP2), 0x40) + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -8377,35 +7821,26 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=Op.DUP2) - + Op.ADD(Op.DUP2, 0x20) + + Op.POP( + Op.CALL( + gas=Op.SUB(Op.GAS, 0x2D), + address=Op.MLOAD(offset=0x20), + value=0x0, + args_offset=Op.DUP6, + args_size=0x44, + ret_offset=Op.DUP2, + ret_size=Op.ADD(0x40, Op.MUL(0x20, Op.DUP2)), + ) + ) + + Op.ADD(Op.DUP2, 0x40) + Op.SWAP1 + Op.POP + Op.SWAP1 + Op.POP - + Op.MSTORE(offset=Op.DUP2, value=0x10000000000000000) - + Op.MSTORE( - offset=Op.ADD(Op.DUP3, Op.MUL(0x20, Op.MLOAD(offset=0x80))), - value=Op.MLOAD(offset=0x60), - ) - + Op.MSTORE( - offset=Op.ADD( - Op.DUP3, Op.MUL(0x20, Op.ADD(Op.MLOAD(offset=0x80), 0x1)) - ), - value=Op.SUB(Op.MLOAD(offset=0x40), 0x1), - ) - + Op.DUP1 - + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x40), value=0x20) - + Op.RETURN( - offset=Op.SUB(Op.DUP3, 0x40), - size=Op.ADD( - 0x40, Op.MUL(Op.MLOAD(offset=Op.SUB(Op.DUP3, 0x20)), 0x20) - ), - ) - + Op.POP * 3 - + Op.JUMPDEST - + Op.JUMPI(pc=0x2C8, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0xA647A5B9))) - + Op.CALLDATASIZE + + Op.SWAP1 + + Op.POP + + Op.PUSH1[0x1C] + + Op.PUSH1[0x64] + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -8413,27 +7848,26 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.CALLDATACOPY( - dest_offset=Op.DUP3, offset=0x4, size=Op.CALLDATASIZE - ) - + Op.MSTORE( - offset=0x100, - value=Op.ADD(Op.ADD(Op.DUP3, 0x20), Op.CALLDATALOAD(offset=0x4)), - ) - + Op.MSTORE( - offset=0x160, - value=Op.ADD(Op.ADD(Op.DUP3, 0x20), Op.CALLDATALOAD(offset=0x24)), - ) - + Op.MSTORE( - offset=0x180, - value=Op.ADD(Op.ADD(Op.DUP3, 0x20), Op.CALLDATALOAD(offset=0x44)), + + Op.ADD + + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0x586B5BE0) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0xC0)) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=Op.MLOAD(offset=0xE0)) + + Op.POP( + Op.CALL( + gas=Op.SUB(Op.GAS, 0x2D), + address=Op.MLOAD(offset=0x20), + value=0x0, + args_offset=Op.DUP4, + args_size=0x44, + ret_offset=0x500, + ret_size=0x20, + ) ) - + Op.MSTORE(offset=0x1A0, value=Op.CALLDATALOAD(offset=0x64)) - + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x84)) + + Op.MLOAD(offset=0x500) + + Op.SWAP1 + Op.POP - + Op.MLOAD(offset=Op.SUB(Op.MLOAD(offset=0x100), 0x20)) - + Op.DUP1 - + Op.ADD(0x20, Op.MUL(0x20, Op.DUP1)) + + Op.PUSH1[0x1C] + + Op.PUSH1[0x64] + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -8441,206 +7875,164 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=Op.DUP2) - + Op.ADD(Op.DUP2, 0x20) - + Op.SWAP1 - + Op.POP + + Op.ADD + + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0xEB8AF5AA) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0xC0)) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=Op.MLOAD(offset=0xE0)) + + Op.MLOAD(offset=0x120) + + Op.ADD(Op.MUL(0x20, Op.DUP2), 0x40) + + Op.MSIZE + Op.SWAP1 - + Op.POP + + Op.MSIZE + + Op.ADD + Op.PUSH1[0x0] - + Op.JUMPDEST - + Op.JUMPI( - pc=0x1D5, - condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.MLOAD(offset=0x1A0))), - ) - + Op.PUSH1[0x0] * 2 - + Op.JUMPDEST - + Op.JUMPI( - pc=0x162, - condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.MLOAD(offset=0x80))), - ) - + Op.ADD( - Op.DUP3, - Op.MUL( - Op.MLOAD( - offset=Op.ADD( - Op.MLOAD(offset=0x160), - Op.MUL( - 0x20, - Op.ADD( - Op.MUL(Op.DUP6, Op.MLOAD(offset=0x80)), Op.DUP2 - ), - ), - ) - ), - Op.MLOAD( - offset=Op.ADD( - Op.MLOAD(offset=0x100), Op.MUL(0x20, Op.DUP1) - ) - ), - ), + + Op.SWAP1 + + Op.MSTORE + + Op.POP( + Op.CALL( + gas=Op.SUB(Op.GAS, 0x2D), + address=Op.MLOAD(offset=0x20), + value=0x0, + args_offset=Op.DUP6, + args_size=0x44, + ret_offset=Op.DUP2, + ret_size=Op.ADD(0x40, Op.MUL(0x20, Op.DUP2)), + ) ) - + Op.SWAP2 - + Op.POP - + Op.ADD(Op.DUP2, 0x1) + + Op.ADD(Op.DUP2, 0x40) + Op.SWAP1 + Op.POP - + Op.JUMP(pc=0x12E) - + Op.JUMPDEST + + Op.SWAP1 + Op.POP - + Op.SDIV(Op.DUP2, 0x10000000000000000) + Op.SWAP1 + Op.POP + + Op.PUSH1[0xC0] + + Op.PUSH1[0x1C] + + Op.PUSH2[0x26C] + + Op.MSIZE + + Op.SWAP1 + + Op.MSIZE + + Op.ADD + Op.PUSH1[0x0] - + Op.JUMPDEST + + Op.SWAP1 + + Op.MSTORE + + Op.ADD + + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0x232B2734) + + Op.DUP3 + + Op.ADD(0x20, Op.MUL(0x20, Op.MLOAD(offset=Op.SUB(Op.DUP2, 0x20)))) + + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0x4), value=Op.DUP4) + + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0xC4), value=Op.SUB(Op.DUP3, 0x20)) + + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0x188), value=Op.DUP1) + + Op.ADD(Op.DUP5, Op.DUP1) + + Op.SWAP4 + + Op.POP * 3 + + Op.DUP6 + + Op.ADD(0x20, Op.MUL(0x20, Op.MLOAD(offset=Op.SUB(Op.DUP2, 0x20)))) + + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0x24), value=Op.DUP4) + + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0xE4), value=Op.SUB(Op.DUP3, 0x20)) + + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0x1A8), value=Op.DUP1) + + Op.ADD(Op.DUP5, Op.DUP1) + + Op.SWAP4 + + Op.POP * 3 + + Op.DUP5 + + Op.ADD(0x20, Op.MUL(0x20, Op.MLOAD(offset=Op.SUB(Op.DUP2, 0x20)))) + + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0x44), value=Op.DUP4) + + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0x104), value=Op.SUB(Op.DUP3, 0x20)) + + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0x1C8), value=Op.DUP1) + + Op.ADD(Op.DUP5, Op.DUP1) + + Op.SWAP4 + + Op.POP * 3 + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x64), value=Op.DUP4) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x84), value=Op.MLOAD(offset=0x120)) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0xA4), value=Op.MLOAD(offset=0x100)) + + Op.ADD(0x4, Op.DUP2) + + Op.MSIZE + + Op.SWAP1 + + Op.MSIZE + + Op.ADD + + Op.PUSH1[0x0] + + Op.SWAP1 + + Op.MSTORE + Op.JUMPI( - pc=0x1C8, - condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.MLOAD(offset=0x80))), - ) - + Op.MSTORE( - offset=Op.ADD(Op.DUP6, Op.MUL(0x20, Op.DUP2)), - value=Op.SUB( - Op.MLOAD(offset=Op.ADD(Op.DUP6, Op.MUL(0x20, Op.DUP2))), - Op.SDIV( - Op.MUL( - Op.MUL( - Op.DUP5, - Op.MLOAD( - offset=Op.ADD( - Op.MLOAD(offset=0x160), - Op.MUL( - 0x20, - Op.ADD( - Op.MUL( - Op.DUP7, Op.MLOAD(offset=0x80) - ), - Op.DUP3, - ), - ), - ) - ), - ), - Op.MLOAD( - offset=Op.ADD( - Op.MLOAD(offset=0x180), Op.MUL(0x20, Op.DUP4) - ) - ), - ), - 0x100000000000000000000000000000000, - ), + pc=0xF96, + condition=Op.CALL( + gas=0x25, + address=0x4, + value=0x0, + args_offset=Op.DUP5, + args_size=0xC4, + ret_offset=Op.DUP2, + ret_size=0xC4, ), ) - + Op.ADD(Op.DUP2, 0x1) - + Op.SWAP1 - + Op.POP - + Op.JUMP(pc=0x174) - + Op.JUMPDEST - + Op.POP * 2 - + Op.ADD(Op.DUP2, 0x1) - + Op.SWAP1 - + Op.POP - + Op.JUMP(pc=0x11E) + + Op.INVALID + Op.JUMPDEST + + Op.ADD(Op.DUP2, 0xC4) + + Op.SWAP3 + Op.POP - + Op.PUSH1[0x0] * 2 - + Op.JUMPDEST + + Op.MLOAD(offset=Op.ADD(Op.DUP3, 0x188)) + + Op.DUP1 + Op.JUMPI( - pc=0x203, - condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.MLOAD(offset=0x80))), - ) - + Op.ADD( - Op.DUP3, - Op.MUL( - Op.MLOAD(offset=Op.ADD(Op.DUP5, Op.MUL(0x20, Op.DUP2))), - Op.MLOAD(offset=Op.ADD(Op.DUP4, Op.MUL(0x20, Op.DUP1))), + pc=0xFBD, + condition=Op.CALL( + gas=Op.ADD(0x12, Op.SDIV(Op.DUP8, 0xA)), + address=0x4, + value=0x0, + args_offset=Op.MLOAD(offset=Op.ADD(Op.DUP8, 0xC4)), + args_size=Op.DUP3, + ret_offset=Op.DUP6, + ret_size=Op.DUP1, ), ) - + Op.SWAP2 - + Op.POP - + Op.ADD(Op.DUP2, 0x1) - + Op.SWAP1 - + Op.POP - + Op.JUMP(pc=0x1DB) + + Op.INVALID + Op.JUMPDEST + Op.POP - + Op.SDIV(Op.DUP2, 0x10000000000000000) - + Op.SWAP1 - + Op.POP - + Op.SDIV(Op.DUP2, 0x2) - + Op.PUSH1[0x0] - + Op.JUMPDEST - + Op.JUMPI(pc=0x242, condition=Op.ISZERO(Op.SLT(Op.DUP2, 0xB))) - + Op.SDIV( - Op.ADD( - Op.DUP4, Op.SDIV(Op.MUL(Op.DUP6, 0x10000000000000000), Op.DUP3) - ), - 0x2, - ) - + Op.SWAP2 - + Op.POP - + Op.ADD(Op.DUP2, 0x1) - + Op.SWAP1 - + Op.POP - + Op.JUMP(pc=0x219) - + Op.JUMPDEST - + Op.POP - + Op.PUSH1[0x0] - + Op.JUMPDEST + + Op.ADD(Op.DUP5, Op.DUP1) + + Op.SWAP4 + + Op.POP * 2 + + Op.MLOAD(offset=Op.ADD(Op.DUP3, 0x1A8)) + + Op.DUP1 + Op.JUMPI( - pc=0x276, - condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.MLOAD(offset=0x80))), - ) - + Op.MSTORE( - offset=Op.ADD(Op.DUP6, Op.MUL(0x20, Op.DUP2)), - value=Op.SDIV( - Op.MUL( - Op.MLOAD(offset=Op.ADD(Op.DUP7, Op.MUL(0x20, Op.DUP3))), - 0x10000000000000000, - ), - Op.DUP2, + pc=0xFE5, + condition=Op.CALL( + gas=Op.ADD(0x12, Op.SDIV(Op.DUP8, 0xA)), + address=0x4, + value=0x0, + args_offset=Op.MLOAD(offset=Op.ADD(Op.DUP8, 0xE4)), + args_size=Op.DUP3, + ret_offset=Op.DUP6, + ret_size=Op.DUP1, ), ) - + Op.ADD(Op.DUP2, 0x1) - + Op.SWAP1 - + Op.POP - + Op.JUMP(pc=0x246) + + Op.INVALID + Op.JUMPDEST - + Op.POP * 3 - + Op.MSTORE( - offset=Op.ADD(Op.DUP3, Op.MUL(0x20, Op.MLOAD(offset=0x80))), - value=Op.SUB( - Op.MLOAD( - offset=Op.ADD( - Op.MLOAD(offset=0x100), - Op.MUL(0x20, Op.MLOAD(offset=0x80)), - ) - ), - 0x1, - ), - ) - + Op.MSTORE( - offset=Op.ADD( - Op.DUP3, Op.MUL(0x20, Op.ADD(Op.MLOAD(offset=0x80), 0x1)) - ), - value=Op.MLOAD( - offset=Op.ADD( - Op.MLOAD(offset=0x100), - Op.MUL(0x20, Op.ADD(Op.MLOAD(offset=0x80), 0x1)), - ) - ), - ) + + Op.POP + + Op.ADD(Op.DUP5, Op.DUP1) + + Op.SWAP4 + + Op.POP * 2 + + Op.MLOAD(offset=Op.ADD(Op.DUP3, 0x1C8)) + Op.DUP1 - + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x40), value=0x20) - + Op.RETURN( - offset=Op.SUB(Op.DUP3, 0x40), - size=Op.ADD( - 0x40, Op.MUL(Op.MLOAD(offset=Op.SUB(Op.DUP3, 0x20)), 0x20) + + Op.JUMPI( + pc=0x100E, + condition=Op.CALL( + gas=Op.ADD(0x12, Op.SDIV(Op.DUP8, 0xA)), + address=0x4, + value=0x0, + args_offset=Op.MLOAD(offset=Op.ADD(Op.DUP8, 0x104)), + args_size=Op.DUP3, + ret_offset=Op.DUP6, + ret_size=Op.DUP1, ), ) - + Op.POP * 3 + + Op.INVALID + Op.JUMPDEST - + Op.JUMPI(pc=0x379, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x5B180229))) - + Op.CALLDATASIZE + + Op.POP + + Op.ADD(Op.DUP5, Op.DUP1) + + Op.SWAP4 + + Op.POP * 2 + + Op.SUB(Op.DUP4, Op.DUP1) + + Op.MLOAD(offset=0x120) + + Op.ADD(Op.MUL(0x20, Op.DUP2), 0x40) + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -8648,74 +8040,35 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.CALLDATACOPY( - dest_offset=Op.DUP3, offset=0x4, size=Op.CALLDATASIZE - ) - + Op.MSTORE( - offset=0x300, - value=Op.ADD(Op.ADD(Op.DUP3, 0x20), Op.CALLDATALOAD(offset=0x4)), - ) - + Op.MSTORE( - offset=0x320, - value=Op.ADD(Op.ADD(Op.DUP3, 0x20), Op.CALLDATALOAD(offset=0x24)), + + Op.POP( + Op.CALL( + gas=Op.SUB(Op.GAS, 0x2D), + address=Op.MLOAD(offset=0x80), + value=0x0, + args_offset=Op.DUP7, + args_size=Op.DUP5, + ret_offset=Op.DUP2, + ret_size=Op.ADD(0x40, Op.MUL(0x20, Op.DUP2)), + ) ) - + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x44)) + + Op.ADD(Op.DUP2, 0x40) + + Op.SWAP1 + Op.POP - + Op.PUSH1[0x0] * 2 - + Op.JUMPDEST - + Op.JUMPI( - pc=0x33F, - condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.MLOAD(offset=0x80))), - ) - + Op.ADD( - Op.DUP3, - Op.SDIV( - Op.MUL( - Op.MLOAD( - offset=Op.ADD( - Op.MLOAD(offset=0x300), Op.MUL(0x20, Op.DUP3) - ) - ), - Op.MLOAD( - offset=Op.ADD( - Op.MLOAD(offset=0x320), Op.MUL(0x20, Op.DUP2) - ) - ), - ), - 0x10000000000000000, - ), - ) - + Op.SWAP2 + + Op.SWAP1 + Op.POP - + Op.ADD(Op.DUP2, 0x1) + Op.SWAP1 + Op.POP - + Op.JUMP(pc=0x306) - + Op.JUMPDEST - + Op.JUMPI( - pc=0x366, - condition=Op.ISZERO( - Op.ISZERO(Op.EQ(Op.MLOAD(offset=Op.MLOAD(offset=0x320)), 0x0)) - ), - ) - + Op.SDIV( - Op.MUL(Op.DUP4, 0x10000000000000000), - Op.MLOAD(offset=Op.MLOAD(offset=0x320)), - ) - + Op.SWAP2 + + Op.SWAP1 + Op.POP - + Op.JUMP(pc=0x36B) - + Op.JUMPDEST - + Op.PUSH1[0x0] - + Op.SWAP2 + + Op.SWAP1 + Op.POP - + Op.JUMPDEST - + Op.MSTORE(offset=0x380, value=Op.DUP2) - + Op.RETURN(offset=0x380, size=0x20) - + Op.POP * 2 - + Op.JUMPDEST - + Op.JUMPI(pc=0x571, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0xF4CA7DC4))) - + Op.CALLDATASIZE + + Op.SWAP1 + + Op.POP + + Op.SWAP1 + + Op.POP + + Op.PUSH1[0x60] + + Op.PUSH1[0x1C] + + Op.PUSH2[0x14C] + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -8723,23 +8076,19 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.CALLDATACOPY( - dest_offset=Op.DUP3, offset=0x4, size=Op.CALLDATASIZE - ) - + Op.MSTORE( - offset=0x3A0, - value=Op.ADD(Op.ADD(Op.DUP3, 0x20), Op.CALLDATALOAD(offset=0x4)), - ) - + Op.MSTORE( - offset=0x3C0, - value=Op.ADD(Op.ADD(Op.DUP3, 0x20), Op.CALLDATALOAD(offset=0x24)), - ) - + Op.MSTORE(offset=0x1A0, value=Op.CALLDATALOAD(offset=0x44)) - + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0x64)) - + Op.POP - + Op.MLOAD(offset=Op.SUB(Op.MLOAD(offset=0x3C0), 0x20)) - + Op.EXP(Op.MLOAD(offset=0x80), 0x2) - + Op.ADD(0x20, Op.MUL(0x20, Op.DUP1)) + + Op.ADD + + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0x1112B27) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0xC0)) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=Op.MLOAD(offset=0xE0)) + + Op.DUP3 + + Op.ADD(0x20, Op.MUL(0x20, Op.MLOAD(offset=Op.SUB(Op.DUP2, 0x20)))) + + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0x44), value=Op.DUP4) + + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0xA4), value=Op.SUB(Op.DUP3, 0x20)) + + Op.MSTORE(offset=Op.ADD(Op.DUP5, 0x108), value=Op.DUP1) + + Op.ADD(Op.DUP5, Op.DUP1) + + Op.SWAP4 + + Op.POP * 3 + + Op.ADD(0x4, Op.DUP2) + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -8747,79 +8096,136 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=Op.DUP2) - + Op.ADD(Op.DUP2, 0x20) - + Op.SWAP1 - + Op.POP - + Op.SWAP1 - + Op.POP - + Op.PUSH1[0x0] - + Op.JUMPDEST + Op.JUMPI( - pc=0x44D, - condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.MLOAD(offset=0x80))), + pc=0x10C4, + condition=Op.CALL( + gas=0x1C, + address=0x4, + value=0x0, + args_offset=Op.DUP5, + args_size=0x64, + ret_offset=Op.DUP2, + ret_size=0x64, + ), ) - + Op.PUSH1[0x0] + + Op.INVALID + Op.JUMPDEST + + Op.ADD(Op.DUP2, 0x64) + + Op.SWAP3 + + Op.POP + + Op.MLOAD(offset=Op.ADD(Op.DUP3, 0x108)) + + Op.DUP1 + Op.JUMPI( - pc=0x441, - condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.MLOAD(offset=0x80))), - ) - + Op.MSTORE( - offset=Op.ADD( - Op.DUP5, - Op.MUL( - 0x20, - Op.ADD(Op.MUL(Op.DUP5, Op.MLOAD(offset=0x80)), Op.DUP2), - ), - ), - value=Op.ADD( - Op.MLOAD( - offset=Op.ADD( - Op.DUP5, - Op.MUL( - 0x20, - Op.ADD( - Op.MUL(Op.DUP5, Op.MLOAD(offset=0x80)), Op.DUP2 - ), - ), - ) - ), - Op.SDIV( - Op.MUL( - Op.MLOAD( - offset=Op.ADD( - Op.MLOAD(offset=0x3A0), Op.MUL(0x20, Op.DUP4) - ) - ), - Op.MLOAD( - offset=Op.ADD( - Op.MLOAD(offset=0x3A0), Op.MUL(0x20, Op.DUP2) - ) - ), - ), - 0x10000000000000000, - ), + pc=0x10EB, + condition=Op.CALL( + gas=Op.ADD(0x12, Op.SDIV(Op.DUP8, 0xA)), + address=0x4, + value=0x0, + args_offset=Op.MLOAD(offset=Op.ADD(Op.DUP8, 0xA4)), + args_size=Op.DUP3, + ret_offset=Op.DUP6, + ret_size=Op.DUP1, ), ) - + Op.ADD(Op.DUP2, 0x1) - + Op.SWAP1 - + Op.POP - + Op.JUMP(pc=0x3F1) + + Op.INVALID + Op.JUMPDEST + Op.POP - + Op.ADD(Op.DUP2, 0x1) + + Op.ADD(Op.DUP5, Op.DUP1) + + Op.SWAP4 + + Op.POP * 2 + + Op.SUB(Op.DUP4, Op.DUP1) + + Op.POP( + Op.CALL( + gas=Op.SUB(Op.GAS, 0x2D), + address=Op.MLOAD(offset=0x20), + value=0x0, + args_offset=Op.DUP5, + args_size=Op.DUP3, + ret_offset=0x580, + ret_size=0x20, + ) + ) + + Op.MLOAD(offset=0x580) + Op.SWAP1 + Op.POP - + Op.JUMP(pc=0x3E4) - + Op.JUMPDEST - + Op.DUP2 + Op.SWAP1 + Op.POP + Op.SWAP1 + Op.POP - + Op.DUP2 - + Op.ADD(0x20, Op.MUL(0x20, Op.DUP1)) + + Op.SWAP1 + + Op.POP * 2 + + Op.JUMPI( + pc=0x113A, + condition=Op.ISZERO( + Op.EQ( + Op.MLOAD( + offset=Op.ADD( + Op.DUP6, + Op.MUL(0x20, Op.ADD(Op.MLOAD(offset=0x100), 0x1)), + ) + ), + 0x0, + ) + ), + ) + + Op.MSTORE(offset=0x5A0, value=0x0) + + Op.RETURN(offset=0x5A0, size=0x20) + + Op.JUMP(pc=0x1147) + + Op.JUMPDEST + + Op.MSTORE(offset=0x5C0, value=0x1) + + Op.RETURN(offset=0x5C0, size=0x20) + + Op.JUMPDEST + + Op.POP * 4 + + Op.JUMPDEST + + Op.POP, + nonce=0, + address=Address(0x9761FECF88590592CF05CE545504D376D1693AB3), # noqa: E501 + ) + # Source: raw + # 0x600061075f537c010000000000000000000000000000000000000000000000000000000060003504731e147037f0a63df228fe6e7aef730f1ea31c8ce3602052730ea65418d7bf32680f55572c943a94b59080499860405273e509e3a93beb1eba72f8cb8d25f93a85e2d54afb60605273c9ae5868651bf7b7db6e360217db49ce4e69c07e60805273142a6927cf0060133187ba8a8e74d641438f0c1c60a05273b163e767e4c1ba5ae88b2ee7594f3a3fec2bb09660c05273ba7b277319128ef4c22635534d0f61dffdaa13ab60e052739761fecf88590592cf05ce545504d376d1693ab36101005273f70bbc50f1468cecae0761ef09386a87c1c696ea6101205273a89d22f049aaa5bbfb5f1a1939fff3ae7a26ae746101405273174827f7e53e8ce13b047adcac0eb3f2cb0c3285610160526336a560bd811415610a88576004356101a052601c60445990590160009052016327138bfb601c8203526101a051600482015260206101e0602483600060a051602d5a03f1506101e05190501515610195576001600003610200526020610200f35b601c6044599059016000905201637a66d7ca601c8203526101a051600482015260206102206024836000608051602d5a03f150610220519050601c606459905901600090520163cc1c944e601c8203526101a05160048201528160248201526020610260604483600061028051602d5a03f150610260519050601c60445990590160009052016380b5e7bd601c8203526101a051600482015260206102a06024836000606051602d5a03f1506102a0519050808202601c60445990590160009052016318633576601c8203526101a051600482015260206103006024836000608051602d5a03f150610300519050600981141561036d57601c60c459905901600090520163ac44d71e601c8203526101a0516004820152856024820152846044820152836064820152826084820152602061036060a483600061016051602d5a03f15061036051905050601c6064599059016000905201637265802d601c8203526101a05160048201526000602482015260206103806044836000608051602d5a03f15061038051905050601c604459905901600090520163c5476efe601c8203526101a051600482015260206103a06024836000608051602d5a03f1506103a051905050600185016103c05260206103c0f3610a3a565b60008114156103cd57601c60c459905901600090520163ef72638a601c8203526101a051600482015285602482015284604482015283606482015282608482015260206103e060a483600060c051602d5a03f1506103e051905050610a39565b600181141561042d57601c60c459905901600090520163a63e976c601c8203526101a0516004820152856024820152846044820152836064820152826084820152602061040060a483600060e051602d5a03f15061040051905050610a38565b600281141561048d57601c60c459905901600090520163533ea0ed601c8203526101a0516004820152856024820152846044820152836064820152826084820152602061042060a483600060e051602d5a03f15061042051905050610a37565b600381141561085057601c606459905901600090520163e05dcb56601c8203526101a0516004820152856024820152600285016040816020020159905901600090528160200260400181604485600061028051602d5a03f15060408101905090509050601c6044599059016000905201633d905045601c8203526101a051600482015260206104806024836000608051602d5a03f150610480519050600481141561063357601c60c4599059016000905201630939aa8c601c8203526101a051600482015287602482015286604482015285606482015284608482015260206104e060a483600061010051602d5a03f1506104e05190506104c052601c606459905901600090520163c286273a601c8203526101a05160048201526000602482015260206105006044836000608051602d5a03f1506105005190505060016104c05114156105e55782610520526020610520f361062e565b601c604459905901600090520163aac2ffb5601c8203526101a051600482015260206105406024836000608051602d5a03f1506105405190505060018301610560526020610560f35b610804565b600081141561069457601c60c459905901600090520163546fdeb3601c8203526101a0516004820152876024820152866044820152856064820152846084820152602061058060a483600061010051602d5a03f15061058051905050610803565b6001811415610742576000601c60c459905901600090520163de9080c8601c8203526101a051600482015288602482015287604482015286606482015285608482015260206105a060a483600061010051602d5a03f1506105a0519050141561073257601c6044599059016000905201631cda01ef601c8203526101a051600482015260206105c06024836000608051602d5a03f1506105c0519050505b826105e05260206105e0f3610802565b60028114156107a357601c60c459905901600090520163384ca8dd601c8203526101a0516004820152876024820152866044820152856064820152846084820152602061060060a483600061010051602d5a03f15061060051905050610801565b600381141561080057601c60c459905901600090520163d5dc5af1601c8203526101a0516004820152876024820152866044820152856064820152846084820152602061062060a483600061010051602d5a03f150610620519050505b5b5b5b5b601c6044599059016000905201631cda01ef601c8203526101a051600482015260206106406024836000608051602d5a03f1506106405190505082610660526020610660f35050610a36565b60048114156108b157601c60c459905901600090520163f6559853601c8203526101a0516004820152856024820152846044820152836064820152826084820152602061068060a483600061012051602d5a03f15061068051905050610a35565b600581141561091257601c60c459905901600090520163d8e5473d601c8203526101a051600482015285602482015284604482015283606482015282608482015260206106a060a483600061012051602d5a03f1506106a051905050610a34565b600681141561097357601c60c459905901600090520163090507ea601c8203526101a051600482015285602482015284604482015283606482015282608482015260206106c060a483600061012051602d5a03f1506106c051905050610a33565b60078114156109d457601c60c4599059016000905201635b911842601c8203526101a051600482015285602482015284604482015283606482015282608482015260206106e060a483600061014051602d5a03f1506106e051905050610a32565b6008811415610a3157601c60c459905901600090520163abe22b84601c8203526101a0516004820152856024820152846044820152836064820152826084820152602061070060a483600061014051602d5a03f150610700519050505b5b5b5b5b5b5b5b5b5b601c604459905901600090520163aac2ffb5601c8203526101a051600482015260206107206024836000608051602d5a03f1506107205190505060018101610740526020610740f350505050505b50 # noqa: E501 + contract_8 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE8(offset=0x75F, value=0x0) + + Op.DIV( + Op.CALLDATALOAD(offset=0x0), + 0x100000000000000000000000000000000000000000000000000000000, + ) + + Op.MSTORE( + offset=0x20, value=0x1E147037F0A63DF228FE6E7AEF730F1EA31C8CE3 + ) + + Op.MSTORE( + offset=0x40, value=0xEA65418D7BF32680F55572C943A94B590804998 + ) + + Op.MSTORE( + offset=0x60, value=0xE509E3A93BEB1EBA72F8CB8D25F93A85E2D54AFB + ) + + Op.MSTORE( + offset=0x80, value=0xC9AE5868651BF7B7DB6E360217DB49CE4E69C07E + ) + + Op.MSTORE( + offset=0xA0, value=0x142A6927CF0060133187BA8A8E74D641438F0C1C + ) + + Op.MSTORE( + offset=0xC0, value=0xB163E767E4C1BA5AE88B2EE7594F3A3FEC2BB096 + ) + + Op.MSTORE( + offset=0xE0, value=0xBA7B277319128EF4C22635534D0F61DFFDAA13AB + ) + + Op.MSTORE( + offset=0x100, value=0x9761FECF88590592CF05CE545504D376D1693AB3 + ) + + Op.MSTORE( + offset=0x120, value=0xF70BBC50F1468CECAE0761EF09386A87C1C696EA + ) + + Op.MSTORE( + offset=0x140, value=0xA89D22F049AAA5BBFB5F1A1939FFF3AE7A26AE74 + ) + + Op.MSTORE( + offset=0x160, value=0x174827F7E53E8CE13B047ADCAC0EB3F2CB0C3285 + ) + + Op.JUMPI(pc=0xA88, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x36A560BD))) + + Op.MSTORE(offset=0x1A0, value=Op.CALLDATALOAD(offset=0x4)) + + Op.PUSH1[0x1C] + + Op.PUSH1[0x44] + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -8827,14 +8233,29 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=Op.DUP2) - + Op.ADD(Op.DUP2, 0x20) - + Op.SWAP1 - + Op.POP + + Op.ADD + + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0x27138BFB) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0x1A0)) + + Op.POP( + Op.CALL( + gas=Op.SUB(Op.GAS, 0x2D), + address=Op.MLOAD(offset=0xA0), + value=0x0, + args_offset=Op.DUP4, + args_size=0x24, + ret_offset=0x1E0, + ret_size=0x20, + ) + ) + + Op.MLOAD(offset=0x1E0) + Op.SWAP1 + Op.POP - + Op.MUL(Op.MLOAD(offset=0x1A0), Op.MLOAD(offset=0x80)) - + Op.ADD(0x20, Op.MUL(0x20, Op.DUP1)) + + Op.JUMPI(pc=0x195, condition=Op.ISZERO(Op.ISZERO)) + + Op.MSTORE(offset=0x200, value=Op.SUB(0x0, 0x1)) + + Op.RETURN(offset=0x200, size=0x20) + + Op.JUMPDEST + + Op.PUSH1[0x1C] + + Op.PUSH1[0x44] + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -8842,135 +8263,750 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.MSTORE(offset=Op.DUP2, value=Op.DUP2) - + Op.ADD(Op.DUP2, 0x20) + + Op.ADD + + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0x7A66D7CA) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0x1A0)) + + Op.POP( + Op.CALL( + gas=Op.SUB(Op.GAS, 0x2D), + address=Op.MLOAD(offset=0x80), + value=0x0, + args_offset=Op.DUP4, + args_size=0x24, + ret_offset=0x220, + ret_size=0x20, + ) + ) + + Op.MLOAD(offset=0x220) + Op.SWAP1 + Op.POP + + Op.PUSH1[0x1C] + + Op.PUSH1[0x64] + + Op.MSIZE + Op.SWAP1 - + Op.POP + + Op.MSIZE + + Op.ADD + Op.PUSH1[0x0] - + Op.JUMPDEST - + Op.JUMPI( - pc=0x51E, - condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.MLOAD(offset=0x1A0))), + + Op.SWAP1 + + Op.MSTORE + + Op.ADD + + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0xCC1C944E) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0x1A0)) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=Op.DUP2) + + Op.POP( + Op.CALL( + gas=Op.SUB(Op.GAS, 0x2D), + address=Op.MLOAD(offset=0x280), + value=0x0, + args_offset=Op.DUP4, + args_size=0x44, + ret_offset=0x260, + ret_size=0x20, + ) ) + + Op.MLOAD(offset=0x260) + + Op.SWAP1 + + Op.POP + + Op.PUSH1[0x1C] + + Op.PUSH1[0x44] + + Op.MSIZE + + Op.SWAP1 + + Op.MSIZE + + Op.ADD + Op.PUSH1[0x0] - + Op.JUMPDEST - + Op.JUMPI( - pc=0x512, - condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.MLOAD(offset=0x80))), + + Op.SWAP1 + + Op.MSTORE + + Op.ADD + + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0x80B5E7BD) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0x1A0)) + + Op.POP( + Op.CALL( + gas=Op.SUB(Op.GAS, 0x2D), + address=Op.MLOAD(offset=0x60), + value=0x0, + args_offset=Op.DUP4, + args_size=0x24, + ret_offset=0x2A0, + ret_size=0x20, + ) ) + + Op.MLOAD(offset=0x2A0) + + Op.SWAP1 + + Op.POP + + Op.MUL(Op.DUP3, Op.DUP1) + + Op.PUSH1[0x1C] + + Op.PUSH1[0x44] + + Op.MSIZE + + Op.SWAP1 + + Op.MSIZE + + Op.ADD + Op.PUSH1[0x0] - + Op.JUMPDEST - + Op.JUMPI( - pc=0x506, - condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.MLOAD(offset=0x80))), - ) - + Op.MSTORE( - offset=Op.ADD( - Op.DUP6, - Op.MUL( - 0x20, - Op.ADD(Op.MUL(Op.DUP6, Op.MLOAD(offset=0x80)), Op.DUP3), - ), - ), - value=Op.ADD( - Op.MLOAD( - offset=Op.ADD( - Op.DUP6, - Op.MUL( - 0x20, - Op.ADD( - Op.MUL(Op.DUP6, Op.MLOAD(offset=0x80)), Op.DUP3 - ), - ), - ) - ), - Op.SDIV( - Op.MUL( - Op.MLOAD( - offset=Op.ADD( - Op.MLOAD(offset=0x3C0), - Op.MUL( - 0x20, - Op.ADD( - Op.MUL(Op.DUP7, Op.MLOAD(offset=0x80)), - Op.DUP3, - ), - ), - ) - ), - Op.MLOAD( - offset=Op.ADD( - Op.DUP8, - Op.MUL( - 0x20, - Op.ADD( - Op.MUL(Op.DUP4, Op.MLOAD(offset=0x80)), - Op.DUP3, - ), - ), - ) - ), - ), - 0x10000000000000000, - ), - ), + + Op.SWAP1 + + Op.MSTORE + + Op.ADD + + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0x18633576) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0x1A0)) + + Op.POP( + Op.CALL( + gas=Op.SUB(Op.GAS, 0x2D), + address=Op.MLOAD(offset=0x80), + value=0x0, + args_offset=Op.DUP4, + args_size=0x24, + ret_offset=0x300, + ret_size=0x20, + ) + ) + + Op.MLOAD(offset=0x300) + + Op.SWAP1 + + Op.POP + + Op.JUMPI(pc=0x36D, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x9))) + + Op.PUSH1[0x1C] + + Op.PUSH1[0xC4] + + Op.MSIZE + + Op.SWAP1 + + Op.MSIZE + + Op.ADD + + Op.PUSH1[0x0] + + Op.SWAP1 + + Op.MSTORE + + Op.ADD + + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0xAC44D71E) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0x1A0)) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=Op.DUP6) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x44), value=Op.DUP5) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x64), value=Op.DUP4) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x84), value=Op.DUP3) + + Op.POP( + Op.CALL( + gas=Op.SUB(Op.GAS, 0x2D), + address=Op.MLOAD(offset=0x160), + value=0x0, + args_offset=Op.DUP4, + args_size=0xA4, + ret_offset=0x360, + ret_size=0x20, + ) + ) + + Op.MLOAD(offset=0x360) + + Op.SWAP1 + + Op.POP * 2 + + Op.PUSH1[0x1C] + + Op.PUSH1[0x64] + + Op.MSIZE + + Op.SWAP1 + + Op.MSIZE + + Op.ADD + + Op.PUSH1[0x0] + + Op.SWAP1 + + Op.MSTORE + + Op.ADD + + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0x7265802D) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0x1A0)) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=0x0) + + Op.POP( + Op.CALL( + gas=Op.SUB(Op.GAS, 0x2D), + address=Op.MLOAD(offset=0x80), + value=0x0, + args_offset=Op.DUP4, + args_size=0x44, + ret_offset=0x380, + ret_size=0x20, + ) + ) + + Op.MLOAD(offset=0x380) + + Op.SWAP1 + + Op.POP * 2 + + Op.PUSH1[0x1C] + + Op.PUSH1[0x44] + + Op.MSIZE + + Op.SWAP1 + + Op.MSIZE + + Op.ADD + + Op.PUSH1[0x0] + + Op.SWAP1 + + Op.MSTORE + + Op.ADD + + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0xC5476EFE) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0x1A0)) + + Op.POP( + Op.CALL( + gas=Op.SUB(Op.GAS, 0x2D), + address=Op.MLOAD(offset=0x80), + value=0x0, + args_offset=Op.DUP4, + args_size=0x24, + ret_offset=0x3A0, + ret_size=0x20, + ) + ) + + Op.MLOAD(offset=0x3A0) + + Op.SWAP1 + + Op.POP * 2 + + Op.MSTORE(offset=0x3C0, value=Op.ADD(Op.DUP6, 0x1)) + + Op.RETURN(offset=0x3C0, size=0x20) + + Op.JUMP(pc=0xA3A) + + Op.JUMPDEST + + Op.JUMPI(pc=0x3CD, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x0))) + + Op.PUSH1[0x1C] + + Op.PUSH1[0xC4] + + Op.MSIZE + + Op.SWAP1 + + Op.MSIZE + + Op.ADD + + Op.PUSH1[0x0] + + Op.SWAP1 + + Op.MSTORE + + Op.ADD + + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0xEF72638A) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0x1A0)) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=Op.DUP6) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x44), value=Op.DUP5) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x64), value=Op.DUP4) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x84), value=Op.DUP3) + + Op.POP( + Op.CALL( + gas=Op.SUB(Op.GAS, 0x2D), + address=Op.MLOAD(offset=0xC0), + value=0x0, + args_offset=Op.DUP4, + args_size=0xA4, + ret_offset=0x3E0, + ret_size=0x20, + ) + ) + + Op.MLOAD(offset=0x3E0) + + Op.SWAP1 + + Op.POP * 2 + + Op.JUMP(pc=0xA39) + + Op.JUMPDEST + + Op.JUMPI(pc=0x42D, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x1))) + + Op.PUSH1[0x1C] + + Op.PUSH1[0xC4] + + Op.MSIZE + + Op.SWAP1 + + Op.MSIZE + + Op.ADD + + Op.PUSH1[0x0] + + Op.SWAP1 + + Op.MSTORE + + Op.ADD + + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0xA63E976C) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0x1A0)) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=Op.DUP6) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x44), value=Op.DUP5) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x64), value=Op.DUP4) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x84), value=Op.DUP3) + + Op.POP( + Op.CALL( + gas=Op.SUB(Op.GAS, 0x2D), + address=Op.MLOAD(offset=0xE0), + value=0x0, + args_offset=Op.DUP4, + args_size=0xA4, + ret_offset=0x400, + ret_size=0x20, + ) + ) + + Op.MLOAD(offset=0x400) + + Op.SWAP1 + + Op.POP * 2 + + Op.JUMP(pc=0xA38) + + Op.JUMPDEST + + Op.JUMPI(pc=0x48D, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x2))) + + Op.PUSH1[0x1C] + + Op.PUSH1[0xC4] + + Op.MSIZE + + Op.SWAP1 + + Op.MSIZE + + Op.ADD + + Op.PUSH1[0x0] + + Op.SWAP1 + + Op.MSTORE + + Op.ADD + + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0x533EA0ED) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0x1A0)) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=Op.DUP6) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x44), value=Op.DUP5) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x64), value=Op.DUP4) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x84), value=Op.DUP3) + + Op.POP( + Op.CALL( + gas=Op.SUB(Op.GAS, 0x2D), + address=Op.MLOAD(offset=0xE0), + value=0x0, + args_offset=Op.DUP4, + args_size=0xA4, + ret_offset=0x420, + ret_size=0x20, + ) + ) + + Op.MLOAD(offset=0x420) + + Op.SWAP1 + + Op.POP * 2 + + Op.JUMP(pc=0xA37) + + Op.JUMPDEST + + Op.JUMPI(pc=0x850, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x3))) + + Op.PUSH1[0x1C] + + Op.PUSH1[0x64] + + Op.MSIZE + + Op.SWAP1 + + Op.MSIZE + + Op.ADD + + Op.PUSH1[0x0] + + Op.SWAP1 + + Op.MSTORE + + Op.ADD + + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0xE05DCB56) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0x1A0)) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=Op.DUP6) + + Op.ADD(Op.DUP6, 0x2) + + Op.ADD(Op.MUL(0x20, Op.DUP2), 0x40) + + Op.MSIZE + + Op.SWAP1 + + Op.MSIZE + + Op.ADD + + Op.PUSH1[0x0] + + Op.SWAP1 + + Op.MSTORE + + Op.POP( + Op.CALL( + gas=Op.SUB(Op.GAS, 0x2D), + address=Op.MLOAD(offset=0x280), + value=0x0, + args_offset=Op.DUP6, + args_size=0x44, + ret_offset=Op.DUP2, + ret_size=Op.ADD(0x40, Op.MUL(0x20, Op.DUP2)), + ) + ) + + Op.ADD(Op.DUP2, 0x40) + + Op.SWAP1 + + Op.POP + + Op.SWAP1 + + Op.POP + + Op.SWAP1 + + Op.POP + + Op.PUSH1[0x1C] + + Op.PUSH1[0x44] + + Op.MSIZE + + Op.SWAP1 + + Op.MSIZE + + Op.ADD + + Op.PUSH1[0x0] + + Op.SWAP1 + + Op.MSTORE + + Op.ADD + + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0x3D905045) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0x1A0)) + + Op.POP( + Op.CALL( + gas=Op.SUB(Op.GAS, 0x2D), + address=Op.MLOAD(offset=0x80), + value=0x0, + args_offset=Op.DUP4, + args_size=0x24, + ret_offset=0x480, + ret_size=0x20, + ) + ) + + Op.MLOAD(offset=0x480) + + Op.SWAP1 + + Op.POP + + Op.JUMPI(pc=0x633, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x4))) + + Op.PUSH1[0x1C] + + Op.PUSH1[0xC4] + + Op.MSIZE + + Op.SWAP1 + + Op.MSIZE + + Op.ADD + + Op.PUSH1[0x0] + + Op.SWAP1 + + Op.MSTORE + + Op.ADD + + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0x939AA8C) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0x1A0)) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=Op.DUP8) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x44), value=Op.DUP7) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x64), value=Op.DUP6) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x84), value=Op.DUP5) + + Op.POP( + Op.CALL( + gas=Op.SUB(Op.GAS, 0x2D), + address=Op.MLOAD(offset=0x100), + value=0x0, + args_offset=Op.DUP4, + args_size=0xA4, + ret_offset=0x4E0, + ret_size=0x20, + ) + ) + + Op.MLOAD(offset=0x4E0) + + Op.SWAP1 + + Op.POP + + Op.PUSH2[0x4C0] + + Op.MSTORE + + Op.PUSH1[0x1C] + + Op.PUSH1[0x64] + + Op.MSIZE + + Op.SWAP1 + + Op.MSIZE + + Op.ADD + + Op.PUSH1[0x0] + + Op.SWAP1 + + Op.MSTORE + + Op.ADD + + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0xC286273A) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0x1A0)) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=0x0) + + Op.POP( + Op.CALL( + gas=Op.SUB(Op.GAS, 0x2D), + address=Op.MLOAD(offset=0x80), + value=0x0, + args_offset=Op.DUP4, + args_size=0x44, + ret_offset=0x500, + ret_size=0x20, + ) + ) + + Op.MLOAD(offset=0x500) + + Op.SWAP1 + + Op.POP * 2 + + Op.JUMPI( + pc=0x5E5, condition=Op.ISZERO(Op.EQ(Op.MLOAD(offset=0x4C0), 0x1)) + ) + + Op.MSTORE(offset=0x520, value=Op.DUP3) + + Op.RETURN(offset=0x520, size=0x20) + + Op.JUMP(pc=0x62E) + + Op.JUMPDEST + + Op.PUSH1[0x1C] + + Op.PUSH1[0x44] + + Op.MSIZE + + Op.SWAP1 + + Op.MSIZE + + Op.ADD + + Op.PUSH1[0x0] + + Op.SWAP1 + + Op.MSTORE + + Op.ADD + + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0xAAC2FFB5) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0x1A0)) + + Op.POP( + Op.CALL( + gas=Op.SUB(Op.GAS, 0x2D), + address=Op.MLOAD(offset=0x80), + value=0x0, + args_offset=Op.DUP4, + args_size=0x24, + ret_offset=0x540, + ret_size=0x20, + ) + ) + + Op.MLOAD(offset=0x540) + + Op.SWAP1 + + Op.POP * 2 + + Op.MSTORE(offset=0x560, value=Op.ADD(Op.DUP4, 0x1)) + + Op.RETURN(offset=0x560, size=0x20) + + Op.JUMPDEST + + Op.JUMP(pc=0x804) + + Op.JUMPDEST + + Op.JUMPI(pc=0x694, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x0))) + + Op.PUSH1[0x1C] + + Op.PUSH1[0xC4] + + Op.MSIZE + + Op.SWAP1 + + Op.MSIZE + + Op.ADD + + Op.PUSH1[0x0] + + Op.SWAP1 + + Op.MSTORE + + Op.ADD + + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0x546FDEB3) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0x1A0)) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=Op.DUP8) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x44), value=Op.DUP7) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x64), value=Op.DUP6) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x84), value=Op.DUP5) + + Op.POP( + Op.CALL( + gas=Op.SUB(Op.GAS, 0x2D), + address=Op.MLOAD(offset=0x100), + value=0x0, + args_offset=Op.DUP4, + args_size=0xA4, + ret_offset=0x580, + ret_size=0x20, + ) ) - + Op.ADD(Op.DUP2, 0x1) + + Op.MLOAD(offset=0x580) + Op.SWAP1 - + Op.POP - + Op.JUMP(pc=0x4AD) + + Op.POP * 2 + + Op.JUMP(pc=0x803) + Op.JUMPDEST - + Op.POP - + Op.ADD(Op.DUP2, 0x1) + + Op.JUMPI(pc=0x742, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x1))) + + Op.PUSH1[0x0] + + Op.PUSH1[0x1C] + + Op.PUSH1[0xC4] + + Op.MSIZE + + Op.SWAP1 + + Op.MSIZE + + Op.ADD + + Op.PUSH1[0x0] + + Op.SWAP1 + + Op.MSTORE + + Op.ADD + + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0xDE9080C8) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0x1A0)) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=Op.DUP9) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x44), value=Op.DUP8) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x64), value=Op.DUP7) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x84), value=Op.DUP6) + + Op.POP( + Op.CALL( + gas=Op.SUB(Op.GAS, 0x2D), + address=Op.MLOAD(offset=0x100), + value=0x0, + args_offset=Op.DUP4, + args_size=0xA4, + ret_offset=0x5A0, + ret_size=0x20, + ) + ) + + Op.MLOAD(offset=0x5A0) + Op.SWAP1 + Op.POP - + Op.JUMP(pc=0x4A0) + + Op.JUMPI(pc=0x732, condition=Op.ISZERO(Op.EQ)) + + Op.PUSH1[0x1C] + + Op.PUSH1[0x44] + + Op.MSIZE + + Op.SWAP1 + + Op.MSIZE + + Op.ADD + + Op.PUSH1[0x0] + + Op.SWAP1 + + Op.MSTORE + + Op.ADD + + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0x1CDA01EF) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0x1A0)) + + Op.POP( + Op.CALL( + gas=Op.SUB(Op.GAS, 0x2D), + address=Op.MLOAD(offset=0x80), + value=0x0, + args_offset=Op.DUP4, + args_size=0x24, + ret_offset=0x5C0, + ret_size=0x20, + ) + ) + + Op.MLOAD(offset=0x5C0) + + Op.SWAP1 + + Op.POP * 2 + Op.JUMPDEST - + Op.POP - + Op.ADD(Op.DUP2, 0x1) + + Op.MSTORE(offset=0x5E0, value=Op.DUP3) + + Op.RETURN(offset=0x5E0, size=0x20) + + Op.JUMP(pc=0x802) + + Op.JUMPDEST + + Op.JUMPI(pc=0x7A3, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x2))) + + Op.PUSH1[0x1C] + + Op.PUSH1[0xC4] + + Op.MSIZE + + Op.SWAP1 + + Op.MSIZE + + Op.ADD + + Op.PUSH1[0x0] + + Op.SWAP1 + + Op.MSTORE + + Op.ADD + + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0x384CA8DD) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0x1A0)) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=Op.DUP8) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x44), value=Op.DUP7) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x64), value=Op.DUP6) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x84), value=Op.DUP5) + + Op.POP( + Op.CALL( + gas=Op.SUB(Op.GAS, 0x2D), + address=Op.MLOAD(offset=0x100), + value=0x0, + args_offset=Op.DUP4, + args_size=0xA4, + ret_offset=0x600, + ret_size=0x20, + ) + ) + + Op.MLOAD(offset=0x600) + + Op.SWAP1 + + Op.POP * 2 + + Op.JUMP(pc=0x801) + + Op.JUMPDEST + + Op.JUMPI(pc=0x800, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x3))) + + Op.PUSH1[0x1C] + + Op.PUSH1[0xC4] + + Op.MSIZE + + Op.SWAP1 + + Op.MSIZE + + Op.ADD + + Op.PUSH1[0x0] + + Op.SWAP1 + + Op.MSTORE + + Op.ADD + + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0xD5DC5AF1) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0x1A0)) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=Op.DUP8) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x44), value=Op.DUP7) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x64), value=Op.DUP6) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x84), value=Op.DUP5) + + Op.POP( + Op.CALL( + gas=Op.SUB(Op.GAS, 0x2D), + address=Op.MLOAD(offset=0x100), + value=0x0, + args_offset=Op.DUP4, + args_size=0xA4, + ret_offset=0x620, + ret_size=0x20, + ) + ) + + Op.MLOAD(offset=0x620) + + Op.SWAP1 + + Op.POP * 2 + + Op.JUMPDEST * 5 + + Op.PUSH1[0x1C] + + Op.PUSH1[0x44] + + Op.MSIZE + + Op.SWAP1 + + Op.MSIZE + + Op.ADD + + Op.PUSH1[0x0] + + Op.SWAP1 + + Op.MSTORE + + Op.ADD + + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0x1CDA01EF) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0x1A0)) + + Op.POP( + Op.CALL( + gas=Op.SUB(Op.GAS, 0x2D), + address=Op.MLOAD(offset=0x80), + value=0x0, + args_offset=Op.DUP4, + args_size=0x24, + ret_offset=0x640, + ret_size=0x20, + ) + ) + + Op.MLOAD(offset=0x640) + + Op.SWAP1 + + Op.POP * 2 + + Op.MSTORE(offset=0x660, value=Op.DUP3) + + Op.RETURN(offset=0x660, size=0x20) + + Op.POP * 2 + + Op.JUMP(pc=0xA36) + + Op.JUMPDEST + + Op.JUMPI(pc=0x8B1, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x4))) + + Op.PUSH1[0x1C] + + Op.PUSH1[0xC4] + + Op.MSIZE + + Op.SWAP1 + + Op.MSIZE + + Op.ADD + + Op.PUSH1[0x0] + + Op.SWAP1 + + Op.MSTORE + + Op.ADD + + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0xF6559853) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0x1A0)) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=Op.DUP6) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x44), value=Op.DUP5) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x64), value=Op.DUP4) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x84), value=Op.DUP3) + + Op.POP( + Op.CALL( + gas=Op.SUB(Op.GAS, 0x2D), + address=Op.MLOAD(offset=0x120), + value=0x0, + args_offset=Op.DUP4, + args_size=0xA4, + ret_offset=0x680, + ret_size=0x20, + ) + ) + + Op.MLOAD(offset=0x680) + + Op.SWAP1 + + Op.POP * 2 + + Op.JUMP(pc=0xA35) + + Op.JUMPDEST + + Op.JUMPI(pc=0x912, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x5))) + + Op.PUSH1[0x1C] + + Op.PUSH1[0xC4] + + Op.MSIZE + + Op.SWAP1 + + Op.MSIZE + + Op.ADD + + Op.PUSH1[0x0] + + Op.SWAP1 + + Op.MSTORE + + Op.ADD + + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0xD8E5473D) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0x1A0)) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=Op.DUP6) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x44), value=Op.DUP5) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x64), value=Op.DUP4) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x84), value=Op.DUP3) + + Op.POP( + Op.CALL( + gas=Op.SUB(Op.GAS, 0x2D), + address=Op.MLOAD(offset=0x120), + value=0x0, + args_offset=Op.DUP4, + args_size=0xA4, + ret_offset=0x6A0, + ret_size=0x20, + ) + ) + + Op.MLOAD(offset=0x6A0) + Op.SWAP1 - + Op.POP - + Op.JUMP(pc=0x492) + + Op.POP * 2 + + Op.JUMP(pc=0xA34) + Op.JUMPDEST - + Op.DUP2 - + Op.SWAP1 - + Op.POP + + Op.JUMPI(pc=0x973, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x6))) + + Op.PUSH1[0x1C] + + Op.PUSH1[0xC4] + + Op.MSIZE + Op.SWAP1 - + Op.POP + + Op.MSIZE + + Op.ADD + Op.PUSH1[0x0] - + Op.JUMPDEST - + Op.JUMPI(pc=0x552, condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.DUP5))) - + Op.MSTORE( - offset=Op.ADD(Op.DUP5, Op.MUL(0x20, Op.DUP2)), - value=Op.SUB( - Op.MLOAD( - offset=Op.ADD( - Op.MLOAD(offset=0x3C0), Op.MUL(0x20, Op.DUP2) - ) - ), - Op.MLOAD(offset=Op.ADD(Op.DUP3, Op.MUL(0x20, Op.DUP1))), - ), - ) - + Op.ADD(Op.DUP2, 0x1) + Op.SWAP1 - + Op.POP - + Op.JUMP(pc=0x526) - + Op.JUMPDEST - + Op.POP - + Op.DUP2 - + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x40), value=0x20) - + Op.RETURN( - offset=Op.SUB(Op.DUP3, 0x40), - size=Op.ADD( - 0x40, Op.MUL(Op.MLOAD(offset=Op.SUB(Op.DUP3, 0x20)), 0x20) - ), + + Op.MSTORE + + Op.ADD + + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0x90507EA) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0x1A0)) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=Op.DUP6) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x44), value=Op.DUP5) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x64), value=Op.DUP4) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x84), value=Op.DUP3) + + Op.POP( + Op.CALL( + gas=Op.SUB(Op.GAS, 0x2D), + address=Op.MLOAD(offset=0x120), + value=0x0, + args_offset=Op.DUP4, + args_size=0xA4, + ret_offset=0x6C0, + ret_size=0x20, + ) ) - + Op.POP * 5 + + Op.MLOAD(offset=0x6C0) + + Op.SWAP1 + + Op.POP * 2 + + Op.JUMP(pc=0xA33) + Op.JUMPDEST - + Op.JUMPI(pc=0x69D, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x232B2734))) - + Op.CALLDATASIZE + + Op.JUMPI(pc=0x9D4, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x7))) + + Op.PUSH1[0x1C] + + Op.PUSH1[0xC4] + Op.MSIZE + Op.SWAP1 + Op.MSIZE @@ -8978,130 +9014,94 @@ def test_block504980( + Op.PUSH1[0x0] + Op.SWAP1 + Op.MSTORE - + Op.CALLDATACOPY( - dest_offset=Op.DUP3, offset=0x4, size=Op.CALLDATASIZE - ) - + Op.MSTORE( - offset=0x620, - value=Op.ADD(Op.ADD(Op.DUP3, 0x20), Op.CALLDATALOAD(offset=0x4)), - ) - + Op.MSTORE( - offset=0x280, - value=Op.ADD(Op.ADD(Op.DUP3, 0x20), Op.CALLDATALOAD(offset=0x24)), - ) - + Op.MSTORE( - offset=0x3C0, - value=Op.ADD(Op.ADD(Op.DUP3, 0x20), Op.CALLDATALOAD(offset=0x44)), - ) - + Op.MSTORE(offset=0x640, value=Op.CALLDATALOAD(offset=0x64)) - + Op.MSTORE(offset=0x1A0, value=Op.CALLDATALOAD(offset=0x84)) - + Op.MSTORE(offset=0x80, value=Op.CALLDATALOAD(offset=0xA4)) - + Op.POP - + Op.JUMPI( - pc=0x602, - condition=Op.ISZERO( - Op.SLT(Op.MLOAD(offset=Op.MLOAD(offset=0x280)), 0x0) - ), - ) - + Op.PUSH1[0x0] - + Op.JUMPDEST - + Op.JUMPI( - pc=0x600, - condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.MLOAD(offset=0x80))), - ) - + Op.MSTORE( - offset=Op.ADD(Op.MLOAD(offset=0x280), Op.MUL(0x20, Op.DUP2)), - value=Op.SUB( - 0x0, - Op.MLOAD( - offset=Op.ADD( - Op.MLOAD(offset=0x280), Op.MUL(0x20, Op.DUP1) - ) - ), - ), + + Op.ADD + + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0x5B911842) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0x1A0)) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=Op.DUP6) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x44), value=Op.DUP5) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x64), value=Op.DUP4) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x84), value=Op.DUP3) + + Op.POP( + Op.CALL( + gas=Op.SUB(Op.GAS, 0x2D), + address=Op.MLOAD(offset=0x140), + value=0x0, + args_offset=Op.DUP4, + args_size=0xA4, + ret_offset=0x6E0, + ret_size=0x20, + ) ) - + Op.ADD(Op.DUP2, 0x1) + + Op.MLOAD(offset=0x6E0) + Op.SWAP1 - + Op.POP - + Op.JUMP(pc=0x5D4) - + Op.JUMPDEST - + Op.POP - + Op.JUMPDEST - + Op.PUSH1[0x0] + + Op.POP * 2 + + Op.JUMP(pc=0xA32) + Op.JUMPDEST - + Op.JUMPI( - pc=0x67F, - condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.MLOAD(offset=0x1A0))), - ) + + Op.JUMPI(pc=0xA31, condition=Op.ISZERO(Op.EQ(Op.DUP2, 0x8))) + + Op.PUSH1[0x1C] + + Op.PUSH1[0xC4] + + Op.MSIZE + + Op.SWAP1 + + Op.MSIZE + + Op.ADD + Op.PUSH1[0x0] - + Op.JUMPDEST - + Op.JUMPI( - pc=0x673, - condition=Op.ISZERO(Op.SLT(Op.DUP2, Op.MLOAD(offset=0x80))), - ) - + Op.MSTORE( - offset=Op.ADD(Op.MLOAD(offset=0x620), Op.MUL(0x20, Op.DUP3)), - value=Op.ADD( - Op.MLOAD( - offset=Op.ADD( - Op.MLOAD(offset=0x620), Op.MUL(0x20, Op.DUP3) - ) - ), - Op.SDIV( - Op.MUL( - Op.MLOAD( - offset=Op.ADD( - Op.MLOAD(offset=0x3C0), - Op.MUL( - 0x20, - Op.ADD( - Op.MUL(Op.DUP6, Op.MLOAD(offset=0x80)), - Op.DUP3, - ), - ), - ) - ), - Op.SDIV( - Op.MUL( - Op.MLOAD(offset=0x640), - Op.MLOAD( - offset=Op.ADD( - Op.MLOAD(offset=0x280), - Op.MUL(0x20, Op.DUP3), - ) - ), - ), - 0x10000000000000000, - ), - ), - 0x10000000000000000, - ), - ), + + Op.SWAP1 + + Op.MSTORE + + Op.ADD + + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0xABE22B84) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0x1A0)) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x24), value=Op.DUP6) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x44), value=Op.DUP5) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x64), value=Op.DUP4) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x84), value=Op.DUP3) + + Op.POP( + Op.CALL( + gas=Op.SUB(Op.GAS, 0x2D), + address=Op.MLOAD(offset=0x140), + value=0x0, + args_offset=Op.DUP4, + args_size=0xA4, + ret_offset=0x700, + ret_size=0x20, + ) ) - + Op.ADD(Op.DUP2, 0x1) + + Op.MLOAD(offset=0x700) + Op.SWAP1 - + Op.POP - + Op.JUMP(pc=0x613) - + Op.JUMPDEST - + Op.POP - + Op.ADD(Op.DUP2, 0x1) + + Op.POP * 2 + + Op.JUMPDEST * 10 + + Op.PUSH1[0x1C] + + Op.PUSH1[0x44] + + Op.MSIZE + Op.SWAP1 - + Op.POP - + Op.JUMP(pc=0x605) - + Op.JUMPDEST - + Op.MLOAD(offset=0x620) - + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x40), value=0x20) - + Op.RETURN( - offset=Op.SUB(Op.DUP3, 0x40), - size=Op.ADD( - 0x40, Op.MUL(Op.MLOAD(offset=Op.SUB(Op.DUP3, 0x20)), 0x20) - ), + + Op.MSIZE + + Op.ADD + + Op.PUSH1[0x0] + + Op.SWAP1 + + Op.MSTORE + + Op.ADD + + Op.MSTORE(offset=Op.SUB(Op.DUP3, 0x1C), value=0xAAC2FFB5) + + Op.MSTORE(offset=Op.ADD(Op.DUP3, 0x4), value=Op.MLOAD(offset=0x1A0)) + + Op.POP( + Op.CALL( + gas=Op.SUB(Op.GAS, 0x2D), + address=Op.MLOAD(offset=0x80), + value=0x0, + args_offset=Op.DUP4, + args_size=0x24, + ret_offset=0x720, + ret_size=0x20, + ) ) + + Op.MLOAD(offset=0x720) + + Op.SWAP1 + Op.POP * 2 + + Op.MSTORE(offset=0x740, value=Op.ADD(Op.DUP2, 0x1)) + + Op.RETURN(offset=0x740, size=0x20) + + Op.POP * 5 + Op.JUMPDEST + Op.POP, nonce=0, - address=Address(0xF1562E1C0D0BAA3EA746442BB7F11153FCF5CFDA), # noqa: E501 + address=Address(0xB03F030056DB7D467D778326658BAC0D1B35D8F7), # noqa: E501 ) tx = Transaction( @@ -9123,16 +9123,16 @@ def test_block504980( 0x65D5EFDFCC0FBA693DC9E467F633097FFDC97401901463AD0E28855486D1EDF: 0xB9D69098A6ACFE0C6411BCAAF430F78D363A9ADC32B78BC2E15CCD6E883E9784, # noqa: E501 0x12643FF300762717D27EFB567B82C65560D7B43249D908504E5510863AB82AAC: 0x154CF60E137C594516A065149610B6A3989396A42581D5FD8919E711C55DA225, # noqa: E501 0x1489023D18C5D10427C4AA8DC726E840EB5AE7F604A8E9243C61634FB009E4D7: 5, # noqa: E501 - 0x1489023D18C5D10427C4AA8DC726E840EB5AE7F604A8E9243C61634FB009E4D8: 1, # noqa: E501 + 0x1489023D18C5D10427C4AA8DC726E840EB5AE7F604A8E9243C61634FB009E4D8: contract_1, # noqa: E501 0x19EFB13D6576359514ACE5211988A8D51379FA88CCD2B886B409F842B13D7932: 0xC849CC595B452D11C206D2EB8CDFA06DE211E3FF19EE0E0276DC857C05D4FE, # noqa: E501 0x1B37E91BF8580C7C6BCF8CDFF25C7ED78180124A94AF6F30C40D476A3D079AD6: 0xABA4CD295118A482A0A62579E35E4BA5BDD76146CC9E4D96172FCE8BE8977AB4, # noqa: E501 0x2BF9FD8FACDD6FD9C84657F5AD7381A5AECF670CDA68CB3C5829B6532C865506: 0x53098A1D111586DBCC0D051846284F5803C63C313E7F7E6D84430435D11D4C50, # noqa: E501 0x3111BFD25728C0ADFAD0F8C1AD79CB1B91167267DECA98DE88F156ED25CAEEDC: 0xAD393086F30B49511B08FDD27AC78810B084C7CD7DE6AC354F614C18EA9E7DF4, # noqa: E501 0x3379E7AE125C5C5D623D1D993C1459B61D6723B1C30D1AA026C48F6A6155B8EA: 0x8C4183732567A99A8A718E363391E102532F9A640E42968CF2354D9ACC908BB0, # noqa: E501 - 0x34CABE0C7E64A2CAA93FD8D6A0DEFC07ACB9D44B13430FA3AE9282FFFD40DEE2: 1, # noqa: E501 - 0x34CABE0C7E64A2CAA93FD8D6A0DEFC07ACB9D44B13430FA3AE9282FFFD40DEE3: 1, # noqa: E501 - 0x34CABE0C7E64A2CAA93FD8D6A0DEFC07ACB9D44B13430FA3AE9282FFFD40DEE4: 1, # noqa: E501 - 0x34CABE0C7E64A2CAA93FD8D6A0DEFC07ACB9D44B13430FA3AE9282FFFD40DEE5: 1, # noqa: E501 + 0x34CABE0C7E64A2CAA93FD8D6A0DEFC07ACB9D44B13430FA3AE9282FFFD40DEE2: contract_1, # noqa: E501 + 0x34CABE0C7E64A2CAA93FD8D6A0DEFC07ACB9D44B13430FA3AE9282FFFD40DEE3: contract_1, # noqa: E501 + 0x34CABE0C7E64A2CAA93FD8D6A0DEFC07ACB9D44B13430FA3AE9282FFFD40DEE4: contract_1, # noqa: E501 + 0x34CABE0C7E64A2CAA93FD8D6A0DEFC07ACB9D44B13430FA3AE9282FFFD40DEE5: contract_1, # noqa: E501 0x39050607FE892059A6344AB0F594F382FB0B345CAB373497246DBE86FE7E14E7: 0x2B3BCA833E482737E7E47B1568E6F890F8E1666490D38FE130ABD6F0CCB109CF, # noqa: E501 0x417BE8BC6791807372E0222A350BB8A5D67BBC8D7595C301D8A5A8372CFDCEF1: 0xABD4971B4605A7155802F70E08298B1CEB0E4E4EACCCCD348F77A77227F73A7F, # noqa: E501 0x41E9A54B3EE0C276AA076BABB161DE12B0F8916B47F8F6FB85CC387CF34696DD: 0x22F2F444EBDA9D2913FFEF5059B039EC9B5876AA71821991C2515BF79F64935E, # noqa: E501 @@ -9151,12 +9151,12 @@ def test_block504980( 0x7E95F3CC3315D289C52253BAABA29B1B00C86816E6B788D50795279A8BAA00DB: 0x45E9723E9232B37207ECAC1C97B8647D053625A578D450F7456280B2FF8EFC27, # noqa: E501 0x8DA187157087529EE4E9C381F8E3149C56ACF3BDFDA29B8B9B4532F24B83F5FE: 0x8C4183732567A99A8A718E363391E102532F9A640E42968CF2354D9ACC908BB0, # noqa: E501 0x9001F91DDAEF87BC067886E874C0749998C9B58B2EC8472CA014CA8B55F88578: 0xFB76974EEFCA01F33FB38646C2D3C1536F1A763D7AFF53AB7F877D4C5EA7FD0, # noqa: E501 - 0x9ED0CEDD2A9A78D949F40019F53D10031AEF6ED342C97E01FC03B481EE56B3CB: 4, # noqa: E501 + 0x9ED0CEDD2A9A78D949F40019F53D10031AEF6ED342C97E01FC03B481EE56B3CB: contract_4, # noqa: E501 0x9FDDF1DB29CAA5C1239EDD86E9E0835CDFE41F7253EC78F62D3DA8558D6F3CD7: 0x104EEF8FA35BF39F677D81855BC0B9F42317F32792E98E95E4DF441DEB634211, # noqa: E501 0xA0953566119395C11186B334805FC1A16175ECAC0ECC93AE0322264F0DC2E40D: 0x10C5A00466AB7C0ADAE1E93537CC275EA8CF23FF509D5466A1FD6F56B0A61D1B, # noqa: E501 - 0xAA0DBF8241EF3AE07C254E6869E84895BA2BE0779A7F261C8308A3114BE1C54A: 4, # noqa: E501 - 0xAFFE808B495D13A14391CE5F27C211C36DA12826969CD7841EE0D81E5B900E2D: 1, # noqa: E501 - 0xAFFE808B495D13A14391CE5F27C211C36DA12826969CD7841EE0D81E5B900E2E: 1, # noqa: E501 + 0xAA0DBF8241EF3AE07C254E6869E84895BA2BE0779A7F261C8308A3114BE1C54A: contract_4, # noqa: E501 + 0xAFFE808B495D13A14391CE5F27C211C36DA12826969CD7841EE0D81E5B900E2D: contract_1, # noqa: E501 + 0xAFFE808B495D13A14391CE5F27C211C36DA12826969CD7841EE0D81E5B900E2E: contract_1, # noqa: E501 0xB4A2B68C48EF78AEB641EE538FAD51781022FD23ED9D93D211017DB6A02376CE: 0xFBC06642245CF2FED7ED46EA0A18A7185830B6F2C4E0A4CA55246041E8BFA72, # noqa: E501 0xBA8D79990898383919E437F2458B93B340072C89D963808D9E04F51858E3C5EC: 0x41D2CAC534D90A0DBD199117481A63E32CC11411DAB2EAA36C91C0EEC62823CF, # noqa: E501 0xBB3BC1A2015123750DF57D4CEFF7E28CB847910B79B34841DE905B59A8BB177C: 0x734417EB19E1873427257F1EA1594748C16CFA866A7B7CF896E281F2EC774A40, # noqa: E501 @@ -9169,19 +9169,19 @@ def test_block504980( 0xD8F720C05A5526DD621D1831AE122ABDDD3DFECD8B63B0BA4C92FA7B2ADE44FF: 0xAD393086F30B49511B08FDD27AC78810B084C7CD7DE6AC354F614C18EA9E7DF4, # noqa: E501 0xDC22D3171B82817C910BBEAC1F8B50C8DE99F8C524F172AEF3491981BD5ED4FB: 0x94B8CBA4EA090D1C392FBC94B82FB9EF9F468A15BBC537F4D051776F4D422B1D, # noqa: E501 0xDCE8ADBDEFA929DBE60245F359446DB4174C62824B42E5D4D9E7B834B4D61DEB: 0x2C9069845B2E74C577FF1CD18DF6BC452805F527A9EE91FD4A059E0408B5DEA6, # noqa: E501 - 0xDD9493073DB9E42FD955E834C89A74089F99196186EE0B2688124989BE00D196: 1, # noqa: E501 - 0xDD9493073DB9E42FD955E834C89A74089F99196186EE0B2688124989BE00D197: 1, # noqa: E501 - 0xDD9493073DB9E42FD955E834C89A74089F99196186EE0B2688124989BE00D198: 1, # noqa: E501 - 0xDD9493073DB9E42FD955E834C89A74089F99196186EE0B2688124989BE00D199: 1, # noqa: E501 - 0xDD9493073DB9E42FD955E834C89A74089F99196186EE0B2688124989BE00D19A: 1, # noqa: E501 + 0xDD9493073DB9E42FD955E834C89A74089F99196186EE0B2688124989BE00D196: contract_1, # noqa: E501 + 0xDD9493073DB9E42FD955E834C89A74089F99196186EE0B2688124989BE00D197: contract_1, # noqa: E501 + 0xDD9493073DB9E42FD955E834C89A74089F99196186EE0B2688124989BE00D198: contract_1, # noqa: E501 + 0xDD9493073DB9E42FD955E834C89A74089F99196186EE0B2688124989BE00D199: contract_1, # noqa: E501 + 0xDD9493073DB9E42FD955E834C89A74089F99196186EE0B2688124989BE00D19A: contract_1, # noqa: E501 0xE54F074C81BFA60B5BF413934C108086298B77291560EDFEEAD8AA1232E95236: 0xF40AAA24323C9E6983CCFFAFEEBE4B426509B901E8C98B8A40D881804804E6B, # noqa: E501 - 0xE66C0F55F66C752EDF73027D45B7B1AE729AE15E1C67C362DBC6F25EDF8D76FF: 1, # noqa: E501 + 0xE66C0F55F66C752EDF73027D45B7B1AE729AE15E1C67C362DBC6F25EDF8D76FF: contract_1, # noqa: E501 0xE983D899F807BBCB5881F2DDF875B2EBB5CB8A7A4E77A8C98A40AAAE6A468735: 0x6D0BE832B2007EA28CDA705B73922CBF9794C5A25B89BD2F28B7347ED2B96C86, # noqa: E501 0xED7D6E2D40FBD5046412FFAD1C45B63D87C6197182D6DBC66BB1E5C6E4DED5C7: 0xABA4CD295118A482A0A62579E35E4BA5BDD76146CC9E4D96172FCE8BE8977AB4, # noqa: E501 - 0xF043B5A1952847579F233706A8F130889A484D2DA3E574FDD5859F05AAF52111: 2, # noqa: E501 + 0xF043B5A1952847579F233706A8F130889A484D2DA3E574FDD5859F05AAF52111: contract_2, # noqa: E501 0xF40F4CFDACB62DD799F36B580349FAC1F4A4CAF8DD3383CC387C35ADB6574E21: 0x2F0000000000000000, # noqa: E501 0xF60FA6E25E9028A6DC6B26BBC1EADAE3DA157DF0D1D6F6628BC33CAD68A7E455: 0x2D7D00618C059EBE40593B9497C633E1AC6E161DADBD5BB734C2663CD3E8A8E1, # noqa: E501 - 0xFD280AC5182D5B2366122F38ACFA6DC471240FFDE9D5FEB985CE7A2325C960E7: 3, # noqa: E501 + 0xFD280AC5182D5B2366122F38ACFA6DC471240FFDE9D5FEB985CE7A2325C960E7: contract_3, # noqa: E501 }, balance=0, nonce=0, @@ -9197,7 +9197,7 @@ def test_block504980( sender: Account(nonce=1), contract_9: Account( storage={ - 0: 1, + 0: contract_1, 0xA4470E9D0419DF71F6257FCDFD2C0A3BAD96A23F5AB414BC10AAF1A31A536A7: 0xB4876148229C22BD2291F1A4F5468C8C789B23639370C4D447F270BA341DBBEC, # noqa: E501 0x16EF4193A274568D283FF919C299729E07696D9ADA48187B81D68E12E7B962DE: 0xA103C04E7ECB9B3395F77C7B0CAD28E62C85F042DE4767CCC6C005E6F47F8D4, # noqa: E501 0x1F1866E966F321B84535705846689749D34D5DC02994613E2931973C605D9E93: 0xC723D0AA4A60529FE42277C8094AA19263AFF36650136EFC5EDFD0785D457634, # noqa: E501 @@ -9225,9 +9225,9 @@ def test_block504980( 0xBC96058EB03504EE6F5C0A9582F8720D99A6E9738B171499507FACFF0B2C0B5B: 0x9DB6A4F2766B51013B8D2F9038131D1BB4AF725D019D111D7E26FF96C023B23F, # noqa: E501 0xC186C4F377B7F13892ADE9656ACD1522AA1F8AC151AC4F62457B5073241D79FC: 0x7289738FEF00F1770EEB098DB9BD486C01AC12398D79CDF935514A128C585C51, # noqa: E501 0xCAE57AE3017972D63EFFD8EAE44F5054402C3E890D154B905ED6B5B533327FA9: 0xD2E4BF465E61993D13089B940A7C55017A5117D8E43E4115550A139E1D4B3E3A, # noqa: E501 - 0xCF569EE7BF3ACCC0F893DFFD04F1A757F373EFE80893EFF504FB3678F688EC1D: 3, # noqa: E501 + 0xCF569EE7BF3ACCC0F893DFFD04F1A757F373EFE80893EFF504FB3678F688EC1D: contract_3, # noqa: E501 0xD69B7284545A9F5275DF64CE94848DC954FCB8A8B525E7AC801517C12A75AF84: 0x4202995350ABAE303B43E564AA79121A30B5F1AEA31F69CD25E07DD3FA64DCE7, # noqa: E501 - 0xD8F6F90F51E657690EE28D1CC80D81BC1B89290065891FDD853D09CAAAF756AA: 1, # noqa: E501 + 0xD8F6F90F51E657690EE28D1CC80D81BC1B89290065891FDD853D09CAAAF756AA: contract_1, # noqa: E501 0xDE72F8EED43CC2A5A3EAA51483D14B17DC92BB26C154AE184CEE4B4895011EDC: 0x47CE2B6FDB72C3FABB9C74F82C1E3E522BCD42E614FD85C208AC3C4C840CEA72, # noqa: E501 0xE0E687DDF317F3D2B209AE3884148EFF0F636E16827F82EDED14ADA8FC603009: 0xFA7C8939F9B033162CF8D75EA69671BB8A27041BD4CDC76594E61E99333CB041, # noqa: E501 0xE8CDA339D72A1A350B62F1E3FA52E254C395CC9FDD9F60ADB21C7633FBDAB531: 0x128C4FDF4801A30EAE99DD58F0F3FF5CA65F71B66A9AC0F38DD450FB24B4AAAA, # noqa: E501 @@ -9243,11 +9243,11 @@ def test_block504980( contract_10: Account( storage={ 0xF299DBBE3A7A5D949FE794E9A47B3106699C8110FF986EB84921C183E69E7F0: 0x2F0000000000000000, # noqa: E501 - 0x1EDCD36F61CAE5DC6414157DFBADF9F11CA013AC763E27F8AF55FEAA8A239C89: 1, # noqa: E501 + 0x1EDCD36F61CAE5DC6414157DFBADF9F11CA013AC763E27F8AF55FEAA8A239C89: contract_1, # noqa: E501 0x689082D076EC3C02CBE4B99F6D9833E3C4A161072FD42FB7649EEE5189A67CCC: 0x63524E3FE4791AEFCE1E932BBFB3FDF375BFAD89, # noqa: E501 0xAF1D6676BE3AB502A59D91F6F5C49BAFFC15B2CFC65A41C4D96857C0F535ADBA: 0x1D60000000000000000, # noqa: E501 0xDF1A770F69D93D1719292F384FDB4DA22C0E88AEF2BA462BFF16674BC7848730: 0x1C11AA45C792E202E9FFDC2F12F99D0D209BEF70, # noqa: E501 - 0xEC5E7F54FA5E516E616B04F9D5A0EE433A80E09ED47D7E5269AFD76C05FF251E: 2, # noqa: E501 + 0xEC5E7F54FA5E516E616B04F9D5A0EE433A80E09ED47D7E5269AFD76C05FF251E: contract_2, # noqa: E501 }, nonce=0, ), diff --git a/tests/ported_static/stSpecialTest/test_eoa_empty_paris.py b/tests/ported_static/stSpecialTest/test_eoa_empty_paris.py index 12c51407162..5c93c366823 100644 --- a/tests/ported_static/stSpecialTest/test_eoa_empty_paris.py +++ b/tests/ported_static/stSpecialTest/test_eoa_empty_paris.py @@ -239,7 +239,7 @@ def test_eoa_empty_paris( sender: Account(nonce=1), contract_5: Account( storage={ - 0: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, + 0: sender, 49: 0, 59: 0, 63: 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470, # noqa: E501 @@ -261,7 +261,7 @@ def test_eoa_empty_paris( sender: Account(nonce=1), contract_5: Account( storage={ - 0: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, + 0: sender, 49: 0, 59: 0, 63: 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470, # noqa: E501 @@ -291,7 +291,7 @@ def test_eoa_empty_paris( sender: Account(nonce=1), contract_5: Account( storage={ - 0: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, + 0: sender, 49: 100, 59: 0, 63: 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470, # noqa: E501 @@ -313,7 +313,7 @@ def test_eoa_empty_paris( sender: Account(nonce=1), contract_5: Account( storage={ - 0: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, + 0: sender, 49: 100, 59: 0, 63: 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470, # noqa: E501 @@ -335,7 +335,7 @@ def test_eoa_empty_paris( sender: Account(nonce=1), contract_5: Account( storage={ - 0: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, + 0: sender, 49: 0, 59: 0, 63: 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470, # noqa: E501 @@ -357,7 +357,7 @@ def test_eoa_empty_paris( sender: Account(nonce=1), contract_5: Account( storage={ - 0: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, + 0: sender, 49: 0, 59: 0, 63: 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470, # noqa: E501 diff --git a/tests/ported_static/stSpecialTest/test_failed_tx_xcf416c53_paris.py b/tests/ported_static/stSpecialTest/test_failed_tx_xcf416c53_paris.py index 7c16045ccf5..6eef9fc2104 100644 --- a/tests/ported_static/stSpecialTest/test_failed_tx_xcf416c53_paris.py +++ b/tests/ported_static/stSpecialTest/test_failed_tx_xcf416c53_paris.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,10 +33,8 @@ def test_failed_tx_xcf416c53_paris( ) -> None: """Test_failed_tx_xcf416c53_paris.""" coinbase = Address(0x68795C4AA09D6F4ED3E5DEDDF8C2AD3049A601DA) - addr = Address(0x76FAE819612A29489A1A43208613D8F8557B8898) - sender = EOA( - key=0xFF8D58222F34F6890DDAA468C023B77D6691ED7D3C4DCDDAE38336212FAF54B - ) + addr = Address(0x0000000000000000000000000000000000000003) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000, nonce=1) env = Environment( fee_recipient=coinbase, @@ -48,6 +45,7 @@ def test_failed_tx_xcf416c53_paris( gas_limit=200000000, ) + pre[addr] = Account(balance=10) # Source: raw # 0x7c0100000000000000000000000000000000000000000000000000000000600035046397dd3054811415610065576004356040526024356060526040516060515b808212156100625760006000600060006000866000f150600182019150610040565b50505b50 # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -86,10 +84,7 @@ def test_failed_tx_xcf416c53_paris( + Op.JUMPDEST + Op.POP, nonce=0, - address=Address(0x7E6E9B4CA1B88937ABEAEC23BC4B6986CAF05188), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000, nonce=1) - pre[addr] = Account(balance=10) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stSpecialTest/test_gas_price0.py b/tests/ported_static/stSpecialTest/test_gas_price0.py index 6ca472522c2..4a0daeecfad 100644 --- a/tests/ported_static/stSpecialTest/test_gas_price0.py +++ b/tests/ported_static/stSpecialTest/test_gas_price0.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_gas_price0( ) -> None: """Test_gas_price0.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -52,9 +49,7 @@ def test_gas_price0( code=Op.SSTORE(key=0x0, value=Op.ADD(0x1, 0x1)), balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xBCC1197CCD23A97607F2F96D031F3432E0D16A02), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stSpecialTest/test_jumpdest_attack.py b/tests/ported_static/stSpecialTest/test_jumpdest_attack.py index 3007372aed1..e57e316b083 100644 --- a/tests/ported_static/stSpecialTest/test_jumpdest_attack.py +++ b/tests/ported_static/stSpecialTest/test_jumpdest_attack.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,9 +33,7 @@ def test_jumpdest_attack( ) -> None: """Test_jumpdest_attack.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -63,9 +60,7 @@ def test_jumpdest_attack( + Op.JUMPDEST * 15000, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xBC04EF30BA9EA0F7CE4543BAC777F6AAD09A2096), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stSpecialTest/test_jumpdest_attackwith_jump.py b/tests/ported_static/stSpecialTest/test_jumpdest_attackwith_jump.py index 927bbb4b8fd..e95a5175932 100644 --- a/tests/ported_static/stSpecialTest/test_jumpdest_attackwith_jump.py +++ b/tests/ported_static/stSpecialTest/test_jumpdest_attackwith_jump.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,9 +33,7 @@ def test_jumpdest_attackwith_jump( ) -> None: """Test_jumpdest_attackwith_jump.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -65,9 +62,7 @@ def test_jumpdest_attackwith_jump( + Op.JUMPDEST * 15000, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x3F9D62603C0D43765C8BC6EF623E68A4FC7D78EB), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stSpecialTest/test_make_money.py b/tests/ported_static/stSpecialTest/test_make_money.py index fd59a272d80..9f0678d1dc0 100644 --- a/tests/ported_static/stSpecialTest/test_make_money.py +++ b/tests/ported_static/stSpecialTest/test_make_money.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_make_money( ) -> None: """Test_make_money.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xF79127A3004ABDE26A4CBD80C428CB10F829FA11B54D36E7B326F4F4A5927ACF - ) + sender = pre.fund_eoa(amount=0x3B9ACA00) env = Environment( fee_recipient=coinbase, @@ -46,6 +43,14 @@ def test_make_money( gas_limit=1000000, ) + # Source: raw + # 0x600160015532600255 + addr = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x1, value=0x1) + + Op.SSTORE(key=0x2, value=Op.ORIGIN), + balance=0xDE0B6B3A7640000, + nonce=0, + ) # Source: lll # { (MSTORE 0 0x601080600c6000396000f20060003554156009570060203560003555) (CALL 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec 23 0 0 0 0) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -55,7 +60,7 @@ def test_make_money( ) + Op.CALL( gas=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC, # noqa: E501 - address=0x802EDCCF6CDE9162A05FD89CDFCD8DC4A230B978, + address=addr, value=0x17, args_offset=0x0, args_size=0x0, @@ -65,17 +70,6 @@ def test_make_money( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x56F6DA36928BFFD1FDB9EADE8A5B8BAFFDE0DEA4), # noqa: E501 - ) - pre[sender] = Account(balance=0x3B9ACA00) - # Source: raw - # 0x600160015532600255 - addr = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x1, value=0x1) - + Op.SSTORE(key=0x2, value=Op.ORIGIN), - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0x802EDCCF6CDE9162A05FD89CDFCD8DC4A230B978), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stSpecialTest/test_overflow_gas_make_money.py b/tests/ported_static/stSpecialTest/test_overflow_gas_make_money.py index b124fcd7b5a..8bdbfd8f863 100644 --- a/tests/ported_static/stSpecialTest/test_overflow_gas_make_money.py +++ b/tests/ported_static/stSpecialTest/test_overflow_gas_make_money.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -25,16 +24,13 @@ ["state_tests/stSpecialTest/OverflowGasMakeMoneyFiller.json"], ) @pytest.mark.valid_from("Cancun") -@pytest.mark.pre_alloc_mutable def test_overflow_gas_make_money( state_test: StateTestFiller, pre: Alloc, ) -> None: """Apparently this test was testing theoretical issue occur when tr...""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x4C30106C229CD77A61E9EAB5FCEE11CC912BF94F785EE56F406817744BB6A074 - ) + sender = pre.fund_eoa(amount=0x4FEC000000000139C) env = Environment( fee_recipient=coinbase, @@ -45,8 +41,6 @@ def test_overflow_gas_make_money( gas_limit=9223372036854775807, ) - pre[sender] = Account(balance=0x4FEC000000000139C) - tx = Transaction( sender=sender, to=Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B), diff --git a/tests/ported_static/stSpecialTest/test_push32without_byte.py b/tests/ported_static/stSpecialTest/test_push32without_byte.py index 734c570bb64..86a780c0d8a 100644 --- a/tests/ported_static/stSpecialTest/test_push32without_byte.py +++ b/tests/ported_static/stSpecialTest/test_push32without_byte.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -32,9 +31,7 @@ def test_push32without_byte( ) -> None: """Push expect 32 bytes.""" coinbase = Address(0x68795C4AA09D6F4ED3E5DEDDF8C2AD3049A601DA) - sender = EOA( - key=0x43F683FF58B5310699989DD19A4E1439E5333E2E3445374F7BC1446BAEDDD80 - ) + sender = pre.fund_eoa(amount=0x8AC7230489E80000, nonce=1) env = Environment( fee_recipient=coinbase, @@ -50,9 +47,7 @@ def test_push32without_byte( target = pre.deploy_contract( # noqa: F841 code=bytes.fromhex("7f11223344556677889910"), nonce=0, - address=Address(0xC46EA1C1AD6C8EE63711D0377EF63E51C05D38A0), # noqa: E501 ) - pre[sender] = Account(balance=0x8AC7230489E80000, nonce=1) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stSpecialTest/test_sha3_deja.py b/tests/ported_static/stSpecialTest/test_sha3_deja.py index f10c83819e1..5c7a8f4d997 100644 --- a/tests/ported_static/stSpecialTest/test_sha3_deja.py +++ b/tests/ported_static/stSpecialTest/test_sha3_deja.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_sha3_deja( ) -> None: """Test_sha3_deja.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -54,9 +51,7 @@ def test_sha3_deja( + Op.DUP1, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xCC4CDC08ED5801A6C7D1D87EFB229F9556D50CE6), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stSpecialTest/test_stack_depth_limit_sec.py b/tests/ported_static/stSpecialTest/test_stack_depth_limit_sec.py index 25a8f78af6e..4bc84e2ae16 100644 --- a/tests/ported_static/stSpecialTest/test_stack_depth_limit_sec.py +++ b/tests/ported_static/stSpecialTest/test_stack_depth_limit_sec.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -26,16 +25,13 @@ ["state_tests/stSpecialTest/StackDepthLimitSECFiller.json"], ) @pytest.mark.valid_from("Cancun") -@pytest.mark.pre_alloc_mutable def test_stack_depth_limit_sec( state_test: StateTestFiller, pre: Alloc, ) -> None: """Test_stack_depth_limit_sec.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0x2540BE400) env = Environment( fee_recipient=coinbase, @@ -46,8 +42,6 @@ def test_stack_depth_limit_sec( gas_limit=1000000, ) - pre[sender] = Account(balance=0x2540BE400) - tx = Transaction( sender=sender, to=None, diff --git a/tests/ported_static/stSpecialTest/test_tx_e1c174e2.py b/tests/ported_static/stSpecialTest/test_tx_e1c174e2.py index c13872d98cf..a42f5c81aa1 100644 --- a/tests/ported_static/stSpecialTest/test_tx_e1c174e2.py +++ b/tests/ported_static/stSpecialTest/test_tx_e1c174e2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,9 +33,7 @@ def test_tx_e1c174e2( ) -> None: """Test_tx_e1c174e2.""" coinbase = Address(0x68795C4AA09D6F4ED3E5DEDDF8C2AD3049A601DA) - sender = EOA( - key=0x98D5E7375843784F7EB2606A693BAB39EBAC533561559E372DC3017F30519535 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000, nonce=24) env = Environment( fee_recipient=coinbase, @@ -3294,7 +3291,6 @@ def test_tx_e1c174e2( nonce=0, address=Address(0xF47BACB0D8F13FA44D31623C3D5AE72907D241C1), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000, nonce=24) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStackTests/test_underflow_test.py b/tests/ported_static/stStackTests/test_underflow_test.py index ce8b321e923..92b79de5edb 100644 --- a/tests/ported_static/stStackTests/test_underflow_test.py +++ b/tests/ported_static/stStackTests/test_underflow_test.py @@ -1056,6 +1056,7 @@ def test_underflow_test( gas_limit=100000000, ) + pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE) # Source: raw # 0x600160015560800100 addr = pre.deploy_contract( # noqa: F841 @@ -2762,7 +2763,6 @@ def test_underflow_test( nonce=0, address=Address(0x4C5F839D523E76FC3837E085A3E1538CD36E288A), # noqa: E501 ) - pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stStaticCall/test_static_ab_acalls0.py b/tests/ported_static/stStaticCall/test_static_ab_acalls0.py index cc37220c170..ca1b6965436 100644 --- a/tests/ported_static/stStaticCall/test_static_ab_acalls0.py +++ b/tests/ported_static/stStaticCall/test_static_ab_acalls0.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -59,9 +58,7 @@ def test_static_ab_acalls0( ) -> None: """Test_static_ab_acalls0.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -168,7 +165,6 @@ def test_static_ab_acalls0( nonce=0, address=Address(0x718A83E869D6F4DEA50A650B9825CBFE683BDF16), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stStaticCall/test_static_ab_acalls1.py b/tests/ported_static/stStaticCall/test_static_ab_acalls1.py index 5eaa13d198d..7f4ceb8d318 100644 --- a/tests/ported_static/stStaticCall/test_static_ab_acalls1.py +++ b/tests/ported_static/stStaticCall/test_static_ab_acalls1.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -60,9 +59,7 @@ def test_static_ab_acalls1( ) -> None: """Test_static_ab_acalls1.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -174,7 +171,6 @@ def test_static_ab_acalls1( nonce=0, address=Address(0x5E75046384134A4554C3C7061D4637CB978D5699), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stStaticCall/test_static_ab_acalls2.py b/tests/ported_static/stStaticCall/test_static_ab_acalls2.py index 74aff756abe..df9f37353a3 100644 --- a/tests/ported_static/stStaticCall/test_static_ab_acalls2.py +++ b/tests/ported_static/stStaticCall/test_static_ab_acalls2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -60,9 +59,7 @@ def test_static_ab_acalls2( ) -> None: """Test_static_ab_acalls2.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -159,7 +156,6 @@ def test_static_ab_acalls2( nonce=0, address=Address(0x57EFC7A25D8E40B0798FB4CBC2BCC3C124141CBB), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stStaticCall/test_static_ab_acalls_suicide0.py b/tests/ported_static/stStaticCall/test_static_ab_acalls_suicide0.py index 3b6c5bf3f3e..94fcf44f866 100644 --- a/tests/ported_static/stStaticCall/test_static_ab_acalls_suicide0.py +++ b/tests/ported_static/stStaticCall/test_static_ab_acalls_suicide0.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -59,9 +58,7 @@ def test_static_ab_acalls_suicide0( ) -> None: """Test_static_ab_acalls_suicide0.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -176,7 +173,6 @@ def test_static_ab_acalls_suicide0( nonce=0, address=Address(0x644AC2B24A9316ED4C55001E5EDA02D77F729C7B), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stStaticCall/test_static_ab_acalls_suicide1.py b/tests/ported_static/stStaticCall/test_static_ab_acalls_suicide1.py index 8603614a8d5..5119b012e3e 100644 --- a/tests/ported_static/stStaticCall/test_static_ab_acalls_suicide1.py +++ b/tests/ported_static/stStaticCall/test_static_ab_acalls_suicide1.py @@ -71,6 +71,7 @@ def test_static_ab_acalls_suicide1( gas_limit=100000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { (MSTORE 0 (CALLDATALOAD 0)) (STATICCALL (CALLDATALOAD 0) 0x945304eb96065b2a98b57a48a06ae28d285a71b5 0 32 0 0) } # noqa: E501 contract_0 = pre.deploy_contract( # noqa: F841 @@ -108,7 +109,6 @@ def test_static_ab_acalls_suicide1( nonce=0, address=Address(0x945304EB96065B2A98B57A48A06AE28D285A71B5), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx_data = [ Hash(0x186A0), diff --git a/tests/ported_static/stStaticCall/test_static_call1024_balance_too_low.py b/tests/ported_static/stStaticCall/test_static_call1024_balance_too_low.py index b23dffab7fb..c35d515be61 100644 --- a/tests/ported_static/stStaticCall/test_static_call1024_balance_too_low.py +++ b/tests/ported_static/stStaticCall/test_static_call1024_balance_too_low.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -60,10 +59,7 @@ def test_static_call1024_balance_too_low( ) -> None: """Test_static_call1024_balance_too_low.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - addr = Address(0xD9B97C712EBCE43F3C19179BBEF44B550F9E8BC0) - sender = EOA( - key=0xE7C72B378297589ACEE4E0BA3272841BCFC5E220F86DE253F890274CFEE9E474 - ) + sender = pre.fund_eoa(amount=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) env = Environment( fee_recipient=coinbase, @@ -74,8 +70,7 @@ def test_static_call1024_balance_too_low( gas_limit=9223372036854775807, ) - pre[sender] = Account(balance=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) - pre[addr] = Account(balance=7000) + addr = pre.fund_eoa(amount=7000) # noqa: F841 # Source: lll # { [[ 0 ]] (CALL (GAS) (CALLDATALOAD 0) (CALLVALUE) 0 0 0 0) [[ 1 ]] 1 } target = pre.deploy_contract( # noqa: F841 diff --git a/tests/ported_static/stStaticCall/test_static_call1024_balance_too_low2.py b/tests/ported_static/stStaticCall/test_static_call1024_balance_too_low2.py index c01e8578647..6b2a4856aee 100644 --- a/tests/ported_static/stStaticCall/test_static_call1024_balance_too_low2.py +++ b/tests/ported_static/stStaticCall/test_static_call1024_balance_too_low2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -60,10 +59,7 @@ def test_static_call1024_balance_too_low2( ) -> None: """Test_static_call1024_balance_too_low2.""" coinbase = Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) - addr = Address(0xD9B97C712EBCE43F3C19179BBEF44B550F9E8BC0) - sender = EOA( - key=0xE7C72B378297589ACEE4E0BA3272841BCFC5E220F86DE253F890274CFEE9E474 - ) + sender = pre.fund_eoa(amount=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) env = Environment( fee_recipient=coinbase, @@ -74,8 +70,7 @@ def test_static_call1024_balance_too_low2( gas_limit=9223372036854775807, ) - pre[sender] = Account(balance=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) - pre[addr] = Account(balance=7000) + addr = pre.fund_eoa(amount=7000) # noqa: F841 # Source: lll # { [[ 0 ]] (CALL (GAS) (CALLDATALOAD 0) (CALLVALUE) 0 0 0 0) [[ 1 ]] 1 } target = pre.deploy_contract( # noqa: F841 diff --git a/tests/ported_static/stStaticCall/test_static_call1024_pre_calls.py b/tests/ported_static/stStaticCall/test_static_call1024_pre_calls.py index 077d9c2b1d3..e0d260f263f 100644 --- a/tests/ported_static/stStaticCall/test_static_call1024_pre_calls.py +++ b/tests/ported_static/stStaticCall/test_static_call1024_pre_calls.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -60,10 +59,7 @@ def test_static_call1024_pre_calls( ) -> None: """Test_static_call1024_pre_calls.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - addr = Address(0xD9B97C712EBCE43F3C19179BBEF44B550F9E8BC0) - sender = EOA( - key=0xCC381C83857B17CA629268ED418E2915A0287B84EFE9CF2204C020302E83CDA0 - ) + sender = pre.fund_eoa(amount=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) env = Environment( fee_recipient=coinbase, @@ -74,7 +70,7 @@ def test_static_call1024_pre_calls( gas_limit=9223372036854775807, ) - pre[sender] = Account(balance=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) + addr = pre.fund_eoa(amount=7000) # noqa: F841 # Source: lll # { [[ 0 ]] (CALL (GAS) (CALLDATALOAD 0) (CALLVALUE) 0 0 0 0) [[ 1 ]] 1 } target = pre.deploy_contract( # noqa: F841 @@ -95,7 +91,6 @@ def test_static_call1024_pre_calls( nonce=0, address=Address(0xC0E4183389EB57F779A986D8C878F89B9401DC8E), # noqa: E501 ) - pre[addr] = Account(balance=7000) # Source: lll # { [[ 2 ]] (STATICCALL 0xffff 0 0 0 0) [[ 3 ]] (STATICCALL 0xffff 0 0 0 0) [[ 0 ]] (ADD @@0 1) [[ 1 ]] (STATICCALL 0xfffffffffff 0 0 0 0) } # noqa: E501 addr_2 = pre.deploy_contract( # noqa: F841 diff --git a/tests/ported_static/stStaticCall/test_static_call1024_pre_calls2.py b/tests/ported_static/stStaticCall/test_static_call1024_pre_calls2.py index 1f8653ca43b..8cf74830cb1 100644 --- a/tests/ported_static/stStaticCall/test_static_call1024_pre_calls2.py +++ b/tests/ported_static/stStaticCall/test_static_call1024_pre_calls2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -60,9 +59,7 @@ def test_static_call1024_pre_calls2( ) -> None: """Test_static_call1024_pre_calls2.""" coinbase = Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) - sender = EOA( - key=0xCC381C83857B17CA629268ED418E2915A0287B84EFE9CF2204C020302E83CDA0 - ) + sender = pre.fund_eoa(amount=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) env = Environment( fee_recipient=coinbase, @@ -73,7 +70,6 @@ def test_static_call1024_pre_calls2( gas_limit=9223372036854775807, ) - pre[sender] = Account(balance=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) # Source: lll # { [[ 0 ]] (CALL (GAS) (CALLDATALOAD 0) (CALLVALUE) 0 0 0 0) [[ 1 ]] 1 } target = pre.deploy_contract( # noqa: F841 diff --git a/tests/ported_static/stStaticCall/test_static_call1024_pre_calls3.py b/tests/ported_static/stStaticCall/test_static_call1024_pre_calls3.py index f6f9a96d1ae..6448a69f8f0 100644 --- a/tests/ported_static/stStaticCall/test_static_call1024_pre_calls3.py +++ b/tests/ported_static/stStaticCall/test_static_call1024_pre_calls3.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -60,10 +59,7 @@ def test_static_call1024_pre_calls3( ) -> None: """Test_static_call1024_pre_calls3.""" coinbase = Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) - addr = Address(0xD9B97C712EBCE43F3C19179BBEF44B550F9E8BC0) - sender = EOA( - key=0xCC381C83857B17CA629268ED418E2915A0287B84EFE9CF2204C020302E83CDA0 - ) + sender = pre.fund_eoa(amount=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) env = Environment( fee_recipient=coinbase, @@ -74,7 +70,7 @@ def test_static_call1024_pre_calls3( gas_limit=9223372036854775807, ) - pre[sender] = Account(balance=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) + addr = pre.fund_eoa(amount=7000) # noqa: F841 # Source: lll # { [[ 0 ]] (CALL (GAS) (CALLDATALOAD 0) (CALLVALUE) 0 0 0 0) [[ 1 ]] 1 } target = pre.deploy_contract( # noqa: F841 @@ -95,7 +91,6 @@ def test_static_call1024_pre_calls3( nonce=0, address=Address(0xC0E4183389EB57F779A986D8C878F89B9401DC8E), # noqa: E501 ) - pre[addr] = Account(balance=7000) # Source: lll # { [[ 2 ]] (STATICCALL 0xffff 0 0 0 0) [[ 3 ]] (STATICCALL 0xffff 0 0 0 0) [[ 0 ]] (ADD @@0 1) [[ 1 ]] (STATICCALL 0xfffffffffff 0 0 0 0) } # noqa: E501 addr_2 = pre.deploy_contract( # noqa: F841 diff --git a/tests/ported_static/stStaticCall/test_static_call1_mb1024_calldepth.py b/tests/ported_static/stStaticCall/test_static_call1_mb1024_calldepth.py index 5602ad54f1b..09ad53cc867 100644 --- a/tests/ported_static/stStaticCall/test_static_call1_mb1024_calldepth.py +++ b/tests/ported_static/stStaticCall/test_static_call1_mb1024_calldepth.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -60,10 +59,7 @@ def test_static_call1_mb1024_calldepth( ) -> None: """Test_static_call1_mb1024_calldepth.""" coinbase = Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) - addr = Address(0x2AB8257767339461506C0C67824CF17BC77B52CA) - sender = EOA( - key=0xE7C72B378297589ACEE4E0BA3272841BCFC5E220F86DE253F890274CFEE9E474 - ) + sender = pre.fund_eoa(amount=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) env = Environment( fee_recipient=coinbase, @@ -74,8 +70,7 @@ def test_static_call1_mb1024_calldepth( gas_limit=892500000000, ) - pre[sender] = Account(balance=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) - pre[addr] = Account(balance=0xFFFFFFFFFFFFF) + addr = pre.fund_eoa(amount=0xFFFFFFFFFFFFF) # noqa: F841 # Source: lll # { [[ 0 ]] (CALL (GAS) (CALLDATALOAD 0) 0 0 0 0 0) } target = pre.deploy_contract( # noqa: F841 diff --git a/tests/ported_static/stStaticCall/test_static_call50000.py b/tests/ported_static/stStaticCall/test_static_call50000.py index 3a91cc8c5cd..00bf19407fd 100644 --- a/tests/ported_static/stStaticCall/test_static_call50000.py +++ b/tests/ported_static/stStaticCall/test_static_call50000.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -60,9 +59,7 @@ def test_static_call50000( ) -> None: """Test_static_call50000.""" coinbase = Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) - sender = EOA( - key=0xE7C72B378297589ACEE4E0BA3272841BCFC5E220F86DE253F890274CFEE9E474 - ) + sender = pre.fund_eoa(amount=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) env = Environment( fee_recipient=coinbase, @@ -73,7 +70,6 @@ def test_static_call50000( gas_limit=100000000000, ) - pre[sender] = Account(balance=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) # Source: lll # { (MSTORE 0 (SLOAD 0)) } addr = pre.deploy_contract( # noqa: F841 @@ -113,8 +109,8 @@ def test_static_call50000( address=Address(0xC0E4183389EB57F779A986D8C878F89B9401DC8E), # noqa: E501 ) # Source: lll - # { (def 'i 0x80) (for {} (< @i 50000) [i](+ @i 1) [[ 0 ]] (STATICCALL 100000 0 50000 0 0) ) [[ 1 ]] @i} # noqa: E501 - addr_3 = pre.deploy_contract( # noqa: F841 + # { (def 'i 0x80) (for {} (< @i 50000) [i](+ @i 1) (SSTORE 0 (STATICCALL 100000 0 50000 0 0)) ) (SSTORE 32 @i ) } # noqa: E501 + addr_4 = pre.deploy_contract( # noqa: F841 code=Op.JUMPDEST + Op.JUMPI( pc=0x3E, condition=Op.ISZERO(Op.LT(Op.MLOAD(offset=0x80), 0xC350)) @@ -123,7 +119,7 @@ def test_static_call50000( key=0x0, value=Op.STATICCALL( gas=0x186A0, - address=0x7EFD7E4E34D1783F5D86B7862A37B3BBBD13DEB8, + address=0x6D440CD3E818056E21914C856E3712F4186B06C8, args_offset=0x0, args_size=0xC350, ret_offset=0x0, @@ -133,15 +129,15 @@ def test_static_call50000( + Op.MSTORE(offset=0x80, value=Op.ADD(Op.MLOAD(offset=0x80), 0x1)) + Op.JUMP(pc=0x0) + Op.JUMPDEST - + Op.SSTORE(key=0x1, value=Op.MLOAD(offset=0x80)) + + Op.SSTORE(key=0x20, value=Op.MLOAD(offset=0x80)) + Op.STOP, balance=0xFFFFFFFFFFFFF, nonce=0, - address=Address(0x2E396FD4F6F2799D61F534B43175F5344C65ECAC), # noqa: E501 + address=Address(0xB00A8701F877B1152CD955E957FCBAF51A15F55F), # noqa: E501 ) # Source: lll - # { (def 'i 0x80) (for {} (< @i 50000) [i](+ @i 1) (SSTORE 0 (STATICCALL 100000 0 50000 0 0)) ) (SSTORE 32 @i ) } # noqa: E501 - addr_4 = pre.deploy_contract( # noqa: F841 + # { (def 'i 0x80) (for {} (< @i 50000) [i](+ @i 1) [[ 0 ]] (STATICCALL 100000 0 50000 0 0) ) [[ 1 ]] @i} # noqa: E501 + addr_3 = pre.deploy_contract( # noqa: F841 code=Op.JUMPDEST + Op.JUMPI( pc=0x3E, condition=Op.ISZERO(Op.LT(Op.MLOAD(offset=0x80), 0xC350)) @@ -150,7 +146,7 @@ def test_static_call50000( key=0x0, value=Op.STATICCALL( gas=0x186A0, - address=0x6D440CD3E818056E21914C856E3712F4186B06C8, + address=0x7EFD7E4E34D1783F5D86B7862A37B3BBBD13DEB8, args_offset=0x0, args_size=0xC350, ret_offset=0x0, @@ -160,11 +156,11 @@ def test_static_call50000( + Op.MSTORE(offset=0x80, value=Op.ADD(Op.MLOAD(offset=0x80), 0x1)) + Op.JUMP(pc=0x0) + Op.JUMPDEST - + Op.SSTORE(key=0x20, value=Op.MLOAD(offset=0x80)) + + Op.SSTORE(key=0x1, value=Op.MLOAD(offset=0x80)) + Op.STOP, balance=0xFFFFFFFFFFFFF, nonce=0, - address=Address(0xB00A8701F877B1152CD955E957FCBAF51A15F55F), # noqa: E501 + address=Address(0x2E396FD4F6F2799D61F534B43175F5344C65ECAC), # noqa: E501 ) expect_entries_: list[dict] = [ diff --git a/tests/ported_static/stStaticCall/test_static_call50000_ecrec.py b/tests/ported_static/stStaticCall/test_static_call50000_ecrec.py index 8ebac330d83..00a665359f4 100644 --- a/tests/ported_static/stStaticCall/test_static_call50000_ecrec.py +++ b/tests/ported_static/stStaticCall/test_static_call50000_ecrec.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -60,9 +59,7 @@ def test_static_call50000_ecrec( ) -> None: """Test_static_call50000_ecrec.""" coinbase = Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) - sender = EOA( - key=0xE7C72B378297589ACEE4E0BA3272841BCFC5E220F86DE253F890274CFEE9E474 - ) + sender = pre.fund_eoa(amount=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) env = Environment( fee_recipient=coinbase, @@ -73,7 +70,6 @@ def test_static_call50000_ecrec( gas_limit=95000000, ) - pre[sender] = Account(balance=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) # Source: lll # { [[ 0 ]] (CALL (GAS) (CALLDATALOAD 0) (CALLVALUE) 0 0 0 0) [[ 1 ]] 1 } target = pre.deploy_contract( # noqa: F841 diff --git a/tests/ported_static/stStaticCall/test_static_call50000_identity.py b/tests/ported_static/stStaticCall/test_static_call50000_identity.py index 3f355179f01..411f8506a38 100644 --- a/tests/ported_static/stStaticCall/test_static_call50000_identity.py +++ b/tests/ported_static/stStaticCall/test_static_call50000_identity.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -60,9 +59,7 @@ def test_static_call50000_identity( ) -> None: """Test_static_call50000_identity.""" coinbase = Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) - sender = EOA( - key=0xE7C72B378297589ACEE4E0BA3272841BCFC5E220F86DE253F890274CFEE9E474 - ) + sender = pre.fund_eoa(amount=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) env = Environment( fee_recipient=coinbase, @@ -73,7 +70,6 @@ def test_static_call50000_identity( gas_limit=89250000, ) - pre[sender] = Account(balance=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) # Source: lll # { [[ 0 ]] (CALL (GAS) (CALLDATALOAD 0) (CALLVALUE) 0 0 0 0) [[ 1 ]] 1 } target = pre.deploy_contract( # noqa: F841 diff --git a/tests/ported_static/stStaticCall/test_static_call50000_identity2.py b/tests/ported_static/stStaticCall/test_static_call50000_identity2.py index 5fcef6d8efd..cbbe552fd44 100644 --- a/tests/ported_static/stStaticCall/test_static_call50000_identity2.py +++ b/tests/ported_static/stStaticCall/test_static_call50000_identity2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -60,9 +59,7 @@ def test_static_call50000_identity2( ) -> None: """Test_static_call50000_identity2.""" coinbase = Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) - sender = EOA( - key=0xE7C72B378297589ACEE4E0BA3272841BCFC5E220F86DE253F890274CFEE9E474 - ) + sender = pre.fund_eoa(amount=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) env = Environment( fee_recipient=coinbase, @@ -73,7 +70,6 @@ def test_static_call50000_identity2( gas_limit=8925000000, ) - pre[sender] = Account(balance=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) # Source: lll # { [[ 0 ]] (CALL (GAS) (CALLDATALOAD 0) (CALLVALUE) 0 0 0 0) [[ 1 ]] 1 } target = pre.deploy_contract( # noqa: F841 diff --git a/tests/ported_static/stStaticCall/test_static_call50000_rip160.py b/tests/ported_static/stStaticCall/test_static_call50000_rip160.py index a0fa22cf401..12a1fa68939 100644 --- a/tests/ported_static/stStaticCall/test_static_call50000_rip160.py +++ b/tests/ported_static/stStaticCall/test_static_call50000_rip160.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -57,9 +56,7 @@ def test_static_call50000_rip160( ) -> None: """Test_static_call50000_rip160.""" coinbase = Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) - sender = EOA( - key=0xE7C72B378297589ACEE4E0BA3272841BCFC5E220F86DE253F890274CFEE9E474 - ) + sender = pre.fund_eoa(amount=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) env = Environment( fee_recipient=coinbase, @@ -70,7 +67,6 @@ def test_static_call50000_rip160( gas_limit=39250000000, ) - pre[sender] = Account(balance=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) # Source: lll # { [[ 0 ]] (CALL (GAS) (CALLDATALOAD 0) (CALLVALUE) 0 0 0 0) [[ 1 ]] 1 } target = pre.deploy_contract( # noqa: F841 diff --git a/tests/ported_static/stStaticCall/test_static_call50000bytes_contract50_1.py b/tests/ported_static/stStaticCall/test_static_call50000bytes_contract50_1.py index a18045ffdc0..c1571a59264 100644 --- a/tests/ported_static/stStaticCall/test_static_call50000bytes_contract50_1.py +++ b/tests/ported_static/stStaticCall/test_static_call50000bytes_contract50_1.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -60,9 +59,7 @@ def test_static_call50000bytes_contract50_1( ) -> None: """Test_static_call50000bytes_contract50_1.""" coinbase = Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) - sender = EOA( - key=0xE7C72B378297589ACEE4E0BA3272841BCFC5E220F86DE253F890274CFEE9E474 - ) + sender = pre.fund_eoa(amount=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) env = Environment( fee_recipient=coinbase, @@ -73,7 +70,6 @@ def test_static_call50000bytes_contract50_1( gas_limit=892500000000, ) - pre[sender] = Account(balance=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) # Source: lll # { [[ 0 ]] (CALL (GAS) (CALLDATALOAD 0) (CALLVALUE) 0 0 0 0) [[ 1 ]] 1 } target = pre.deploy_contract( # noqa: F841 @@ -96,7 +92,9 @@ def test_static_call50000bytes_contract50_1( ) # Source: raw # 0x6001600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600055 # noqa: E501 - addr = Address(0x784C659B2B4D2B69AB5564D60F4E565C7A1CEB2B) + addr = Address( + 0x784C659B2B4D2B69AB5564D60F4E565C7A1CEB2B + ) # oversized contract pre[addr] = Account( code=bytes.fromhex( "6001600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600101600055" # noqa: E501 @@ -104,6 +102,18 @@ def test_static_call50000bytes_contract50_1( balance=0xFFFFFFFFFFFFF, nonce=0, ) + # Source: raw + # 0x60016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016000 # noqa: E501 + addr_3 = Address( + 0x80C3355386CD2326418157DBD8764B380B971F67 + ) # oversized contract + pre[addr_3] = Account( + code=bytes.fromhex( + "60016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016000" # noqa: E501 + ), + balance=0xFFFFFFFFFFFFF, + nonce=0, + ) # Source: lll # { (def 'i 0x80) (for {} (< @i 50) [i](+ @i 1) [[ 0 ]] (STATICCALL 88250000000 0 0 0 0) ) [[ 1 ]] @i } # noqa: E501 addr_2 = pre.deploy_contract( # noqa: F841 @@ -131,16 +141,6 @@ def test_static_call50000bytes_contract50_1( nonce=0, address=Address(0xD7B377D5D96EF739E27BC58E021C51E934A9A85B), # noqa: E501 ) - # Source: raw - # 0x60016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016000 # noqa: E501 - addr_3 = Address(0x80C3355386CD2326418157DBD8764B380B971F67) - pre[addr_3] = Account( - code=bytes.fromhex( - "60016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016001016000" # noqa: E501 - ), - balance=0xFFFFFFFFFFFFF, - nonce=0, - ) # Source: lll # { (def 'i 0x80) (for {} (< @i 50) [i](+ @i 1) (MSTORE 0 (STATICCALL 88250000000 0 0 0 0)) ) (MSTORE 32 @i) } # noqa: E501 addr_4 = pre.deploy_contract( # noqa: F841 diff --git a/tests/ported_static/stStaticCall/test_static_call50000bytes_contract50_2.py b/tests/ported_static/stStaticCall/test_static_call50000bytes_contract50_2.py index a4f30efc60b..ad164e9725c 100644 --- a/tests/ported_static/stStaticCall/test_static_call50000bytes_contract50_2.py +++ b/tests/ported_static/stStaticCall/test_static_call50000bytes_contract50_2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -60,9 +59,7 @@ def test_static_call50000bytes_contract50_2( ) -> None: """Test_static_call50000bytes_contract50_2.""" coinbase = Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) - sender = EOA( - key=0xE7C72B378297589ACEE4E0BA3272841BCFC5E220F86DE253F890274CFEE9E474 - ) + sender = pre.fund_eoa(amount=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) env = Environment( fee_recipient=coinbase, @@ -73,7 +70,6 @@ def test_static_call50000bytes_contract50_2( gas_limit=892500000000, ) - pre[sender] = Account(balance=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) # Source: lll # { [[ 0 ]] (CALL (GAS) (CALLDATALOAD 0) (CALLVALUE) 0 0 0 0) [[ 1 ]] 1 } target = pre.deploy_contract( # noqa: F841 @@ -96,7 +92,9 @@ def test_static_call50000bytes_contract50_2( ) # Source: raw # 0x60015b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b600101600055 # noqa: E501 - addr = Address(0x1836FD8C1DB3E96AE2A516F50C27483CD48D2EF0) + addr = Address( + 0x1836FD8C1DB3E96AE2A516F50C27483CD48D2EF0 + ) # oversized contract pre[addr] = Account( code=bytes.fromhex( "60015b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b600101600055" # noqa: E501 @@ -104,6 +102,18 @@ def test_static_call50000bytes_contract50_2( balance=0xFFFFFFFFFFFFF, nonce=0, ) + # Source: raw + # 0x60015b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b600101 # noqa: E501 + addr_3 = Address( + 0xEA3174AB39F002DEF28B14B425DC9E7E67FED805 + ) # oversized contract + pre[addr_3] = Account( + code=bytes.fromhex( + "60015b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b600101" # noqa: E501 + ), + balance=0xFFFFFFFFFFFFF, + nonce=0, + ) # Source: lll # { (def 'i 0x80) (for {} (< @i 50) [i](+ @i 1) [[ 0 ]] (STATICCALL 88250000000 0 0 0 0) ) [[ 1 ]] @i } # noqa: E501 addr_2 = pre.deploy_contract( # noqa: F841 @@ -131,16 +141,6 @@ def test_static_call50000bytes_contract50_2( nonce=0, address=Address(0xD7B377D5D96EF739E27BC58E021C51E934A9A85B), # noqa: E501 ) - # Source: raw - # 0x60015b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b600101 # noqa: E501 - addr_3 = Address(0xEA3174AB39F002DEF28B14B425DC9E7E67FED805) - pre[addr_3] = Account( - code=bytes.fromhex( - "60015b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b600101" # noqa: E501 - ), - balance=0xFFFFFFFFFFFFF, - nonce=0, - ) # Source: lll # { (def 'i 0x80) (for {} (< @i 50) [i](+ @i 1) (MSTORE 0 (STATICCALL 88250000000 0 0 0 0)) ) (MSTORE 32 @i ) } # noqa: E501 addr_4 = pre.deploy_contract( # noqa: F841 diff --git a/tests/ported_static/stStaticCall/test_static_call50000bytes_contract50_3.py b/tests/ported_static/stStaticCall/test_static_call50000bytes_contract50_3.py index 133193e6426..1041834efd5 100644 --- a/tests/ported_static/stStaticCall/test_static_call50000bytes_contract50_3.py +++ b/tests/ported_static/stStaticCall/test_static_call50000bytes_contract50_3.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -60,9 +59,7 @@ def test_static_call50000bytes_contract50_3( ) -> None: """Test_static_call50000bytes_contract50_3.""" coinbase = Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) - sender = EOA( - key=0xE7C72B378297589ACEE4E0BA3272841BCFC5E220F86DE253F890274CFEE9E474 - ) + sender = pre.fund_eoa(amount=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) env = Environment( fee_recipient=coinbase, @@ -73,7 +70,6 @@ def test_static_call50000bytes_contract50_3( gas_limit=892500000000, ) - pre[sender] = Account(balance=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) # Source: lll # { [[ 0 ]] (CALL (GAS) (CALLDATALOAD 0) (CALLVALUE) 0 0 0 0) [[ 1 ]] 1 } target = pre.deploy_contract( # noqa: F841 @@ -96,7 +92,9 @@ def test_static_call50000bytes_contract50_3( ) # Source: raw # 0x600161da8e565b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b600101600055 # noqa: E501 - addr = Address(0x653CF6168B15C28D212F20D652C34BBE734A8718) + addr = Address( + 0x653CF6168B15C28D212F20D652C34BBE734A8718 + ) # oversized contract pre[addr] = Account( code=bytes.fromhex( "600161da8e565b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b600101600055" # noqa: E501 @@ -104,6 +102,18 @@ def test_static_call50000bytes_contract50_3( balance=0xFFFFFFFFFFFFF, nonce=0, ) + # Source: raw + # 0x600161da8e565b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b600101 # noqa: E501 + addr_3 = Address( + 0x0431FBE9C18DC43AF2C372A7554BB2826176BDFD + ) # oversized contract + pre[addr_3] = Account( + code=bytes.fromhex( + "600161da8e565b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b600101" # noqa: E501 + ), + balance=0xFFFFFFFFFFFFF, + nonce=0, + ) # Source: lll # { (def 'i 0x80) (for {} (< @i 50) [i](+ @i 1) [[ 0 ]] (STATICCALL 88250000000 0 0 0 0) ) [[ 1 ]] @i } # noqa: E501 addr_2 = pre.deploy_contract( # noqa: F841 @@ -131,16 +141,6 @@ def test_static_call50000bytes_contract50_3( nonce=0, address=Address(0xD7B377D5D96EF739E27BC58E021C51E934A9A85B), # noqa: E501 ) - # Source: raw - # 0x600161da8e565b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b600101 # noqa: E501 - addr_3 = Address(0x0431FBE9C18DC43AF2C372A7554BB2826176BDFD) - pre[addr_3] = Account( - code=bytes.fromhex( - "600161da8e565b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b600101" # noqa: E501 - ), - balance=0xFFFFFFFFFFFFF, - nonce=0, - ) # Source: lll # { (def 'i 0x80) (for {} (< @i 50) [i](+ @i 1) (MSTORE 0 (STATICCALL 88250000000 0 0 0 0)) ) (MSTORE 32 @i ) } # noqa: E501 addr_4 = pre.deploy_contract( # noqa: F841 diff --git a/tests/ported_static/stStaticCall/test_static_call_and_callcode_consume_more_gas_then_transaction_has.py b/tests/ported_static/stStaticCall/test_static_call_and_callcode_consume_more_gas_then_transaction_has.py index 31a04a8e0e4..1186ce1cc64 100644 --- a/tests/ported_static/stStaticCall/test_static_call_and_callcode_consume_more_gas_then_transaction_has.py +++ b/tests/ported_static/stStaticCall/test_static_call_and_callcode_consume_more_gas_then_transaction_has.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -61,9 +60,7 @@ def test_static_call_and_callcode_consume_more_gas_then_transaction_has( ) -> None: """Test_static_call_and_callcode_consume_more_gas_then_transaction_has.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x4F31B3206FBF0E0E598B9B1A7D8AC86302A0FF1D8930738F1BEBAE9B67173E52 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -74,7 +71,6 @@ def test_static_call_and_callcode_consume_more_gas_then_transaction_has( gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) # Source: lll # { [[ 0 ]] (CALL (GAS) (CALLDATALOAD 0) (CALLVALUE) 0 0 0 0) [[ 1 ]] 1 } target = pre.deploy_contract( # noqa: F841 @@ -96,6 +92,20 @@ def test_static_call_and_callcode_consume_more_gas_then_transaction_has( address=Address(0xC0E4183389EB57F779A986D8C878F89B9401DC8E), # noqa: E501 ) # Source: lll + # { (SSTORE 0 0x12) } + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x0, value=0x12) + Op.STOP, + nonce=0, + address=Address(0xFD59ABAE521384B5731AC657616680219FBC423D), # noqa: E501 + ) + # Source: lll + # { (MSTORE 0 0x12) } + addr_4 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x0, value=0x12) + Op.STOP, + nonce=0, + address=Address(0x9620801959B49D6D1BD08F0CDAFDA5D87E900403), # noqa: E501 + ) + # Source: lll # { (SSTORE 9 (STATICCALL 600000 0 0 0 0)) (SSTORE 10 (CALLCODE 600000 0 0 0 0 0)) } # noqa: E501 addr = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( @@ -126,13 +136,6 @@ def test_static_call_and_callcode_consume_more_gas_then_transaction_has( address=Address(0x438F316BA8E30F69666A3477A7F5CD26235D3CBB), # noqa: E501 ) # Source: lll - # { (SSTORE 0 0x12) } - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x0, value=0x12) + Op.STOP, - nonce=0, - address=Address(0xFD59ABAE521384B5731AC657616680219FBC423D), # noqa: E501 - ) - # Source: lll # { (SSTORE 9 (STATICCALL 600000 0 0 0 0)) (SSTORE 10 (CALLCODE 600000 0 0 0 0 0)) } # noqa: E501 addr_3 = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( @@ -162,13 +165,6 @@ def test_static_call_and_callcode_consume_more_gas_then_transaction_has( nonce=0, address=Address(0x7D77EAF6DC93E2B7B83A8E06314AF1CE47CD2596), # noqa: E501 ) - # Source: lll - # { (MSTORE 0 0x12) } - addr_4 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x0, value=0x12) + Op.STOP, - nonce=0, - address=Address(0x9620801959B49D6D1BD08F0CDAFDA5D87E900403), # noqa: E501 - ) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stStaticCall/test_static_call_ask_more_gas_on_depth2_then_transaction_has.py b/tests/ported_static/stStaticCall/test_static_call_ask_more_gas_on_depth2_then_transaction_has.py index 3d69d184695..1ff95945afb 100644 --- a/tests/ported_static/stStaticCall/test_static_call_ask_more_gas_on_depth2_then_transaction_has.py +++ b/tests/ported_static/stStaticCall/test_static_call_ask_more_gas_on_depth2_then_transaction_has.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -61,9 +60,7 @@ def test_static_call_ask_more_gas_on_depth2_then_transaction_has( ) -> None: """Test_static_call_ask_more_gas_on_depth2_then_transaction_has.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x4F31B3206FBF0E0E598B9B1A7D8AC86302A0FF1D8930738F1BEBAE9B67173E52 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -74,7 +71,6 @@ def test_static_call_ask_more_gas_on_depth2_then_transaction_has( gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) # Source: lll # { [[ 0 ]] (CALL (GAS) (CALLDATALOAD 0) (CALLVALUE) 0 0 0 0) [[ 1 ]] 1 } target = pre.deploy_contract( # noqa: F841 @@ -96,14 +92,28 @@ def test_static_call_ask_more_gas_on_depth2_then_transaction_has( address=Address(0xC0E4183389EB57F779A986D8C878F89B9401DC8E), # noqa: E501 ) # Source: lll - # { (SSTORE 8 1) (SSTORE 9 (STATICCALL 200000 0 0 0 0)) } # noqa: E501 - addr = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x8, value=0x1) - + Op.SSTORE( - key=0x9, + # { (SSTORE 8 1)} + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x8, value=0x1) + Op.STOP, + nonce=0, + address=Address(0x5044BFB29664A79DE12215897C630DC8A11B0B97), # noqa: E501 + ) + # Source: lll + # { (MSTORE 8 (GAS))} + addr_6 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x8, value=Op.GAS) + Op.STOP, + nonce=0, + address=Address(0x91B291A3336BC1357388354DF18CA061B39E3745), # noqa: E501 + ) + # Source: lll + # { (MSTORE 8 (GAS)) (MSTORE 9 (STATICCALL 600000 0 0 0 0)) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x8, value=Op.GAS) + + Op.MSTORE( + offset=0x9, value=Op.STATICCALL( - gas=0x30D40, - address=0xD9539C5A3DC4713D47A547BFC9A075BD97287080, + gas=0x927C0, + address=0x5044BFB29664A79DE12215897C630DC8A11B0B97, args_offset=0x0, args_size=0x0, ret_offset=0x0, @@ -112,17 +122,17 @@ def test_static_call_ask_more_gas_on_depth2_then_transaction_has( ) + Op.STOP, nonce=0, - address=Address(0xEF69A9B2C20255FB7BD2B0AC7D45601A03D570B0), # noqa: E501 + address=Address(0xD9539C5A3DC4713D47A547BFC9A075BD97287080), # noqa: E501 ) # Source: lll - # { (MSTORE 8 (GAS)) (MSTORE 9 (STATICCALL 600000 0 0 0 0)) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 + # { (MSTORE 8 (GAS)) (MSTORE 9 (STATICCALL 600000 0 0 0 0)) } # noqa: E501 + addr_5 = pre.deploy_contract( # noqa: F841 code=Op.MSTORE(offset=0x8, value=Op.GAS) + Op.MSTORE( offset=0x9, value=Op.STATICCALL( gas=0x927C0, - address=0x5044BFB29664A79DE12215897C630DC8A11B0B97, + address=0x91B291A3336BC1357388354DF18CA061B39E3745, args_offset=0x0, args_size=0x0, ret_offset=0x0, @@ -131,24 +141,17 @@ def test_static_call_ask_more_gas_on_depth2_then_transaction_has( ) + Op.STOP, nonce=0, - address=Address(0xD9539C5A3DC4713D47A547BFC9A075BD97287080), # noqa: E501 - ) - # Source: lll - # { (SSTORE 8 1)} - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x8, value=0x1) + Op.STOP, - nonce=0, - address=Address(0x5044BFB29664A79DE12215897C630DC8A11B0B97), # noqa: E501 + address=Address(0xE5A4D8074950EC8067D602848B666CA151B09C9F), # noqa: E501 ) # Source: lll - # { (SSTORE 8 1) (SSTORE 9 (STATICCALL 200000 0 0 0 0)) } # noqa: E501 - addr_4 = pre.deploy_contract( # noqa: F841 + # { (SSTORE 8 1) (SSTORE 9 (STATICCALL 200000 0 0 0 0)) } # noqa: E501 + addr = pre.deploy_contract( # noqa: F841 code=Op.SSTORE(key=0x8, value=0x1) + Op.SSTORE( key=0x9, value=Op.STATICCALL( gas=0x30D40, - address=0xE5A4D8074950EC8067D602848B666CA151B09C9F, + address=0xD9539C5A3DC4713D47A547BFC9A075BD97287080, args_offset=0x0, args_size=0x0, ret_offset=0x0, @@ -157,17 +160,17 @@ def test_static_call_ask_more_gas_on_depth2_then_transaction_has( ) + Op.STOP, nonce=0, - address=Address(0x8169DC735802BB5C18A777052CF4CE326B5FD725), # noqa: E501 + address=Address(0xEF69A9B2C20255FB7BD2B0AC7D45601A03D570B0), # noqa: E501 ) # Source: lll - # { (MSTORE 8 (GAS)) (MSTORE 9 (STATICCALL 600000 0 0 0 0)) } # noqa: E501 - addr_5 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x8, value=Op.GAS) - + Op.MSTORE( - offset=0x9, + # { (SSTORE 8 1) (SSTORE 9 (STATICCALL 200000 0 0 0 0)) } # noqa: E501 + addr_4 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x8, value=0x1) + + Op.SSTORE( + key=0x9, value=Op.STATICCALL( - gas=0x927C0, - address=0x91B291A3336BC1357388354DF18CA061B39E3745, + gas=0x30D40, + address=0xE5A4D8074950EC8067D602848B666CA151B09C9F, args_offset=0x0, args_size=0x0, ret_offset=0x0, @@ -176,14 +179,7 @@ def test_static_call_ask_more_gas_on_depth2_then_transaction_has( ) + Op.STOP, nonce=0, - address=Address(0xE5A4D8074950EC8067D602848B666CA151B09C9F), # noqa: E501 - ) - # Source: lll - # { (MSTORE 8 (GAS))} - addr_6 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x8, value=Op.GAS) + Op.STOP, - nonce=0, - address=Address(0x91B291A3336BC1357388354DF18CA061B39E3745), # noqa: E501 + address=Address(0x8169DC735802BB5C18A777052CF4CE326B5FD725), # noqa: E501 ) expect_entries_: list[dict] = [ diff --git a/tests/ported_static/stStaticCall/test_static_call_basic.py b/tests/ported_static/stStaticCall/test_static_call_basic.py index 00a1b0623e4..a3cf98b6409 100644 --- a/tests/ported_static/stStaticCall/test_static_call_basic.py +++ b/tests/ported_static/stStaticCall/test_static_call_basic.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -71,9 +70,7 @@ def test_static_call_basic( ) -> None: """Test_static_call_basic.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -123,6 +120,24 @@ def test_static_call_basic( address=Address(0xEAD198F480FB91A5FBEDCF5EB28CD369EE4C6CF2), # noqa: E501 ) # Source: lll + # { (LOG0 1 10) (MSTORE 1 1) } + addr_4 = pre.deploy_contract( # noqa: F841 + code=Op.LOG0(offset=0x1, size=0xA) + + Op.MSTORE(offset=0x1, value=0x1) + + Op.STOP, + balance=23, + nonce=0, + address=Address(0x2E0DD8ABE4E68C5B602F3C65051F4B30C6D018DA), # noqa: E501 + ) + # Source: lll + # { (MSTORE 1 1) } + addr_6 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x1, value=0x1) + Op.STOP, + balance=23, + nonce=0, + address=Address(0xC93C7A588B13699E562B3933E8F2B1C15E610781), # noqa: E501 + ) + # Source: lll # { (CALL 40000 0 0 0 0 0) (MSTORE 1 1) } # noqa: E501 addr_3 = pre.deploy_contract( # noqa: F841 code=Op.POP( @@ -143,16 +158,6 @@ def test_static_call_basic( address=Address(0xEB015F637A39C63F8B6DB67505F5C02C613DEFC1), # noqa: E501 ) # Source: lll - # { (LOG0 1 10) (MSTORE 1 1) } - addr_4 = pre.deploy_contract( # noqa: F841 - code=Op.LOG0(offset=0x1, size=0xA) - + Op.MSTORE(offset=0x1, value=0x1) - + Op.STOP, - balance=23, - nonce=0, - address=Address(0x2E0DD8ABE4E68C5B602F3C65051F4B30C6D018DA), # noqa: E501 - ) - # Source: lll # { (CALLCODE 40000 1 0 0 0 0) (MSTORE 1 1) } # noqa: E501 addr_5 = pre.deploy_contract( # noqa: F841 code=Op.POP( @@ -172,15 +177,6 @@ def test_static_call_basic( nonce=0, address=Address(0xD5B64FA2CA1E471B45B639A5E9C259CA24C28ACE), # noqa: E501 ) - # Source: lll - # { (MSTORE 1 1) } - addr_6 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x1, value=0x1) + Op.STOP, - balance=23, - nonce=0, - address=Address(0xC93C7A588B13699E562B3933E8F2B1C15E610781), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stStaticCall/test_static_call_change_revert.py b/tests/ported_static/stStaticCall/test_static_call_change_revert.py index 1aa56589b9b..2d6b7295118 100644 --- a/tests/ported_static/stStaticCall/test_static_call_change_revert.py +++ b/tests/ported_static/stStaticCall/test_static_call_change_revert.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -65,9 +64,7 @@ def test_static_call_change_revert( ) -> None: """Test_static_call_change_revert.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -96,6 +93,22 @@ def test_static_call_change_revert( address=Address(0x492BB18ADCE7DA2BED3592742FB4E3DF9086FB4C), # noqa: E501 ) # Source: lll + # { (MSTORE 1 1) } + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x1, value=0x1) + Op.STOP, + nonce=0, + address=Address(0xC031FC0AA7B61A5D7D962AFEE8838DEC6948ABB7), # noqa: E501 + ) + # Source: lll + # { (MSTORE 1 1) (SSTORE 1 (SLOAD 1)) } + addr_5 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x1, value=0x1) + + Op.SSTORE(key=0x1, value=Op.SLOAD(key=0x1)) + + Op.STOP, + nonce=0, + address=Address(0x47C4ED3D93429CB8304737E2327B522E8928C9F3), # noqa: E501 + ) + # Source: lll # { [[ 0 ]] (CALL 100000 1 0 0 0 0) [[ 1 ]] (STATICCALL 100000 0 0 0 0) [[ 2 ]] (CALL 100000 1 0 0 0 0) } # noqa: E501 addr = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( @@ -139,13 +152,6 @@ def test_static_call_change_revert( address=Address(0xE6F1FDAA1C99007971C641E10AF3A8FAC0B641C8), # noqa: E501 ) # Source: lll - # { (MSTORE 1 1) } - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x1, value=0x1) + Op.STOP, - nonce=0, - address=Address(0xC031FC0AA7B61A5D7D962AFEE8838DEC6948ABB7), # noqa: E501 - ) - # Source: lll # { [[ 0 ]] (CALL 100000 1 0 0 0 0) [[ 1 ]] (STATICCALL 100000 0 0 0 0) [[ 2 ]] (CALL 100000 1 0 0 0 0) (def 'i 0x80) (for {} (< @i 50000) [i](+ @i 1) (EXTCODESIZE 1)) } # noqa: E501 addr_3 = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( @@ -239,16 +245,6 @@ def test_static_call_change_revert( nonce=0, address=Address(0x2C004389EDAAE817E664B6D660F46735756B56D3), # noqa: E501 ) - # Source: lll - # { (MSTORE 1 1) (SSTORE 1 (SLOAD 1)) } - addr_5 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x1, value=0x1) - + Op.SSTORE(key=0x1, value=Op.SLOAD(key=0x1)) - + Op.STOP, - nonce=0, - address=Address(0x47C4ED3D93429CB8304737E2327B522E8928C9F3), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stStaticCall/test_static_call_contract_to_create_contract_and_call_it_oog.py b/tests/ported_static/stStaticCall/test_static_call_contract_to_create_contract_and_call_it_oog.py index 6710604ac0c..e6b7b771be7 100644 --- a/tests/ported_static/stStaticCall/test_static_call_contract_to_create_contract_and_call_it_oog.py +++ b/tests/ported_static/stStaticCall/test_static_call_contract_to_create_contract_and_call_it_oog.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -63,9 +62,7 @@ def test_static_call_contract_to_create_contract_and_call_it_oog( """Test_static_call_contract_to_create_contract_and_call_it_oog.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) contract_0 = Address(0x095E7BAEA6A6C7C4C2DFEB977EFAC326AF552D87) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0x5F5E100) env = Environment( fee_recipient=coinbase, @@ -104,7 +101,6 @@ def test_static_call_contract_to_create_contract_and_call_it_oog( nonce=0, address=Address(0x095E7BAEA6A6C7C4C2DFEB977EFAC326AF552D87), # noqa: E501 ) - pre[sender] = Account(balance=0x5F5E100) expect_entries_: list[dict] = [ { @@ -112,7 +108,9 @@ def test_static_call_contract_to_create_contract_and_call_it_oog( "network": [">=Cancun"], "result": { contract_0: Account( - storage={0: 0xD2571607E241ECF590ED94B12D87C94BABE36DB6}, + storage={ + 0: compute_create_address(address=contract_0, nonce=0), + }, nonce=1, ), sender: Account(nonce=1), diff --git a/tests/ported_static/stStaticCall/test_static_call_contract_to_create_contract_oog.py b/tests/ported_static/stStaticCall/test_static_call_contract_to_create_contract_oog.py index b389aa587f1..cdf25c71569 100644 --- a/tests/ported_static/stStaticCall/test_static_call_contract_to_create_contract_oog.py +++ b/tests/ported_static/stStaticCall/test_static_call_contract_to_create_contract_oog.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -15,6 +14,7 @@ Environment, StateTestFiller, Transaction, + compute_create_address, ) from execution_testing.forks import Fork from execution_testing.specs.static_state.expect_section import ( @@ -62,9 +62,7 @@ def test_static_call_contract_to_create_contract_oog( """Test_static_call_contract_to_create_contract_oog.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) contract_0 = Address(0x095E7BAEA6A6C7C4C2DFEB977EFAC326AF552D87) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0x2540BE400) env = Environment( fee_recipient=coinbase, @@ -94,7 +92,6 @@ def test_static_call_contract_to_create_contract_oog( nonce=0, address=Address(0x095E7BAEA6A6C7C4C2DFEB977EFAC326AF552D87), # noqa: E501 ) - pre[sender] = Account(balance=0x2540BE400) expect_entries_: list[dict] = [ { @@ -110,7 +107,9 @@ def test_static_call_contract_to_create_contract_oog( "network": [">=Cancun"], "result": { contract_0: Account( - storage={0: 0xD2571607E241ECF590ED94B12D87C94BABE36DB6}, + storage={ + 0: compute_create_address(address=contract_0, nonce=0), + }, nonce=1, ), sender: Account(nonce=1), diff --git a/tests/ported_static/stStaticCall/test_static_call_contract_to_create_contract_oog_bonus_gas.py b/tests/ported_static/stStaticCall/test_static_call_contract_to_create_contract_oog_bonus_gas.py index 54d37a49a9f..33baff843c7 100644 --- a/tests/ported_static/stStaticCall/test_static_call_contract_to_create_contract_oog_bonus_gas.py +++ b/tests/ported_static/stStaticCall/test_static_call_contract_to_create_contract_oog_bonus_gas.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -64,9 +63,7 @@ def test_static_call_contract_to_create_contract_oog_bonus_gas( """Gas analysis showed this test's gas can go as low as 101174, and...""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) contract_0 = Address(0x095E7BAEA6A6C7C4C2DFEB977EFAC326AF552D87) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0x2540BE400) env = Environment( fee_recipient=coinbase, @@ -100,7 +97,6 @@ def test_static_call_contract_to_create_contract_oog_bonus_gas( nonce=0, address=Address(0x095E7BAEA6A6C7C4C2DFEB977EFAC326AF552D87), # noqa: E501 ) - pre[sender] = Account(balance=0x2540BE400) expect_entries_: list[dict] = [ { @@ -108,7 +104,9 @@ def test_static_call_contract_to_create_contract_oog_bonus_gas( "network": [">=Cancun None: """Test_static_call_create.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -104,6 +101,14 @@ def test_static_call_create( address=Address(0xE49F04B30026F23E9E04493C44ECE7CFEC9224CA), # noqa: E501 ) # Source: lll + # { (CREATE 0 1 1) } + addr_4 = pre.deploy_contract( # noqa: F841 + code=Op.CREATE(value=0x0, offset=0x1, size=0x1) + Op.STOP, + balance=0xDE0B6B3A7640000, + nonce=0, + address=Address(0x29D4D72A31D1B141B2067D1D4193BDF12FCDDC41), # noqa: E501 + ) + # Source: lll # { (CALL 150000 0 0 0 0 0) } # noqa: E501 addr = pre.deploy_contract( # noqa: F841 code=Op.CALL( @@ -152,15 +157,6 @@ def test_static_call_create( nonce=0, address=Address(0xF9ECFE0635FEFB5AD44418F97D7FCAF210EBD5AA), # noqa: E501 ) - # Source: lll - # { (CREATE 0 1 1) } - addr_4 = pre.deploy_contract( # noqa: F841 - code=Op.CREATE(value=0x0, offset=0x1, size=0x1) + Op.STOP, - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0x29D4D72A31D1B141B2067D1D4193BDF12FCDDC41), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stStaticCall/test_static_call_create2.py b/tests/ported_static/stStaticCall/test_static_call_create2.py index 54c33b8d0a8..98394b0847c 100644 --- a/tests/ported_static/stStaticCall/test_static_call_create2.py +++ b/tests/ported_static/stStaticCall/test_static_call_create2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -70,9 +69,7 @@ def test_static_call_create2( contract_1 = Address(0x1000000000000000000000000000000000000000) contract_2 = Address(0x1000000000000000000000000000000000000001) contract_3 = Address(0x1000000000000000000000000000000000000002) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -172,7 +169,6 @@ def test_static_call_create2( nonce=0, address=Address(0x1000000000000000000000000000000000000002), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) expect_entries_: list[dict] = [ { @@ -181,7 +177,7 @@ def test_static_call_create2( "result": { contract_1: Account( storage={ - 0: 0x13136008B64FF592819B2FA6D43F2835C452020E, + 0: compute_create_address(address=contract_1, nonce=0), 1: 1, }, ), @@ -193,7 +189,7 @@ def test_static_call_create2( "result": { contract_2: Account( storage={ - 0: 0x5DDDFCE53EE040D9EB21AFBC0AE1BB4DBB0BA643, + 0: compute_create_address(address=contract_2, nonce=0), 1: 0, }, ), diff --git a/tests/ported_static/stStaticCall/test_static_call_create3.py b/tests/ported_static/stStaticCall/test_static_call_create3.py index 44f5ac81bc3..9df3d855c26 100644 --- a/tests/ported_static/stStaticCall/test_static_call_create3.py +++ b/tests/ported_static/stStaticCall/test_static_call_create3.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -15,6 +14,7 @@ Hash, StateTestFiller, Transaction, + compute_create_address, ) from execution_testing.vm import Op @@ -36,9 +36,7 @@ def test_static_call_create3( coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) contract_0 = Address(0xA000000000000000000000000000000000000000) contract_1 = Address(0x1000000000000000000000000000000000000000) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -90,7 +88,6 @@ def test_static_call_create3( nonce=0, address=Address(0x1000000000000000000000000000000000000000), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, @@ -103,7 +100,7 @@ def test_static_call_create3( post = { contract_1: Account( storage={ - 0: 0x13136008B64FF592819B2FA6D43F2835C452020E, + 0: compute_create_address(address=contract_1, nonce=0), 1: 1, 2: 1, }, diff --git a/tests/ported_static/stStaticCall/test_static_call_ecrecover0.py b/tests/ported_static/stStaticCall/test_static_call_ecrecover0.py index 402741a5515..5ee180c5ce7 100644 --- a/tests/ported_static/stStaticCall/test_static_call_ecrecover0.py +++ b/tests/ported_static/stStaticCall/test_static_call_ecrecover0.py @@ -48,6 +48,7 @@ def test_static_call_ecrecover0( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { (MSTORE 0 0x18c547e4f7b0f325ad1e56f57e26c745b09a3e503d86e00e5255ff7f715d3d1c) (MSTORE 32 28) (MSTORE 64 0x73b1693892219d736caba55bdb67216e485557ea6b6af75f37096c9aa6a5a75f) (MSTORE 96 0xeeb940b1d03b21e36b0e47e79769f095fe2ab855bd91e3a38756b7d75a9c4549) [[ 2 ]] (STATICCALL 300000 1 0 128 128 32) [[ 0 ]] (MOD (MLOAD 128) (EXP 2 160)) [[ 1 ]] (EQ (ORIGIN) (SLOAD 0)) } # noqa: E501 contract_0 = pre.deploy_contract( # noqa: F841 @@ -84,7 +85,6 @@ def test_static_call_ecrecover0( nonce=0, address=Address(0x095E7BAEA6A6C7C4C2DFEB977EFAC326AF552D87), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, @@ -94,14 +94,6 @@ def test_static_call_ecrecover0( value=0x186A0, ) - post = { - contract_0: Account( - storage={ - 0: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, - 1: 1, - 2: 1, - }, - ), - } + post = {contract_0: Account(storage={0: sender, 1: 1, 2: 1})} state_test(env=env, pre=pre, post=post, tx=tx) diff --git a/tests/ported_static/stStaticCall/test_static_call_ecrecover0_0input.py b/tests/ported_static/stStaticCall/test_static_call_ecrecover0_0input.py index 08e2b13a797..3e8f4614d9f 100644 --- a/tests/ported_static/stStaticCall/test_static_call_ecrecover0_0input.py +++ b/tests/ported_static/stStaticCall/test_static_call_ecrecover0_0input.py @@ -114,6 +114,7 @@ def test_static_call_ecrecover0_0input( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { [[ 2 ]] (STATICCALL 300000 (CALLDATALOAD 0) 0 128 128 32) [[ 0 ]] (MOD (MLOAD 128) (EXP 2 160)) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -136,7 +137,6 @@ def test_static_call_ecrecover0_0input( nonce=0, address=Address(0x1FD04A51AC69C94C58521D30E2DEFC4856A581B0), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stStaticCall/test_static_call_ecrecover0_complete_return_value.py b/tests/ported_static/stStaticCall/test_static_call_ecrecover0_complete_return_value.py index da95498db9e..15059991aec 100644 --- a/tests/ported_static/stStaticCall/test_static_call_ecrecover0_complete_return_value.py +++ b/tests/ported_static/stStaticCall/test_static_call_ecrecover0_complete_return_value.py @@ -50,6 +50,7 @@ def test_static_call_ecrecover0_complete_return_value( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { (MSTORE 0 0x18c547e4f7b0f325ad1e56f57e26c745b09a3e503d86e00e5255ff7f715d3d1c) (MSTORE 32 28) (MSTORE 64 0x73b1693892219d736caba55bdb67216e485557ea6b6af75f37096c9aa6a5a75f) (MSTORE 96 0xeeb940b1d03b21e36b0e47e79769f095fe2ab855bd91e3a38756b7d75a9c4549) [[ 2 ]] (STATICCALL 13000 1 0 128 128 32) [[ 0 ]] (MLOAD 128) } # noqa: E501 contract_0 = pre.deploy_contract( # noqa: F841 @@ -83,7 +84,6 @@ def test_static_call_ecrecover0_complete_return_value( nonce=0, address=Address(0x095E7BAEA6A6C7C4C2DFEB977EFAC326AF552D87), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, @@ -93,13 +93,6 @@ def test_static_call_ecrecover0_complete_return_value( value=0x186A0, ) - post = { - contract_0: Account( - storage={ - 0: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, - 2: 1, - }, - ), - } + post = {contract_0: Account(storage={0: sender, 2: 1})} state_test(env=env, pre=pre, post=post, tx=tx) diff --git a/tests/ported_static/stStaticCall/test_static_call_ecrecover0_gas2999.py b/tests/ported_static/stStaticCall/test_static_call_ecrecover0_gas2999.py index 512e421fd88..ce7ceef21ed 100644 --- a/tests/ported_static/stStaticCall/test_static_call_ecrecover0_gas2999.py +++ b/tests/ported_static/stStaticCall/test_static_call_ecrecover0_gas2999.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,9 +33,7 @@ def test_static_call_ecrecover0_gas2999( ) -> None: """Test_static_call_ecrecover0_gas2999.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -81,9 +78,7 @@ def test_static_call_ecrecover0_gas2999( + Op.STOP, balance=0x1312D00, nonce=0, - address=Address(0xA2C5B42CEEF52ED9FAD58B7C78F1A9FDE7241247), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_call_ecrecover0_gas3000.py b/tests/ported_static/stStaticCall/test_static_call_ecrecover0_gas3000.py index bfca4018811..c95af7ecce3 100644 --- a/tests/ported_static/stStaticCall/test_static_call_ecrecover0_gas3000.py +++ b/tests/ported_static/stStaticCall/test_static_call_ecrecover0_gas3000.py @@ -48,6 +48,7 @@ def test_static_call_ecrecover0_gas3000( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { (MSTORE 0 0x18c547e4f7b0f325ad1e56f57e26c745b09a3e503d86e00e5255ff7f715d3d1c) (MSTORE 32 28) (MSTORE 64 0x73b1693892219d736caba55bdb67216e485557ea6b6af75f37096c9aa6a5a75f) (MSTORE 96 0xeeb940b1d03b21e36b0e47e79769f095fe2ab855bd91e3a38756b7d75a9c4549) [[ 2 ]] (STATICCALL 3000 1 0 128 128 32) [[ 0 ]] (MOD (MLOAD 128) (EXP 2 160)) [[ 1 ]] (EQ (ORIGIN) (SLOAD 0)) } # noqa: E501 contract_0 = pre.deploy_contract( # noqa: F841 @@ -84,7 +85,6 @@ def test_static_call_ecrecover0_gas3000( nonce=0, address=Address(0x095E7BAEA6A6C7C4C2DFEB977EFAC326AF552D87), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, @@ -94,14 +94,6 @@ def test_static_call_ecrecover0_gas3000( value=0x186A0, ) - post = { - contract_0: Account( - storage={ - 0: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, - 1: 1, - 2: 1, - }, - ), - } + post = {contract_0: Account(storage={0: sender, 1: 1, 2: 1})} state_test(env=env, pre=pre, post=post, tx=tx) diff --git a/tests/ported_static/stStaticCall/test_static_call_ecrecover0_no_gas.py b/tests/ported_static/stStaticCall/test_static_call_ecrecover0_no_gas.py index 674c360d8f5..9857b5cc971 100644 --- a/tests/ported_static/stStaticCall/test_static_call_ecrecover0_no_gas.py +++ b/tests/ported_static/stStaticCall/test_static_call_ecrecover0_no_gas.py @@ -7,8 +7,6 @@ import pytest from execution_testing import ( - EOA, - Account, Address, Alloc, Bytes, @@ -34,9 +32,7 @@ def test_static_call_ecrecover0_no_gas( ) -> None: """Test_static_call_ecrecover0_no_gas.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -81,9 +77,7 @@ def test_static_call_ecrecover0_no_gas( + Op.STOP, balance=0x1312D00, nonce=0, - address=Address(0x6231F5F50790A293B60749CF936C2F442D692BB4), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_call_ecrecover0_overlapping_input_output.py b/tests/ported_static/stStaticCall/test_static_call_ecrecover0_overlapping_input_output.py index 58be186c704..b1c2bb72d51 100644 --- a/tests/ported_static/stStaticCall/test_static_call_ecrecover0_overlapping_input_output.py +++ b/tests/ported_static/stStaticCall/test_static_call_ecrecover0_overlapping_input_output.py @@ -50,6 +50,7 @@ def test_static_call_ecrecover0_overlapping_input_output( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { (MSTORE 0 0x18c547e4f7b0f325ad1e56f57e26c745b09a3e503d86e00e5255ff7f715d3d1c) (MSTORE 32 28) (MSTORE 64 0x73b1693892219d736caba55bdb67216e485557ea6b6af75f37096c9aa6a5a75f) (MSTORE 96 0xeeb940b1d03b21e36b0e47e79769f095fe2ab855bd91e3a38756b7d75a9c4549) [[ 2 ]] (STATICCALL 300000 1 0 128 64 32) [[ 0 ]] (MOD (MLOAD 64) (EXP 2 160)) [[ 1 ]] (EQ (ORIGIN) (SLOAD 0)) } # noqa: E501 contract_0 = pre.deploy_contract( # noqa: F841 @@ -86,7 +87,6 @@ def test_static_call_ecrecover0_overlapping_input_output( nonce=0, address=Address(0x095E7BAEA6A6C7C4C2DFEB977EFAC326AF552D87), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, @@ -96,14 +96,6 @@ def test_static_call_ecrecover0_overlapping_input_output( value=0x186A0, ) - post = { - contract_0: Account( - storage={ - 0: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, - 1: 1, - 2: 1, - }, - ), - } + post = {contract_0: Account(storage={0: sender, 1: 1, 2: 1})} state_test(env=env, pre=pre, post=post, tx=tx) diff --git a/tests/ported_static/stStaticCall/test_static_call_ecrecover1.py b/tests/ported_static/stStaticCall/test_static_call_ecrecover1.py index 7651d0d4548..c6844562034 100644 --- a/tests/ported_static/stStaticCall/test_static_call_ecrecover1.py +++ b/tests/ported_static/stStaticCall/test_static_call_ecrecover1.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,9 +33,7 @@ def test_static_call_ecrecover1( ) -> None: """Test_static_call_ecrecover1.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -81,9 +78,7 @@ def test_static_call_ecrecover1( + Op.STOP, balance=0x1312D00, nonce=0, - address=Address(0x618120F7C175E20B183ADDD8859095183359B357), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_call_ecrecover2.py b/tests/ported_static/stStaticCall/test_static_call_ecrecover2.py index 6c8479c30b7..29c1943b26d 100644 --- a/tests/ported_static/stStaticCall/test_static_call_ecrecover2.py +++ b/tests/ported_static/stStaticCall/test_static_call_ecrecover2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,9 +33,7 @@ def test_static_call_ecrecover2( ) -> None: """Test_static_call_ecrecover2.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -81,9 +78,7 @@ def test_static_call_ecrecover2( + Op.STOP, balance=0x1312D00, nonce=0, - address=Address(0x77C4DEDD873BB751217A744A41CCC43A37E0859E), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_call_ecrecover3.py b/tests/ported_static/stStaticCall/test_static_call_ecrecover3.py index dd6afae45f5..eb69f789789 100644 --- a/tests/ported_static/stStaticCall/test_static_call_ecrecover3.py +++ b/tests/ported_static/stStaticCall/test_static_call_ecrecover3.py @@ -47,6 +47,7 @@ def test_static_call_ecrecover3( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { (MSTORE 0 0x2f380a2dea7e778d81affc2443403b8fe4644db442ae4862ff5bb3732829cdb9) (MSTORE 32 27) (MSTORE 64 0x6b65ccb0558806e9b097f27a396d08f964e37b8b7af6ceeb516ff86739fbea0a) (MSTORE 96 0x37cbc8d883e129a4b1ef9d5f1df53c4f21a3ef147cf2a50a4ede0eb06ce092d4) [[ 2 ]] (STATICCALL 100000 1 0 128 128 32) [[ 0 ]] (MOD (MLOAD 128) (EXP 2 160)) [[ 1 ]] (EQ (ORIGIN) (SLOAD 0)) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -83,7 +84,6 @@ def test_static_call_ecrecover3( nonce=0, address=Address(0xC2F38613F26B4B1C6DE179462718C7E67C175419), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_call_ecrecover80.py b/tests/ported_static/stStaticCall/test_static_call_ecrecover80.py index 88caa192658..28cd2eeb1d2 100644 --- a/tests/ported_static/stStaticCall/test_static_call_ecrecover80.py +++ b/tests/ported_static/stStaticCall/test_static_call_ecrecover80.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,9 +33,7 @@ def test_static_call_ecrecover80( ) -> None: """Test_static_call_ecrecover80.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -81,9 +78,7 @@ def test_static_call_ecrecover80( + Op.STOP, balance=0x1312D00, nonce=0, - address=Address(0xB04D781B56FBA0546D9C9FD33C9FB623908D49D2), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_call_ecrecover_check_length.py b/tests/ported_static/stStaticCall/test_static_call_ecrecover_check_length.py index 57d6e56cfed..9a13e86548e 100644 --- a/tests/ported_static/stStaticCall/test_static_call_ecrecover_check_length.py +++ b/tests/ported_static/stStaticCall/test_static_call_ecrecover_check_length.py @@ -48,6 +48,7 @@ def test_static_call_ecrecover_check_length( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { (MSTORE 128 0x1122334455667788990011223344556677889900112233445566778899001122) (MSTORE 0 0x18c547e4f7b0f325ad1e56f57e26c745b09a3e503d86e00e5255ff7f715d3d1c) (MSTORE 32 28) (MSTORE 64 0x73b1693892219d736caba55bdb67216e485557ea6b6af75f37096c9aa6a5a75f) (MSTORE 96 0xeeb940b1d03b21e36b0e47e79769f095fe2ab855bd91e3a38756b7d75a9c4549) [[ 2 ]] (STATICCALL 300000 1 0 128 128 32) [[ 0 ]] (MLOAD 128) [[ 1 ]] (MSIZE) } # noqa: E501 contract_0 = pre.deploy_contract( # noqa: F841 @@ -86,7 +87,6 @@ def test_static_call_ecrecover_check_length( nonce=0, address=Address(0x095E7BAEA6A6C7C4C2DFEB977EFAC326AF552D87), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, @@ -96,14 +96,6 @@ def test_static_call_ecrecover_check_length( value=0x186A0, ) - post = { - contract_0: Account( - storage={ - 0: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, - 1: 160, - 2: 1, - }, - ), - } + post = {contract_0: Account(storage={0: sender, 1: 160, 2: 1})} state_test(env=env, pre=pre, post=post, tx=tx) diff --git a/tests/ported_static/stStaticCall/test_static_call_ecrecover_check_length_wrong_v.py b/tests/ported_static/stStaticCall/test_static_call_ecrecover_check_length_wrong_v.py index d3acf5ef081..08b06436b82 100644 --- a/tests/ported_static/stStaticCall/test_static_call_ecrecover_check_length_wrong_v.py +++ b/tests/ported_static/stStaticCall/test_static_call_ecrecover_check_length_wrong_v.py @@ -49,6 +49,7 @@ def test_static_call_ecrecover_check_length_wrong_v( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { (MSTORE 128 0x1122334455667788990011223344556677889900112233445566778899001122) (MSTORE 0 0x18c547e4f7b0f325ad1e56f57e26c745b09a3e503d86e00e5255ff7f715d3d1c) (MSTORE 32 29) (MSTORE 64 0x73b1693892219d736caba55bdb67216e485557ea6b6af75f37096c9aa6a5a75f) (MSTORE 96 0xeeb940b1d03b21e36b0e47e79769f095fe2ab855bd91e3a38756b7d75a9c4549) [[ 2 ]] (STATICCALL 300000 1 0 128 128 32) [[ 0 ]] (MLOAD 128) [[ 1 ]] (MSIZE) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -87,7 +88,6 @@ def test_static_call_ecrecover_check_length_wrong_v( nonce=0, address=Address(0x41F7EE7D96703A0F8BD1BF92288996596CA85BD6), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_call_ecrecover_h_prefixed0.py b/tests/ported_static/stStaticCall/test_static_call_ecrecover_h_prefixed0.py index ea35f8768dc..be4fc0ca392 100644 --- a/tests/ported_static/stStaticCall/test_static_call_ecrecover_h_prefixed0.py +++ b/tests/ported_static/stStaticCall/test_static_call_ecrecover_h_prefixed0.py @@ -47,6 +47,7 @@ def test_static_call_ecrecover_h_prefixed0( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { (MSTORE 0 0x00c547e4f7b0f325ad1e56f57e26c745b09a3e503d86e00e5255ff7f715d3d1c) (MSTORE 32 28) (MSTORE 64 0x73b1693892219d736caba55bdb67216e485557ea6b6af75f37096c9aa6a5a75f) (MSTORE 96 0xeeb940b1d03b21e36b0e47e79769f095fe2ab855bd91e3a38756b7d75a9c4549) [[ 2 ]] (STATICCALL 300000 1 0 128 128 32) [[ 0 ]] (MOD (MLOAD 128) (EXP 2 160)) [[ 1 ]] (EQ (ORIGIN) (SLOAD 0)) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -83,7 +84,6 @@ def test_static_call_ecrecover_h_prefixed0( nonce=0, address=Address(0xEEAA46C8D2B439BCCC8BA7B735F1F68564C75801), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_call_ecrecover_r_prefixed0.py b/tests/ported_static/stStaticCall/test_static_call_ecrecover_r_prefixed0.py index c543ae7ba01..7fd5e2936e9 100644 --- a/tests/ported_static/stStaticCall/test_static_call_ecrecover_r_prefixed0.py +++ b/tests/ported_static/stStaticCall/test_static_call_ecrecover_r_prefixed0.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,9 +33,7 @@ def test_static_call_ecrecover_r_prefixed0( ) -> None: """Test_static_call_ecrecover_r_prefixed0.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -81,9 +78,7 @@ def test_static_call_ecrecover_r_prefixed0( + Op.STOP, balance=0x1312D00, nonce=0, - address=Address(0x2E063E550F3F9751EF9EB0DA5E2B392C3ECE8E6E), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_call_ecrecover_s_prefixed0.py b/tests/ported_static/stStaticCall/test_static_call_ecrecover_s_prefixed0.py index 15ef873cde3..afba19f8745 100644 --- a/tests/ported_static/stStaticCall/test_static_call_ecrecover_s_prefixed0.py +++ b/tests/ported_static/stStaticCall/test_static_call_ecrecover_s_prefixed0.py @@ -47,6 +47,7 @@ def test_static_call_ecrecover_s_prefixed0( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { (MSTORE 0 0x18c547e4f7b0f325ad1e56f57e26c745b09a3e503d86e00e5255ff7f715d3d1c) (MSTORE 32 28) (MSTORE 64 0x73b1693892219d736caba55bdb67216e485557ea6b6af75f37096c9aa6a5a75f) (MSTORE 96 0x00b940b1d03b21e36b0e47e79769f095fe2ab855bd91e3a38756b7d75a9c4549) [[ 2 ]] (STATICCALL 300000 1 0 128 128 32) [[ 0 ]] (MOD (MLOAD 128) (EXP 2 160)) [[ 1 ]] (EQ (ORIGIN) (SLOAD 0)) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -83,7 +84,6 @@ def test_static_call_ecrecover_s_prefixed0( nonce=0, address=Address(0x200ECC0698B28EF50EE8BF150B2D7A87ED969482), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_call_ecrecover_v_prefixed0.py b/tests/ported_static/stStaticCall/test_static_call_ecrecover_v_prefixed0.py index 4330ce2f807..cd0496d97af 100644 --- a/tests/ported_static/stStaticCall/test_static_call_ecrecover_v_prefixed0.py +++ b/tests/ported_static/stStaticCall/test_static_call_ecrecover_v_prefixed0.py @@ -48,6 +48,7 @@ def test_static_call_ecrecover_v_prefixed0( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { (MSTORE 0 0x18c547e4f7b0f325ad1e56f57e26c745b09a3e503d86e00e5255ff7f715d3d1c) (MSTORE 32 0x001c) (MSTORE 64 0x73b1693892219d736caba55bdb67216e485557ea6b6af75f37096c9aa6a5a75f) (MSTORE 96 0xeeb940b1d03b21e36b0e47e79769f095fe2ab855bd91e3a38756b7d75a9c4549) [[ 2 ]] (STATICCALL 300000 1 0 128 128 32) [[ 0 ]] (MOD (MLOAD 128) (EXP 2 160)) [[ 1 ]] (EQ (ORIGIN) (SLOAD 0)) } # noqa: E501 contract_0 = pre.deploy_contract( # noqa: F841 @@ -84,7 +85,6 @@ def test_static_call_ecrecover_v_prefixed0( nonce=0, address=Address(0x095E7BAEA6A6C7C4C2DFEB977EFAC326AF552D87), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, @@ -94,14 +94,6 @@ def test_static_call_ecrecover_v_prefixed0( value=0x186A0, ) - post = { - contract_0: Account( - storage={ - 0: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, - 1: 1, - 2: 1, - }, - ), - } + post = {contract_0: Account(storage={0: sender, 1: 1, 2: 1})} state_test(env=env, pre=pre, post=post, tx=tx) diff --git a/tests/ported_static/stStaticCall/test_static_call_goes_oog_on_second_level.py b/tests/ported_static/stStaticCall/test_static_call_goes_oog_on_second_level.py index 67c548c3359..c9bfd6ecd1b 100644 --- a/tests/ported_static/stStaticCall/test_static_call_goes_oog_on_second_level.py +++ b/tests/ported_static/stStaticCall/test_static_call_goes_oog_on_second_level.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,9 +33,7 @@ def test_static_call_goes_oog_on_second_level( ) -> None: """Test_static_call_goes_oog_on_second_level.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x4F31B3206FBF0E0E598B9B1A7D8AC86302A0FF1D8930738F1BEBAE9B67173E52 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -47,51 +44,47 @@ def test_static_call_goes_oog_on_second_level( gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) # Source: lll - # { (SSTORE 9 (STATICCALL 600000 0 0 0 0)) [[ 10 ]] (GAS) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x9, + # { (KECCAK256 0x00 0x2fffff) } + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.SHA3(offset=0x0, size=0x2FFFFF) + Op.STOP, + nonce=0, + ) + # Source: lll + # { (MSTORE 8 (GAS)) (MSTORE 9 (STATICCALL 600000 0 0 0 0)) } # noqa: E501 + addr = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x8, value=Op.GAS) + + Op.MSTORE( + offset=0x9, value=Op.STATICCALL( gas=0x927C0, - address=0xA1202B00F0CB8ACDD112E4FC87899F33572541C6, + address=addr_2, args_offset=0x0, args_size=0x0, ret_offset=0x0, ret_size=0x0, ), ) - + Op.SSTORE(key=0xA, value=Op.GAS) + Op.STOP, nonce=0, - address=Address(0x6A2A170A903E470C3DD8BFD7974C77020C5FD8F9), # noqa: E501 ) # Source: lll - # { (MSTORE 8 (GAS)) (MSTORE 9 (STATICCALL 600000 0 0 0 0)) } # noqa: E501 - addr = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x8, value=Op.GAS) - + Op.MSTORE( - offset=0x9, + # { (SSTORE 9 (STATICCALL 600000 0 0 0 0)) [[ 10 ]] (GAS) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x9, value=Op.STATICCALL( gas=0x927C0, - address=0x44969261D9660FCC1A2E03DB83BA372EBF5F652D, + address=addr, args_offset=0x0, args_size=0x0, ret_offset=0x0, ret_size=0x0, ), ) + + Op.SSTORE(key=0xA, value=Op.GAS) + Op.STOP, nonce=0, - address=Address(0xA1202B00F0CB8ACDD112E4FC87899F33572541C6), # noqa: E501 - ) - # Source: lll - # { (KECCAK256 0x00 0x2fffff) } - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.SHA3(offset=0x0, size=0x2FFFFF) + Op.STOP, - nonce=0, - address=Address(0x44969261D9660FCC1A2E03DB83BA372EBF5F652D), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stStaticCall/test_static_call_goes_oog_on_second_level2.py b/tests/ported_static/stStaticCall/test_static_call_goes_oog_on_second_level2.py index a101aad3b73..62ed98b8dc7 100644 --- a/tests/ported_static/stStaticCall/test_static_call_goes_oog_on_second_level2.py +++ b/tests/ported_static/stStaticCall/test_static_call_goes_oog_on_second_level2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -56,9 +55,7 @@ def test_static_call_goes_oog_on_second_level2( ) -> None: """Test_static_call_goes_oog_on_second_level2.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x4F31B3206FBF0E0E598B9B1A7D8AC86302A0FF1D8930738F1BEBAE9B67173E52 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -69,27 +66,6 @@ def test_static_call_goes_oog_on_second_level2( gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) - # Source: lll - # { (MSTORE 0 (CALLDATALOAD 0)) [[ 0 ]] (STATICCALL 600000 0 32 0 0) [[ 1 ]] 1 } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x0, value=Op.CALLDATALOAD(offset=0x0)) - + Op.SSTORE( - key=0x0, - value=Op.STATICCALL( - gas=0x927C0, - address=0x666EBB8AFC7A9BA4BEDB7D78F85184B65639531D, - args_offset=0x0, - args_size=0x20, - ret_offset=0x0, - ret_size=0x0, - ), - ) - + Op.SSTORE(key=0x1, value=0x1) - + Op.STOP, - nonce=0, - address=Address(0xB9C1C6C39CB3E528B2EF06493C17D63B7827077B), # noqa: E501 - ) # Source: lll # { (MSTORE 8 (GAS)) (MSTORE 9 (STATICCALL 600000 (CALLDATALOAD 0) 0 0 0 0)) } # noqa: E501 addr = pre.deploy_contract( # noqa: F841 @@ -131,6 +107,26 @@ def test_static_call_goes_oog_on_second_level2( nonce=0, address=Address(0x45E70D14D712A8898DCE133FE063F71179F04059), # noqa: E501 ) + # Source: lll + # { (MSTORE 0 (CALLDATALOAD 0)) [[ 0 ]] (STATICCALL 600000 0 32 0 0) [[ 1 ]] 1 } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x0, value=Op.CALLDATALOAD(offset=0x0)) + + Op.SSTORE( + key=0x0, + value=Op.STATICCALL( + gas=0x927C0, + address=0x666EBB8AFC7A9BA4BEDB7D78F85184B65639531D, + args_offset=0x0, + args_size=0x20, + ret_offset=0x0, + ret_size=0x0, + ), + ) + + Op.SSTORE(key=0x1, value=0x1) + + Op.STOP, + nonce=0, + address=Address(0xB9C1C6C39CB3E528B2EF06493C17D63B7827077B), # noqa: E501 + ) tx_data = [ Hash(addr_2, left_padding=True), diff --git a/tests/ported_static/stStaticCall/test_static_call_identitiy_1.py b/tests/ported_static/stStaticCall/test_static_call_identitiy_1.py index d4cea15356c..69543edfe7d 100644 --- a/tests/ported_static/stStaticCall/test_static_call_identitiy_1.py +++ b/tests/ported_static/stStaticCall/test_static_call_identitiy_1.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,9 +33,7 @@ def test_static_call_identitiy_1( ) -> None: """Test_static_call_identitiy_1.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -65,9 +62,7 @@ def test_static_call_identitiy_1( + Op.STOP, balance=0x1312D00, nonce=0, - address=Address(0x93D25CE7C8AF6CACE03DCB393962CB32BA8D4F42), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_call_identity_1_nonzero_value.py b/tests/ported_static/stStaticCall/test_static_call_identity_1_nonzero_value.py index af26095d83c..3b572358cc7 100644 --- a/tests/ported_static/stStaticCall/test_static_call_identity_1_nonzero_value.py +++ b/tests/ported_static/stStaticCall/test_static_call_identity_1_nonzero_value.py @@ -47,6 +47,7 @@ def test_static_call_identity_1_nonzero_value( gas_limit=100000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { [[ 2 ]] (STATICCALL 200000 4 0 0 0 32) (CALL 50000 4 0x13 0 0 0 0) [[ 0 ]] (MLOAD 0)} # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -78,7 +79,6 @@ def test_static_call_identity_1_nonzero_value( nonce=0, address=Address(0x07F023A2418EB0DC955C465D7E5EF48189F005BE), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_call_identity_2.py b/tests/ported_static/stStaticCall/test_static_call_identity_2.py index 96ea610d598..31dce0ef656 100644 --- a/tests/ported_static/stStaticCall/test_static_call_identity_2.py +++ b/tests/ported_static/stStaticCall/test_static_call_identity_2.py @@ -47,6 +47,7 @@ def test_static_call_identity_2( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { (MSTORE 0 0xf34578907f) [[ 2 ]] (STATICCALL 500 4 0 37 0 32) [[ 0 ]] (MLOAD 0)} # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -68,7 +69,6 @@ def test_static_call_identity_2( nonce=0, address=Address(0xC23A3B84D36D8D9D3D045162C4C153465DE4816C), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_call_identity_3.py b/tests/ported_static/stStaticCall/test_static_call_identity_3.py index b186a4b22f9..57753b43a4b 100644 --- a/tests/ported_static/stStaticCall/test_static_call_identity_3.py +++ b/tests/ported_static/stStaticCall/test_static_call_identity_3.py @@ -47,6 +47,7 @@ def test_static_call_identity_3( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { (MSTORE 0 0xf34578907f) [[ 2 ]] (STATICCALL 500 4 0 37 0 32) [[ 0 ]] (MLOAD 0)} # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -68,7 +69,6 @@ def test_static_call_identity_3( nonce=0, address=Address(0xC23A3B84D36D8D9D3D045162C4C153465DE4816C), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_call_identity_4.py b/tests/ported_static/stStaticCall/test_static_call_identity_4.py index 75b52c55ce9..dd549863976 100644 --- a/tests/ported_static/stStaticCall/test_static_call_identity_4.py +++ b/tests/ported_static/stStaticCall/test_static_call_identity_4.py @@ -47,6 +47,7 @@ def test_static_call_identity_4( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { (MSTORE 0 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) [[ 2 ]] (STATICCALL 100 4 0 32 0 32) [[ 0 ]] (MLOAD 0)} # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -71,7 +72,6 @@ def test_static_call_identity_4( nonce=0, address=Address(0x1E23B8487DE5C16B372F0ABE69D7C9D57118DEFD), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_call_identity_4_gas17.py b/tests/ported_static/stStaticCall/test_static_call_identity_4_gas17.py index d7828e843e3..1cee3493e76 100644 --- a/tests/ported_static/stStaticCall/test_static_call_identity_4_gas17.py +++ b/tests/ported_static/stStaticCall/test_static_call_identity_4_gas17.py @@ -47,6 +47,7 @@ def test_static_call_identity_4_gas17( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { (MSTORE 0 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) [[ 2 ]] (STATICCALL 17 4 0 32 0 32) [[ 0 ]] (MLOAD 0)} # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -71,7 +72,6 @@ def test_static_call_identity_4_gas17( nonce=0, address=Address(0x23EF65623397A46F452ADA1DC7E9F974B028AD46), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_call_identity_4_gas18.py b/tests/ported_static/stStaticCall/test_static_call_identity_4_gas18.py index b9708a272c1..cc67adad4e3 100644 --- a/tests/ported_static/stStaticCall/test_static_call_identity_4_gas18.py +++ b/tests/ported_static/stStaticCall/test_static_call_identity_4_gas18.py @@ -47,6 +47,7 @@ def test_static_call_identity_4_gas18( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { (MSTORE 0 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) [[ 2 ]] (STATICCALL 18 4 0 32 0 32) [[ 0 ]] (MLOAD 0)} # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -71,7 +72,6 @@ def test_static_call_identity_4_gas18( nonce=0, address=Address(0x3B631E26EB9003C05E06782820DB8893B7C864DF), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_call_identity_5.py b/tests/ported_static/stStaticCall/test_static_call_identity_5.py index 12369f7713e..70b71f555ee 100644 --- a/tests/ported_static/stStaticCall/test_static_call_identity_5.py +++ b/tests/ported_static/stStaticCall/test_static_call_identity_5.py @@ -47,6 +47,7 @@ def test_static_call_identity_5( gas_limit=100000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { (MSTORE 0 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) [[ 2 ]] (STATICCALL 600 4 0 1000000 0 32) [[ 0 ]] (MLOAD 0)} # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -71,7 +72,6 @@ def test_static_call_identity_5( nonce=0, address=Address(0xE916A006634545DCD9A7DF166A5DA16ED90148B0), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_call_lose_gas_oog.py b/tests/ported_static/stStaticCall/test_static_call_lose_gas_oog.py index b0af0e1ee31..da74a333e31 100644 --- a/tests/ported_static/stStaticCall/test_static_call_lose_gas_oog.py +++ b/tests/ported_static/stStaticCall/test_static_call_lose_gas_oog.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,10 +33,7 @@ def test_static_call_lose_gas_oog( ) -> None: """Test_static_call_lose_gas_oog.""" coinbase = Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) - addr = Address(0xD9B97C712EBCE43F3C19179BBEF44B550F9E8BC0) - sender = EOA( - key=0xE7C72B378297589ACEE4E0BA3272841BCFC5E220F86DE253F890274CFEE9E474 - ) + sender = pre.fund_eoa(amount=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) env = Environment( fee_recipient=coinbase, @@ -48,8 +44,7 @@ def test_static_call_lose_gas_oog( gas_limit=9223372036854775807, ) - pre[sender] = Account(balance=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) - pre[addr] = Account(balance=7000) + addr = pre.fund_eoa(amount=7000) # noqa: F841 # Source: lll # { [[ 0 ]] (ADD @@0 1) [[ 1 ]] (STATICCALL (ADD 1(MUL @@0 100000)) 0 0 0 0) [[ 2 ]] (ADD 1(MUL @@0 1000)) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 diff --git a/tests/ported_static/stStaticCall/test_static_call_one_v_call_suicide.py b/tests/ported_static/stStaticCall/test_static_call_one_v_call_suicide.py index 33065232403..dbf7225d7e6 100644 --- a/tests/ported_static/stStaticCall/test_static_call_one_v_call_suicide.py +++ b/tests/ported_static/stStaticCall/test_static_call_one_v_call_suicide.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,9 +33,7 @@ def test_static_call_one_v_call_suicide( ) -> None: """Test_static_call_one_v_call_suicide.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x4F31B3206FBF0E0E598B9B1A7D8AC86302A0FF1D8930738F1BEBAE9B67173E52 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -47,7 +44,6 @@ def test_static_call_one_v_call_suicide( gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) # Source: lll # { [[1]](STATICCALL 60000 0 0 0 0) [[100]] 1 } # noqa: E501 target = pre.deploy_contract( # noqa: F841 diff --git a/tests/ported_static/stStaticCall/test_static_call_oog_additional_gas_costs1.py b/tests/ported_static/stStaticCall/test_static_call_oog_additional_gas_costs1.py index beaf18a288e..2d1f355c82b 100644 --- a/tests/ported_static/stStaticCall/test_static_call_oog_additional_gas_costs1.py +++ b/tests/ported_static/stStaticCall/test_static_call_oog_additional_gas_costs1.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -36,9 +35,7 @@ def test_static_call_oog_additional_gas_costs1( ) -> None: """Test_static_call_oog_additional_gas_costs1.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -67,9 +64,7 @@ def test_static_call_oog_additional_gas_costs1( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xE5625454DFC66A8DCC86F028C5F5AB384F2E8CC3), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_call_oog_additional_gas_costs2_paris.py b/tests/ported_static/stStaticCall/test_static_call_oog_additional_gas_costs2_paris.py index c801c9e79b2..82f93e20b98 100644 --- a/tests/ported_static/stStaticCall/test_static_call_oog_additional_gas_costs2_paris.py +++ b/tests/ported_static/stStaticCall/test_static_call_oog_additional_gas_costs2_paris.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -36,10 +35,7 @@ def test_static_call_oog_additional_gas_costs2_paris( ) -> None: """Test_static_call_oog_additional_gas_costs2_paris.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - addr = Address(0x76FAE819612A29489A1A43208613D8F8557B8898) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -50,6 +46,7 @@ def test_static_call_oog_additional_gas_costs2_paris( gas_limit=3000000000, ) + addr = pre.fund_eoa(amount=10) # noqa: F841 # Source: lll # { [[ 0 ]] (STATICCALL 6000 0 64 0 64 ) [[ 1 ]] (GAS) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -57,7 +54,7 @@ def test_static_call_oog_additional_gas_costs2_paris( key=0x0, value=Op.STATICCALL( gas=0x1770, - address=0x76FAE819612A29489A1A43208613D8F8557B8898, + address=addr, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -68,10 +65,7 @@ def test_static_call_oog_additional_gas_costs2_paris( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xB836BAD7C1AE4C13AC3CBEC9A4445EA8B80E3A31), # noqa: E501 ) - pre[addr] = Account(balance=10) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_call_output1.py b/tests/ported_static/stStaticCall/test_static_call_output1.py index df38cded9a3..eb4e4be0b7c 100644 --- a/tests/ported_static/stStaticCall/test_static_call_output1.py +++ b/tests/ported_static/stStaticCall/test_static_call_output1.py @@ -47,6 +47,15 @@ def test_static_call_output1( gas_limit=1000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: raw + # 0x6001600101600055 + addr = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x0, value=Op.ADD(0x1, 0x1)), + balance=0xDE0B6B3A7640000, + nonce=0, + address=Address(0xBCC1197CCD23A97607F2F96D031F3432E0D16A02), # noqa: E501 + ) # Source: lll # { (MSTORE 0 0x5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6) (STATICCALL 50000 0 0 0 0) [[ 0 ]] (MLOAD 0) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -57,7 +66,7 @@ def test_static_call_output1( + Op.POP( Op.STATICCALL( gas=0xC350, - address=0xBCC1197CCD23A97607F2F96D031F3432E0D16A02, + address=addr, args_offset=0x0, args_size=0x0, ret_offset=0x0, @@ -70,15 +79,6 @@ def test_static_call_output1( nonce=0, address=Address(0x9C450200C431343E91665596BD7F249469F3823A), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) - # Source: raw - # 0x6001600101600055 - addr = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x0, value=Op.ADD(0x1, 0x1)), - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0xBCC1197CCD23A97607F2F96D031F3432E0D16A02), # noqa: E501 - ) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_call_output2.py b/tests/ported_static/stStaticCall/test_static_call_output2.py index ab3aa1a330c..040fd1e0cc5 100644 --- a/tests/ported_static/stStaticCall/test_static_call_output2.py +++ b/tests/ported_static/stStaticCall/test_static_call_output2.py @@ -47,6 +47,15 @@ def test_static_call_output2( gas_limit=1000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: raw + # 0x6001600101600055 + addr = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x0, value=Op.ADD(0x1, 0x1)), + balance=0xDE0B6B3A7640000, + nonce=0, + address=Address(0xBCC1197CCD23A97607F2F96D031F3432E0D16A02), # noqa: E501 + ) # Source: lll # { (MSTORE 0 0x5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6) (STATICCALL 50000 0 32 0 0) [[ 0 ]] (MLOAD 0)} # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -57,7 +66,7 @@ def test_static_call_output2( + Op.POP( Op.STATICCALL( gas=0xC350, - address=0xBCC1197CCD23A97607F2F96D031F3432E0D16A02, + address=addr, args_offset=0x0, args_size=0x20, ret_offset=0x0, @@ -70,15 +79,6 @@ def test_static_call_output2( nonce=0, address=Address(0x0CC5226EEA92A2AF2F4F36413737F04F984C43A7), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) - # Source: raw - # 0x6001600101600055 - addr = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x0, value=Op.ADD(0x1, 0x1)), - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0xBCC1197CCD23A97607F2F96D031F3432E0D16A02), # noqa: E501 - ) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_call_output3.py b/tests/ported_static/stStaticCall/test_static_call_output3.py index ebeb6891dab..42e1f2232bd 100644 --- a/tests/ported_static/stStaticCall/test_static_call_output3.py +++ b/tests/ported_static/stStaticCall/test_static_call_output3.py @@ -47,6 +47,15 @@ def test_static_call_output3( gas_limit=1000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: raw + # 0x6001600101600055 + addr = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x0, value=Op.ADD(0x1, 0x1)), + balance=0xDE0B6B3A7640000, + nonce=0, + address=Address(0xBCC1197CCD23A97607F2F96D031F3432E0D16A02), # noqa: E501 + ) # Source: lll # { (MSTORE 0 0x5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6) (STATICCALL 50000 0 0 0 32) [[ 0 ]] (MLOAD 0)} # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -57,7 +66,7 @@ def test_static_call_output3( + Op.POP( Op.STATICCALL( gas=0xC350, - address=0xBCC1197CCD23A97607F2F96D031F3432E0D16A02, + address=addr, args_offset=0x0, args_size=0x0, ret_offset=0x0, @@ -70,15 +79,6 @@ def test_static_call_output3( nonce=0, address=Address(0x70663C1333ECBAEA42F33AB4EC9BB647C794BFCD), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) - # Source: raw - # 0x6001600101600055 - addr = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x0, value=Op.ADD(0x1, 0x1)), - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0xBCC1197CCD23A97607F2F96D031F3432E0D16A02), # noqa: E501 - ) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_call_output3_fail.py b/tests/ported_static/stStaticCall/test_static_call_output3_fail.py index 4ded5413f69..a5dfaea9b35 100644 --- a/tests/ported_static/stStaticCall/test_static_call_output3_fail.py +++ b/tests/ported_static/stStaticCall/test_static_call_output3_fail.py @@ -47,6 +47,15 @@ def test_static_call_output3_fail( gas_limit=1000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: raw + # 0x016001600101600055 + addr = pre.deploy_contract( # noqa: F841 + code=Op.ADD + Op.SSTORE(key=0x0, value=Op.ADD(0x1, 0x1)), + balance=0xDE0B6B3A7640000, + nonce=0, + address=Address(0x834ABC2C68C5F44EA9AE82B67AAF92044901CDC6), # noqa: E501 + ) # Source: lll # { (MSTORE 0 0x5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6) (STATICCALL 50000 0 0 0 32) [[ 0 ]] (MLOAD 0)} # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -57,7 +66,7 @@ def test_static_call_output3_fail( + Op.POP( Op.STATICCALL( gas=0xC350, - address=0x834ABC2C68C5F44EA9AE82B67AAF92044901CDC6, + address=addr, args_offset=0x0, args_size=0x0, ret_offset=0x0, @@ -70,15 +79,6 @@ def test_static_call_output3_fail( nonce=0, address=Address(0x70663C1333ECBAEA42F33AB4EC9BB647C794BFCD), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) - # Source: raw - # 0x016001600101600055 - addr = pre.deploy_contract( # noqa: F841 - code=Op.ADD + Op.SSTORE(key=0x0, value=Op.ADD(0x1, 0x1)), - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0x834ABC2C68C5F44EA9AE82B67AAF92044901CDC6), # noqa: E501 - ) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_call_output3partial.py b/tests/ported_static/stStaticCall/test_static_call_output3partial.py index 3fd4cd42c25..e480e7984f5 100644 --- a/tests/ported_static/stStaticCall/test_static_call_output3partial.py +++ b/tests/ported_static/stStaticCall/test_static_call_output3partial.py @@ -47,6 +47,15 @@ def test_static_call_output3partial( gas_limit=1000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: raw + # 0x6001600101600055 + addr = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x0, value=Op.ADD(0x1, 0x1)), + balance=0xDE0B6B3A7640000, + nonce=0, + address=Address(0xBCC1197CCD23A97607F2F96D031F3432E0D16A02), # noqa: E501 + ) # Source: lll # { (MSTORE 0 0x5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6) (STATICCALL 50000 0 0 0 10) [[ 0 ]] (MLOAD 0)} # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -57,7 +66,7 @@ def test_static_call_output3partial( + Op.POP( Op.STATICCALL( gas=0xC350, - address=0xBCC1197CCD23A97607F2F96D031F3432E0D16A02, + address=addr, args_offset=0x0, args_size=0x0, ret_offset=0x0, @@ -70,15 +79,6 @@ def test_static_call_output3partial( nonce=0, address=Address(0xA4216CFBA09E812CE041C734F1A2F266CB02B02D), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) - # Source: raw - # 0x6001600101600055 - addr = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x0, value=Op.ADD(0x1, 0x1)), - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0xBCC1197CCD23A97607F2F96D031F3432E0D16A02), # noqa: E501 - ) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_call_output3partial_fail.py b/tests/ported_static/stStaticCall/test_static_call_output3partial_fail.py index 6a701a9a979..780dc6dbf1c 100644 --- a/tests/ported_static/stStaticCall/test_static_call_output3partial_fail.py +++ b/tests/ported_static/stStaticCall/test_static_call_output3partial_fail.py @@ -47,6 +47,15 @@ def test_static_call_output3partial_fail( gas_limit=1000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: raw + # 0x016001600101600055 + addr = pre.deploy_contract( # noqa: F841 + code=Op.ADD + Op.SSTORE(key=0x0, value=Op.ADD(0x1, 0x1)), + balance=0xDE0B6B3A7640000, + nonce=0, + address=Address(0x834ABC2C68C5F44EA9AE82B67AAF92044901CDC6), # noqa: E501 + ) # Source: lll # { (MSTORE 0 0x5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6) (STATICCALL 50000 0 0 0 10) [[ 0 ]] (MLOAD 0)} # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -57,7 +66,7 @@ def test_static_call_output3partial_fail( + Op.POP( Op.STATICCALL( gas=0xC350, - address=0x834ABC2C68C5F44EA9AE82B67AAF92044901CDC6, + address=addr, args_offset=0x0, args_size=0x0, ret_offset=0x0, @@ -70,15 +79,6 @@ def test_static_call_output3partial_fail( nonce=0, address=Address(0xA4216CFBA09E812CE041C734F1A2F266CB02B02D), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) - # Source: raw - # 0x016001600101600055 - addr = pre.deploy_contract( # noqa: F841 - code=Op.ADD + Op.SSTORE(key=0x0, value=Op.ADD(0x1, 0x1)), - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0x834ABC2C68C5F44EA9AE82B67AAF92044901CDC6), # noqa: E501 - ) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_call_recursive_bomb0.py b/tests/ported_static/stStaticCall/test_static_call_recursive_bomb0.py index 363c767a98f..657e3514442 100644 --- a/tests/ported_static/stStaticCall/test_static_call_recursive_bomb0.py +++ b/tests/ported_static/stStaticCall/test_static_call_recursive_bomb0.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_static_call_recursive_bomb0( ) -> None: """Test_static_call_recursive_bomb0.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -48,6 +45,22 @@ def test_static_call_recursive_bomb0( gas_limit=100000000000, ) + # Source: lll + # { (MSTORE 0 (+ (MLOAD 0) 1)) (STATICCALL (- (GAS) 11000) (ADDRESS) 0 0 0 0) } # noqa: E501 + addr = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x0, value=Op.ADD(Op.MLOAD(offset=0x0), 0x1)) + + Op.STATICCALL( + gas=Op.SUB(Op.GAS, 0x2AF8), + address=Op.ADDRESS, + args_offset=0x0, + args_size=0x0, + ret_offset=0x0, + ret_size=0x0, + ) + + Op.STOP, + balance=0xDE0B6B3A7640000, + nonce=0, + ) # Source: lll # { [[ 0 ]] (STATICCALL 100000000 0 0 0 0) [[ 1 ]] 1 } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -55,7 +68,7 @@ def test_static_call_recursive_bomb0( key=0x0, value=Op.STATICCALL( gas=0x5F5E100, - address=0xC2641F62F868340A29AFB342ECBE22936A4336AE, + address=addr, args_offset=0x0, args_size=0x0, ret_offset=0x0, @@ -66,26 +79,7 @@ def test_static_call_recursive_bomb0( + Op.STOP, balance=0x77359400, nonce=0, - address=Address(0xA8F75B202DBA133E3184B84520CF27623E8C993F), # noqa: E501 - ) - # Source: lll - # { (MSTORE 0 (+ (MLOAD 0) 1)) (STATICCALL (- (GAS) 11000) (ADDRESS) 0 0 0 0) } # noqa: E501 - addr = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x0, value=Op.ADD(Op.MLOAD(offset=0x0), 0x1)) - + Op.STATICCALL( - gas=Op.SUB(Op.GAS, 0x2AF8), - address=Op.ADDRESS, - args_offset=0x0, - args_size=0x0, - ret_offset=0x0, - ret_size=0x0, - ) - + Op.STOP, - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0xC2641F62F868340A29AFB342ECBE22936A4336AE), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_call_recursive_bomb0_oog_at_max_call_depth.py b/tests/ported_static/stStaticCall/test_static_call_recursive_bomb0_oog_at_max_call_depth.py index a4c926743a6..0d65d75e520 100644 --- a/tests/ported_static/stStaticCall/test_static_call_recursive_bomb0_oog_at_max_call_depth.py +++ b/tests/ported_static/stStaticCall/test_static_call_recursive_bomb0_oog_at_max_call_depth.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -37,9 +36,7 @@ def test_static_call_recursive_bomb0_oog_at_max_call_depth( ) -> None: """Test_static_call_recursive_bomb0_oog_at_max_call_depth.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -50,26 +47,6 @@ def test_static_call_recursive_bomb0_oog_at_max_call_depth( gas_limit=110000000000, ) - # Source: lll - # { (CALLCODE (GAS) 0 0 0 0 0) [[ 1 ]] 1 } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.POP( - Op.CALLCODE( - gas=Op.GAS, - address=0xBB09BB747BB11897420C59CACB65853142C67BB7, - value=0x0, - args_offset=0x0, - args_size=0x0, - ret_offset=0x0, - ret_size=0x0, - ) - ) - + Op.SSTORE(key=0x1, value=0x1) - + Op.STOP, - balance=0x1312D00, - nonce=0, - address=Address(0x4A20A569D7008020C8CD630CFF560F3E627522D3), # noqa: E501 - ) # Source: lll # { (MSTORE 0 (+ (SLOAD 0) 1)) (MSTORE 2 (MUL (DIV (MLOAD 0) 0x0402) 0xfffffffffffffffffff)) (STATICCALL (- (GAS) 1024) (ADDRESS) 0 (MUL (DIV (MLOAD 0) 0x0402) 0xfffffffffffffffffff) 0 0) } # noqa: E501 addr = pre.deploy_contract( # noqa: F841 @@ -93,9 +70,26 @@ def test_static_call_recursive_bomb0_oog_at_max_call_depth( + Op.STOP, balance=0x1312D00, nonce=0, - address=Address(0xBB09BB747BB11897420C59CACB65853142C67BB7), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: lll + # { (CALLCODE (GAS) 0 0 0 0 0) [[ 1 ]] 1 } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.POP( + Op.CALLCODE( + gas=Op.GAS, + address=addr, + value=0x0, + args_offset=0x0, + args_size=0x0, + ret_offset=0x0, + ret_size=0x0, + ) + ) + + Op.SSTORE(key=0x1, value=0x1) + + Op.STOP, + balance=0x1312D00, + nonce=0, + ) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_call_recursive_bomb1.py b/tests/ported_static/stStaticCall/test_static_call_recursive_bomb1.py index e1779f0b26d..cf3f30a8c2a 100644 --- a/tests/ported_static/stStaticCall/test_static_call_recursive_bomb1.py +++ b/tests/ported_static/stStaticCall/test_static_call_recursive_bomb1.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_static_call_recursive_bomb1( ) -> None: """Test_static_call_recursive_bomb1.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -48,13 +45,29 @@ def test_static_call_recursive_bomb1( gas_limit=100000000, ) + # Source: lll + # { (MSTORE 0 (+ (MLOAD 0) 1)) (STATICCALL (- (GAS) 15000) (ADDRESS) 0 0 0 0) } # noqa: E501 + addr = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x0, value=Op.ADD(Op.MLOAD(offset=0x0), 0x1)) + + Op.STATICCALL( + gas=Op.SUB(Op.GAS, 0x3A98), + address=Op.ADDRESS, + args_offset=0x0, + args_size=0x0, + ret_offset=0x0, + ret_size=0x0, + ) + + Op.STOP, + balance=0x1312D00, + nonce=0, + ) # Source: lll # { (CALLCODE (GAS) 0 0 0 0 0) [[ 1 ]] 1 } # noqa: E501 target = pre.deploy_contract( # noqa: F841 code=Op.POP( Op.CALLCODE( gas=Op.GAS, - address=0xCF55FF2B7D15859F0CEA76885B2D9E850D7DCACD, + address=addr, value=0x0, args_offset=0x0, args_size=0x0, @@ -66,26 +79,7 @@ def test_static_call_recursive_bomb1( + Op.STOP, balance=0x1312D00, nonce=0, - address=Address(0x3134AAC90D2474F00108572CB10AD2DE05BFA7EE), # noqa: E501 - ) - # Source: lll - # { (MSTORE 0 (+ (MLOAD 0) 1)) (STATICCALL (- (GAS) 15000) (ADDRESS) 0 0 0 0) } # noqa: E501 - addr = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x0, value=Op.ADD(Op.MLOAD(offset=0x0), 0x1)) - + Op.STATICCALL( - gas=Op.SUB(Op.GAS, 0x3A98), - address=Op.ADDRESS, - args_offset=0x0, - args_size=0x0, - ret_offset=0x0, - ret_size=0x0, - ) - + Op.STOP, - balance=0x1312D00, - nonce=0, - address=Address(0xCF55FF2B7D15859F0CEA76885B2D9E850D7DCACD), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_call_recursive_bomb2.py b/tests/ported_static/stStaticCall/test_static_call_recursive_bomb2.py index f8af9c790ab..751b3586db1 100644 --- a/tests/ported_static/stStaticCall/test_static_call_recursive_bomb2.py +++ b/tests/ported_static/stStaticCall/test_static_call_recursive_bomb2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_static_call_recursive_bomb2( ) -> None: """Test_static_call_recursive_bomb2.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -48,6 +45,22 @@ def test_static_call_recursive_bomb2( gas_limit=100000000, ) + # Source: lll + # { (MSTORE 0 (+ (MLOAD 0) 1)) (STATICCALL (- (GAS) 15000) (ADDRESS) 0 0 0 0) } # noqa: E501 + addr = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x0, value=Op.ADD(Op.MLOAD(offset=0x0), 0x1)) + + Op.STATICCALL( + gas=Op.SUB(Op.GAS, 0x3A98), + address=Op.ADDRESS, + args_offset=0x0, + args_size=0x0, + ret_offset=0x0, + ret_size=0x0, + ) + + Op.STOP, + balance=0x1312D00, + nonce=0, + ) # Source: lll # { [[ 0 ]] (CALLCODE (GAS) 0 0 0 0 0) [[ 1 ]] 1} # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -55,7 +68,7 @@ def test_static_call_recursive_bomb2( key=0x0, value=Op.CALLCODE( gas=Op.GAS, - address=0xCF55FF2B7D15859F0CEA76885B2D9E850D7DCACD, + address=addr, value=0x0, args_offset=0x0, args_size=0x0, @@ -67,26 +80,7 @@ def test_static_call_recursive_bomb2( + Op.STOP, balance=0x1312D00, nonce=0, - address=Address(0xFB952C049826590F07BEE2F88274ADF6C4724A6C), # noqa: E501 - ) - # Source: lll - # { (MSTORE 0 (+ (MLOAD 0) 1)) (STATICCALL (- (GAS) 15000) (ADDRESS) 0 0 0 0) } # noqa: E501 - addr = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x0, value=Op.ADD(Op.MLOAD(offset=0x0), 0x1)) - + Op.STATICCALL( - gas=Op.SUB(Op.GAS, 0x3A98), - address=Op.ADDRESS, - args_offset=0x0, - args_size=0x0, - ret_offset=0x0, - ret_size=0x0, - ) - + Op.STOP, - balance=0x1312D00, - nonce=0, - address=Address(0xCF55FF2B7D15859F0CEA76885B2D9E850D7DCACD), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_call_recursive_bomb3.py b/tests/ported_static/stStaticCall/test_static_call_recursive_bomb3.py index e9b23c04fac..352dacad6d4 100644 --- a/tests/ported_static/stStaticCall/test_static_call_recursive_bomb3.py +++ b/tests/ported_static/stStaticCall/test_static_call_recursive_bomb3.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,9 +33,7 @@ def test_static_call_recursive_bomb3( ) -> None: """Test_static_call_recursive_bomb3.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -47,6 +44,22 @@ def test_static_call_recursive_bomb3( gas_limit=10000000, ) + # Source: lll + # { (MSTORE 0 (+ (SLOAD 0) 1)) (STATICCALL (- (GAS) 224) (ADDRESS) 0 0 0 0) } # noqa: E501 + addr = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x0, value=Op.ADD(Op.SLOAD(key=0x0), 0x1)) + + Op.STATICCALL( + gas=Op.SUB(Op.GAS, 0xE0), + address=Op.ADDRESS, + args_offset=0x0, + args_size=0x0, + ret_offset=0x0, + ret_size=0x0, + ) + + Op.STOP, + balance=0x1312D00, + nonce=0, + ) # Source: lll # { [[ 0 ]] (CALLCODE ( - (GAS) 100000) 0 0 0 0 0) [[ 1 ]] 1 } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -54,7 +67,7 @@ def test_static_call_recursive_bomb3( key=0x0, value=Op.CALLCODE( gas=Op.SUB(Op.GAS, 0x186A0), - address=0xDA47DB5B3761AED22B9F70AEDAA7D54C5E340CC5, + address=addr, value=0x0, args_offset=0x0, args_size=0x0, @@ -66,26 +79,7 @@ def test_static_call_recursive_bomb3( + Op.STOP, balance=0x1312D00, nonce=0, - address=Address(0xB5347F5CFB7BF5DA15162FB6D93A36B5CB3F4FA9), # noqa: E501 - ) - # Source: lll - # { (MSTORE 0 (+ (SLOAD 0) 1)) (STATICCALL (- (GAS) 224) (ADDRESS) 0 0 0 0) } # noqa: E501 - addr = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x0, value=Op.ADD(Op.SLOAD(key=0x0), 0x1)) - + Op.STATICCALL( - gas=Op.SUB(Op.GAS, 0xE0), - address=Op.ADDRESS, - args_offset=0x0, - args_size=0x0, - ret_offset=0x0, - ret_size=0x0, - ) - + Op.STOP, - balance=0x1312D00, - nonce=0, - address=Address(0xDA47DB5B3761AED22B9F70AEDAA7D54C5E340CC5), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_call_recursive_bomb_log.py b/tests/ported_static/stStaticCall/test_static_call_recursive_bomb_log.py index 962c9ed3eda..dc7f03d6b11 100644 --- a/tests/ported_static/stStaticCall/test_static_call_recursive_bomb_log.py +++ b/tests/ported_static/stStaticCall/test_static_call_recursive_bomb_log.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_static_call_recursive_bomb_log( ) -> None: """Test_static_call_recursive_bomb_log.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -48,26 +45,6 @@ def test_static_call_recursive_bomb_log( gas_limit=100000000000, ) - # Source: lll - # { [[ 0 ]] (STATICCALL (- (GAS) 100000) 0 0 0 0) [[ 1 ]] 1 } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.STATICCALL( - gas=Op.SUB(Op.GAS, 0x186A0), - address=0xC60FAB741BDA8373B3905ED824826A8F6EA8FD0A, - args_offset=0x0, - args_size=0x0, - ret_offset=0x0, - ret_size=0x0, - ), - ) - + Op.SSTORE(key=0x1, value=0x1) - + Op.STOP, - balance=0x1312D00, - nonce=0, - address=Address(0x2EFFE40C3FDB4ABB2979BFCFB8D814F1A786576D), # noqa: E501 - ) # Source: lll # { (MSTORE 0 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) (LOG0 0 32) (STATICCALL (- (GAS) 25000) (ADDRESS) 0 0 0 0) } # noqa: E501 addr = pre.deploy_contract( # noqa: F841 @@ -87,9 +64,26 @@ def test_static_call_recursive_bomb_log( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xC60FAB741BDA8373B3905ED824826A8F6EA8FD0A), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: lll + # { [[ 0 ]] (STATICCALL (- (GAS) 100000) 0 0 0 0) [[ 1 ]] 1 } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.STATICCALL( + gas=Op.SUB(Op.GAS, 0x186A0), + address=addr, + args_offset=0x0, + args_size=0x0, + ret_offset=0x0, + ret_size=0x0, + ), + ) + + Op.SSTORE(key=0x1, value=0x1) + + Op.STOP, + balance=0x1312D00, + nonce=0, + ) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_call_recursive_bomb_log2.py b/tests/ported_static/stStaticCall/test_static_call_recursive_bomb_log2.py index 1253691d71f..c4ff86cdbfe 100644 --- a/tests/ported_static/stStaticCall/test_static_call_recursive_bomb_log2.py +++ b/tests/ported_static/stStaticCall/test_static_call_recursive_bomb_log2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_static_call_recursive_bomb_log2( ) -> None: """Test_static_call_recursive_bomb_log2.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -48,6 +45,23 @@ def test_static_call_recursive_bomb_log2( gas_limit=20000000000, ) + # Source: lll + # { (MSTORE 0 (GAS)) (LOG0 0 32) (STATICCALL (- (GAS) 25000) (ADDRESS) 0 0 0 0) } # noqa: E501 + addr = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x0, value=Op.GAS) + + Op.LOG0(offset=0x0, size=0x20) + + Op.STATICCALL( + gas=Op.SUB(Op.GAS, 0x61A8), + address=Op.ADDRESS, + args_offset=0x0, + args_size=0x0, + ret_offset=0x0, + ret_size=0x0, + ) + + Op.STOP, + balance=0xDE0B6B3A7640000, + nonce=0, + ) # Source: lll # { [[ 0 ]] (STATICCALL ( - (GAS) 100000) 0 0 0 0) [[ 1 ]] 1 } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -55,7 +69,7 @@ def test_static_call_recursive_bomb_log2( key=0x0, value=Op.STATICCALL( gas=Op.SUB(Op.GAS, 0x186A0), - address=0xB6D3EDE67FDCDD6C67468B0EE88BD06FA680F8B3, + address=addr, args_offset=0x0, args_size=0x0, ret_offset=0x0, @@ -66,27 +80,7 @@ def test_static_call_recursive_bomb_log2( + Op.STOP, balance=0x1312D00, nonce=0, - address=Address(0x846AC33C2465429E6D236EEB8A440983AC2349ED), # noqa: E501 - ) - # Source: lll - # { (MSTORE 0 (GAS)) (LOG0 0 32) (STATICCALL (- (GAS) 25000) (ADDRESS) 0 0 0 0) } # noqa: E501 - addr = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x0, value=Op.GAS) - + Op.LOG0(offset=0x0, size=0x20) - + Op.STATICCALL( - gas=Op.SUB(Op.GAS, 0x61A8), - address=Op.ADDRESS, - args_offset=0x0, - args_size=0x0, - ret_offset=0x0, - ret_size=0x0, - ) - + Op.STOP, - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0xB6D3EDE67FDCDD6C67468B0EE88BD06FA680F8B3), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_call_recursive_bomb_pre_call.py b/tests/ported_static/stStaticCall/test_static_call_recursive_bomb_pre_call.py index f44790d4296..4738e9904e3 100644 --- a/tests/ported_static/stStaticCall/test_static_call_recursive_bomb_pre_call.py +++ b/tests/ported_static/stStaticCall/test_static_call_recursive_bomb_pre_call.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_static_call_recursive_bomb_pre_call( ) -> None: """Test_static_call_recursive_bomb_pre_call.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x77F65B71F1F16A75476F469F7106D1B60BFEC266AE25B8DA16A9091D223AA24A - ) + sender = pre.fund_eoa(amount=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) env = Environment( fee_recipient=coinbase, @@ -95,7 +92,6 @@ def test_static_call_recursive_bomb_pre_call( nonce=0, address=Address(0x72E480206054168CFA7D5C6A1BD8C3FFE26A4D82), # noqa: E501 ) - pre[sender] = Account(balance=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_call_recursive_bomb_pre_call2.py b/tests/ported_static/stStaticCall/test_static_call_recursive_bomb_pre_call2.py index 4eed5ee7da2..cd1ce27254d 100644 --- a/tests/ported_static/stStaticCall/test_static_call_recursive_bomb_pre_call2.py +++ b/tests/ported_static/stStaticCall/test_static_call_recursive_bomb_pre_call2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_static_call_recursive_bomb_pre_call2( ) -> None: """Test_static_call_recursive_bomb_pre_call2.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x77F65B71F1F16A75476F469F7106D1B60BFEC266AE25B8DA16A9091D223AA24A - ) + sender = pre.fund_eoa(amount=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) env = Environment( fee_recipient=coinbase, @@ -48,6 +45,22 @@ def test_static_call_recursive_bomb_pre_call2( gas_limit=9223372036854775807, ) + # Source: lll + # { (MSTORE 0 (+ (MLOAD 0) 1)) (STATICCALL (- (GAS) 224000) (ADDRESS) 0 0 0 0) } # noqa: E501 + addr = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x0, value=Op.ADD(Op.MLOAD(offset=0x0), 0x1)) + + Op.STATICCALL( + gas=Op.SUB(Op.GAS, 0x36B00), + address=Op.ADDRESS, + args_offset=0x0, + args_size=0x0, + ret_offset=0x0, + ret_size=0x0, + ) + + Op.STOP, + balance=0xDE0B6B3A7640000, + nonce=0, + ) # Source: lll # { (STATICCALL 100000 0xbad304eb96065b2a98b57a48a06ae28d285a71b5 0 0 0 0) [[ 0 ]] (STATICCALL 0x7ffffffffffffff 0 0 0 0) [[ 1 ]] 1 } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -65,7 +78,7 @@ def test_static_call_recursive_bomb_pre_call2( key=0x0, value=Op.STATICCALL( gas=0x7FFFFFFFFFFFFFF, - address=0xED136EDCE8F08EF121C25430E7DEC4ED3FEB511D, + address=addr, args_offset=0x0, args_size=0x0, ret_offset=0x0, @@ -76,26 +89,7 @@ def test_static_call_recursive_bomb_pre_call2( + Op.STOP, balance=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, nonce=0, - address=Address(0x5E01FE5D73A471C61018A02F7CF7D8F977343093), # noqa: E501 - ) - # Source: lll - # { (MSTORE 0 (+ (MLOAD 0) 1)) (STATICCALL (- (GAS) 224000) (ADDRESS) 0 0 0 0) } # noqa: E501 - addr = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x0, value=Op.ADD(Op.MLOAD(offset=0x0), 0x1)) - + Op.STATICCALL( - gas=Op.SUB(Op.GAS, 0x36B00), - address=Op.ADDRESS, - args_offset=0x0, - args_size=0x0, - ret_offset=0x0, - ret_size=0x0, - ) - + Op.STOP, - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0xED136EDCE8F08EF121C25430E7DEC4ED3FEB511D), # noqa: E501 ) - pre[sender] = Account(balance=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_call_ripemd160_1.py b/tests/ported_static/stStaticCall/test_static_call_ripemd160_1.py index 8c2c71d3895..b08cd8a5b78 100644 --- a/tests/ported_static/stStaticCall/test_static_call_ripemd160_1.py +++ b/tests/ported_static/stStaticCall/test_static_call_ripemd160_1.py @@ -47,6 +47,7 @@ def test_static_call_ripemd160_1( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { [[ 2 ]] (STATICCALL 600 3 0 0 0 32) [[ 0 ]] (MLOAD 0)} target = pre.deploy_contract( # noqa: F841 @@ -67,7 +68,6 @@ def test_static_call_ripemd160_1( nonce=0, address=Address(0xE9854E2C2FFBD0C6F24140954AD56F59EBC56434), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_call_ripemd160_2.py b/tests/ported_static/stStaticCall/test_static_call_ripemd160_2.py index b3016d6372d..cd4c0242cf9 100644 --- a/tests/ported_static/stStaticCall/test_static_call_ripemd160_2.py +++ b/tests/ported_static/stStaticCall/test_static_call_ripemd160_2.py @@ -47,6 +47,7 @@ def test_static_call_ripemd160_2( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { (MSTORE 5 0xf34578907f) [[ 2 ]] (STATICCALL 6000 3 0 37 0 32) [[ 0 ]] (MLOAD 0)} # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -68,7 +69,6 @@ def test_static_call_ripemd160_2( nonce=0, address=Address(0x0D371480E081540255FBCEF75D8C5C09535CEC3A), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_call_ripemd160_3.py b/tests/ported_static/stStaticCall/test_static_call_ripemd160_3.py index 28e6f3818a2..1321863a278 100644 --- a/tests/ported_static/stStaticCall/test_static_call_ripemd160_3.py +++ b/tests/ported_static/stStaticCall/test_static_call_ripemd160_3.py @@ -47,6 +47,7 @@ def test_static_call_ripemd160_3( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { (MSTORE 0 0xf34578907f) [[ 2 ]] (STATICCALL 6000 3 0 37 0 32) [[ 0 ]] (MLOAD 0)} # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -68,7 +69,6 @@ def test_static_call_ripemd160_3( nonce=0, address=Address(0xEBBC88FF981239628C72A1B30BC50038E636471F), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_call_ripemd160_3_postfixed0.py b/tests/ported_static/stStaticCall/test_static_call_ripemd160_3_postfixed0.py index 834286c14e3..29786ca5a33 100644 --- a/tests/ported_static/stStaticCall/test_static_call_ripemd160_3_postfixed0.py +++ b/tests/ported_static/stStaticCall/test_static_call_ripemd160_3_postfixed0.py @@ -47,6 +47,7 @@ def test_static_call_ripemd160_3_postfixed0( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { (MSTORE 0 0xf34578907f00) [[ 2 ]] (STATICCALL 6000 3 0 37 0 32) [[ 0 ]] (MLOAD 0)} # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -68,7 +69,6 @@ def test_static_call_ripemd160_3_postfixed0( nonce=0, address=Address(0x8152F3B3414AC9676CD28740BD7900E041CB726C), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_call_ripemd160_3_prefixed0.py b/tests/ported_static/stStaticCall/test_static_call_ripemd160_3_prefixed0.py index e4edefdd9da..d031dda8803 100644 --- a/tests/ported_static/stStaticCall/test_static_call_ripemd160_3_prefixed0.py +++ b/tests/ported_static/stStaticCall/test_static_call_ripemd160_3_prefixed0.py @@ -47,6 +47,7 @@ def test_static_call_ripemd160_3_prefixed0( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { (MSTORE 0 0x00f34578907f) [[ 2 ]] (STATICCALL 6000 3 0 37 0 32) [[ 0 ]] (MLOAD 0)} # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -68,7 +69,6 @@ def test_static_call_ripemd160_3_prefixed0( nonce=0, address=Address(0xA70CC468F5DF9F13D75A41B072FC82378BE1B31D), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_call_ripemd160_4.py b/tests/ported_static/stStaticCall/test_static_call_ripemd160_4.py index 28ed6281b48..f47e5d763ce 100644 --- a/tests/ported_static/stStaticCall/test_static_call_ripemd160_4.py +++ b/tests/ported_static/stStaticCall/test_static_call_ripemd160_4.py @@ -47,6 +47,7 @@ def test_static_call_ripemd160_4( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { (MSTORE 0 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) [[ 2 ]] (STATICCALL 720 3 0 32 0 32) [[ 0 ]] (MLOAD 0)} # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -71,7 +72,6 @@ def test_static_call_ripemd160_4( nonce=0, address=Address(0xD2243CBF1DE778D48E5FAE09F95D4707623A9FB6), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_call_ripemd160_4_gas719.py b/tests/ported_static/stStaticCall/test_static_call_ripemd160_4_gas719.py index 11277fd777b..8ad51a14383 100644 --- a/tests/ported_static/stStaticCall/test_static_call_ripemd160_4_gas719.py +++ b/tests/ported_static/stStaticCall/test_static_call_ripemd160_4_gas719.py @@ -47,6 +47,7 @@ def test_static_call_ripemd160_4_gas719( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { (MSTORE 0 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) [[ 2 ]] (STATICCALL 719 3 0 32 0 32) [[ 0 ]] (MLOAD 0)} # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -71,7 +72,6 @@ def test_static_call_ripemd160_4_gas719( nonce=0, address=Address(0x17CF516DEA393215768EE3BE0A92DBE1DB6A82CC), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_call_ripemd160_5.py b/tests/ported_static/stStaticCall/test_static_call_ripemd160_5.py index ed93f53c218..e0cbcfe7ee9 100644 --- a/tests/ported_static/stStaticCall/test_static_call_ripemd160_5.py +++ b/tests/ported_static/stStaticCall/test_static_call_ripemd160_5.py @@ -47,6 +47,7 @@ def test_static_call_ripemd160_5( gas_limit=100000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { (MSTORE 0 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) [[ 2 ]] (STATICCALL 6000 3 0 1000000 0 32) [[ 0 ]] (MLOAD 0)} # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -71,7 +72,6 @@ def test_static_call_ripemd160_5( nonce=0, address=Address(0x1D3E8582B56142AC3A4D5E93971AB0B6DC2F1636), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_call_sha256_1.py b/tests/ported_static/stStaticCall/test_static_call_sha256_1.py index 2de0c6ae909..6402837e4e1 100644 --- a/tests/ported_static/stStaticCall/test_static_call_sha256_1.py +++ b/tests/ported_static/stStaticCall/test_static_call_sha256_1.py @@ -47,6 +47,7 @@ def test_static_call_sha256_1( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { [[ 2 ]] (STATICCALL 500 2 0 0 0 32) [[ 0 ]] (MLOAD 0)} target = pre.deploy_contract( # noqa: F841 @@ -67,7 +68,6 @@ def test_static_call_sha256_1( nonce=0, address=Address(0x9385A5D182321342581977632B67B71FFCE94C7C), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_call_sha256_1_nonzero_value.py b/tests/ported_static/stStaticCall/test_static_call_sha256_1_nonzero_value.py index fcb372febe3..6bd0f39acaa 100644 --- a/tests/ported_static/stStaticCall/test_static_call_sha256_1_nonzero_value.py +++ b/tests/ported_static/stStaticCall/test_static_call_sha256_1_nonzero_value.py @@ -47,6 +47,7 @@ def test_static_call_sha256_1_nonzero_value( gas_limit=100000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { [[ 2 ]] (STATICCALL 200000 2 0 0 0 32) [[ 0 ]] (MLOAD 0) (CALL (GAS) 2 19 0 0 0 0) (CALLCODE (GAS) 2 19 0 0 0 0) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -87,7 +88,6 @@ def test_static_call_sha256_1_nonzero_value( nonce=0, address=Address(0x6EFBD97A458C5B978BEA2D03F8808BF02FE8C42D), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_call_sha256_2.py b/tests/ported_static/stStaticCall/test_static_call_sha256_2.py index b86128f4223..78c0f14b84b 100644 --- a/tests/ported_static/stStaticCall/test_static_call_sha256_2.py +++ b/tests/ported_static/stStaticCall/test_static_call_sha256_2.py @@ -47,6 +47,7 @@ def test_static_call_sha256_2( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { (MSTORE 5 0xf34578907f) [[ 2 ]] (STATICCALL 500 2 0 37 0 32) [[ 0 ]] (MLOAD 0)} # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -68,7 +69,6 @@ def test_static_call_sha256_2( nonce=0, address=Address(0xC3764EF9B916CF39BBC2F0092B1C2E792F160CB1), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_call_sha256_3.py b/tests/ported_static/stStaticCall/test_static_call_sha256_3.py index 78784076a20..83f95b4b063 100644 --- a/tests/ported_static/stStaticCall/test_static_call_sha256_3.py +++ b/tests/ported_static/stStaticCall/test_static_call_sha256_3.py @@ -47,6 +47,7 @@ def test_static_call_sha256_3( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { (MSTORE 0 0xf34578907f) [[ 2 ]] (STATICCALL 500 2 0 37 0 32) [[ 0 ]] (MLOAD 0)} # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -68,7 +69,6 @@ def test_static_call_sha256_3( nonce=0, address=Address(0x9B35A511EDE9CDECC6DFC827744E0CA1D0E5F236), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_call_sha256_3_postfix0.py b/tests/ported_static/stStaticCall/test_static_call_sha256_3_postfix0.py index 5aba000d1f4..538d0123355 100644 --- a/tests/ported_static/stStaticCall/test_static_call_sha256_3_postfix0.py +++ b/tests/ported_static/stStaticCall/test_static_call_sha256_3_postfix0.py @@ -47,6 +47,7 @@ def test_static_call_sha256_3_postfix0( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { (MSTORE 0 0xf34578907f00) [[ 2 ]] (STATICCALL 500 2 0 37 0 32) [[ 0 ]] (MLOAD 0)} # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -68,7 +69,6 @@ def test_static_call_sha256_3_postfix0( nonce=0, address=Address(0xD147FCE2C6650060E058B25CCFD3C7B24D744503), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_call_sha256_3_prefix0.py b/tests/ported_static/stStaticCall/test_static_call_sha256_3_prefix0.py index c3b120e768b..467ddd4c5ec 100644 --- a/tests/ported_static/stStaticCall/test_static_call_sha256_3_prefix0.py +++ b/tests/ported_static/stStaticCall/test_static_call_sha256_3_prefix0.py @@ -47,6 +47,7 @@ def test_static_call_sha256_3_prefix0( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { (MSTORE 0 0x00f34578907f) [[ 2 ]] (STATICCALL 500 2 0 37 0 32) [[ 0 ]] (MLOAD 0)} # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -68,7 +69,6 @@ def test_static_call_sha256_3_prefix0( nonce=0, address=Address(0x0219107BB8477432AFD6777A32E63E0E7C4B999A), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_call_sha256_4.py b/tests/ported_static/stStaticCall/test_static_call_sha256_4.py index 37ddc46be13..e7887f46179 100644 --- a/tests/ported_static/stStaticCall/test_static_call_sha256_4.py +++ b/tests/ported_static/stStaticCall/test_static_call_sha256_4.py @@ -47,6 +47,7 @@ def test_static_call_sha256_4( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { (MSTORE 0 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) [[ 2 ]] (STATICCALL 100 2 0 32 0 32) [[ 0 ]] (MLOAD 0)} # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -71,7 +72,6 @@ def test_static_call_sha256_4( nonce=0, address=Address(0x91666CD4C3EC5456566D5107F1A3CEE6DC078818), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_call_sha256_4_gas99.py b/tests/ported_static/stStaticCall/test_static_call_sha256_4_gas99.py index 3b2a51c8720..a5d437b3bca 100644 --- a/tests/ported_static/stStaticCall/test_static_call_sha256_4_gas99.py +++ b/tests/ported_static/stStaticCall/test_static_call_sha256_4_gas99.py @@ -47,6 +47,7 @@ def test_static_call_sha256_4_gas99( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { (MSTORE 0 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) [[ 2 ]] (STATICCALL 99 2 0 32 0 32) [[ 0 ]] (MLOAD 0)} # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -71,7 +72,6 @@ def test_static_call_sha256_4_gas99( nonce=0, address=Address(0xEDA46FA30192C0AB5A8E9C2567FAF9A110CE6720), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_call_sha256_5.py b/tests/ported_static/stStaticCall/test_static_call_sha256_5.py index 6cf423cbf01..ad2a974cefb 100644 --- a/tests/ported_static/stStaticCall/test_static_call_sha256_5.py +++ b/tests/ported_static/stStaticCall/test_static_call_sha256_5.py @@ -47,6 +47,7 @@ def test_static_call_sha256_5( gas_limit=100000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { (MSTORE 0 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) [[ 2 ]] (STATICCALL 600 2 0 1000000 0 32) [[ 0 ]] (MLOAD 0)} # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -71,7 +72,6 @@ def test_static_call_sha256_5( nonce=0, address=Address(0x76A2F21C718430C6918BA8C11E175C2636B35671), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_call_to_call_code_op_code_check.py b/tests/ported_static/stStaticCall/test_static_call_to_call_code_op_code_check.py index 8e13d44b592..1c992da0d5b 100644 --- a/tests/ported_static/stStaticCall/test_static_call_to_call_code_op_code_check.py +++ b/tests/ported_static/stStaticCall/test_static_call_to_call_code_op_code_check.py @@ -47,6 +47,7 @@ def test_static_call_to_call_code_op_code_check( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { [[ 0 ]] (STATICCALL 100000 (CALLDATALOAD 0) 0 0 0 0) } target = pre.deploy_contract( # noqa: F841 @@ -139,7 +140,6 @@ def test_static_call_to_call_code_op_code_check( nonce=0, address=Address(0xF0D7D1B32BBC0012F183FB3E3F4F9434ABED93BD), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_call_to_call_op_code_check.py b/tests/ported_static/stStaticCall/test_static_call_to_call_op_code_check.py index b595a4bdac5..2a383f0cf1b 100644 --- a/tests/ported_static/stStaticCall/test_static_call_to_call_op_code_check.py +++ b/tests/ported_static/stStaticCall/test_static_call_to_call_op_code_check.py @@ -47,6 +47,7 @@ def test_static_call_to_call_op_code_check( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { [[ 0 ]] (STATICCALL 100000 (CALLDATALOAD 0) 0 0 0 0) } target = pre.deploy_contract( # noqa: F841 @@ -139,7 +140,6 @@ def test_static_call_to_call_op_code_check( nonce=0, address=Address(0x0D366057A988CB6562F7FA2A601F06A503D30A90), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_call_to_del_call_op_code_check.py b/tests/ported_static/stStaticCall/test_static_call_to_del_call_op_code_check.py index a37cc64680d..c46023f3c26 100644 --- a/tests/ported_static/stStaticCall/test_static_call_to_del_call_op_code_check.py +++ b/tests/ported_static/stStaticCall/test_static_call_to_del_call_op_code_check.py @@ -47,6 +47,7 @@ def test_static_call_to_del_call_op_code_check( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { [[ 0 ]] (STATICCALL 100000 (CALLDATALOAD 0) 0 0 0 0) } target = pre.deploy_contract( # noqa: F841 @@ -138,7 +139,6 @@ def test_static_call_to_del_call_op_code_check( nonce=0, address=Address(0x114CA039127835CA3472EF43E00D15E2D8623286), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_call_to_name_registrator0.py b/tests/ported_static/stStaticCall/test_static_call_to_name_registrator0.py index 1a7da61d349..14fe9f2ed21 100644 --- a/tests/ported_static/stStaticCall/test_static_call_to_name_registrator0.py +++ b/tests/ported_static/stStaticCall/test_static_call_to_name_registrator0.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,9 +33,7 @@ def test_static_call_to_name_registrator0( ) -> None: """Test_static_call_to_name_registrator0.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -47,6 +44,21 @@ def test_static_call_to_name_registrator0( gas_limit=10000000, ) + # Source: raw + # 0x6000355415600957005b60203560003555 + addr = pre.deploy_contract( # noqa: F841 + code=Op.JUMPI( + pc=0x9, + condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), + ) + + Op.STOP + + Op.JUMPDEST + + Op.SSTORE( + key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) + ), + balance=23, + nonce=0, + ) # Source: lll # { (MSTORE 0 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) (MSTORE 32 0xaaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa ) [[ 0 ]] (STATICCALL 100000 0 64 64 0) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -62,7 +74,7 @@ def test_static_call_to_name_registrator0( key=0x0, value=Op.STATICCALL( gas=0x186A0, - address=0x15EB18969E0925C8E4A76FD7CBCE36A2B056B27E, + address=addr, args_offset=0x0, args_size=0x40, ret_offset=0x40, @@ -72,25 +84,7 @@ def test_static_call_to_name_registrator0( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xBF5DCED1C89E98F99D5702C65FC3A881E0BDA929), # noqa: E501 - ) - # Source: raw - # 0x6000355415600957005b60203560003555 - addr = pre.deploy_contract( # noqa: F841 - code=Op.JUMPI( - pc=0x9, - condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), - ) - + Op.STOP - + Op.JUMPDEST - + Op.SSTORE( - key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) - ), - balance=23, - nonce=0, - address=Address(0x15EB18969E0925C8E4A76FD7CBCE36A2B056B27E), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_call_to_return1.py b/tests/ported_static/stStaticCall/test_static_call_to_return1.py index 35f82164f46..840e627c8a6 100644 --- a/tests/ported_static/stStaticCall/test_static_call_to_return1.py +++ b/tests/ported_static/stStaticCall/test_static_call_to_return1.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,9 +33,7 @@ def test_static_call_to_return1( ) -> None: """Test_static_call_to_return1.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -47,6 +44,14 @@ def test_static_call_to_return1( gas_limit=10000000, ) + # Source: raw + # 0x602a601f536001601ff3 + addr = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE8(offset=0x1F, value=0x2A) + + Op.RETURN(offset=0x1F, size=0x1), + balance=23, + nonce=0, + ) # Source: lll # { [[ 0 ]] (STATICCALL 1000 0 0 31 1) [[ 1 ]] @0 } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -54,7 +59,7 @@ def test_static_call_to_return1( key=0x0, value=Op.STATICCALL( gas=0x3E8, - address=0xD0A322C1EA1978A5D1EDB863E5A6C9027039BF6C, + address=addr, args_offset=0x0, args_size=0x0, ret_offset=0x1F, @@ -65,18 +70,7 @@ def test_static_call_to_return1( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x60F1C8AF50C827C6787A7BC5249E9BDDE475A4BA), # noqa: E501 - ) - # Source: raw - # 0x602a601f536001601ff3 - addr = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE8(offset=0x1F, value=0x2A) - + Op.RETURN(offset=0x1F, size=0x1), - balance=23, - nonce=0, - address=Address(0xD0A322C1EA1978A5D1EDB863E5A6C9027039BF6C), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_call_to_static_op_code_check.py b/tests/ported_static/stStaticCall/test_static_call_to_static_op_code_check.py index c80ccfdfd56..97a1361828f 100644 --- a/tests/ported_static/stStaticCall/test_static_call_to_static_op_code_check.py +++ b/tests/ported_static/stStaticCall/test_static_call_to_static_op_code_check.py @@ -47,6 +47,7 @@ def test_static_call_to_static_op_code_check( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { [[ 0 ]] (STATICCALL 100000 (CALLDATALOAD 0) 0 0 0 0) } target = pre.deploy_contract( # noqa: F841 @@ -138,7 +139,6 @@ def test_static_call_to_static_op_code_check( nonce=0, address=Address(0x0D366057A988CB6562F7FA2A601F06A503D30A90), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_call_value_inherit.py b/tests/ported_static/stStaticCall/test_static_call_value_inherit.py index 82aa94d2839..4770328fd86 100644 --- a/tests/ported_static/stStaticCall/test_static_call_value_inherit.py +++ b/tests/ported_static/stStaticCall/test_static_call_value_inherit.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,9 +33,7 @@ def test_static_call_value_inherit( ) -> None: """Test_static_call_value_inherit.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x4F31B3206FBF0E0E598B9B1A7D8AC86302A0FF1D8930738F1BEBAE9B67173E52 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -47,7 +44,15 @@ def test_static_call_value_inherit( gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) + # Source: lll + # { (MSTORE 0 (CALLVALUE)) (RETURN 0 32) } + addr = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x0, value=Op.CALLVALUE) + + Op.RETURN(offset=0x0, size=0x20) + + Op.STOP, + balance=1, + nonce=0, + ) # Source: lll # { [[0]] (STATICCALL 50000 0 0 0 32) [[1]] (MLOAD 0) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -55,7 +60,7 @@ def test_static_call_value_inherit( key=0x0, value=Op.STATICCALL( gas=0xC350, - address=0xCB9A81371BC2600A843F60738091E390318CDA9C, + address=addr, args_offset=0x0, args_size=0x0, ret_offset=0x0, @@ -67,17 +72,6 @@ def test_static_call_value_inherit( storage={1: 1}, balance=1, nonce=0, - address=Address(0x453C54CFC5AF8E6FD9110C386DA8FBC47105D611), # noqa: E501 - ) - # Source: lll - # { (MSTORE 0 (CALLVALUE)) (RETURN 0 32) } - addr = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x0, value=Op.CALLVALUE) - + Op.RETURN(offset=0x0, size=0x20) - + Op.STOP, - balance=1, - nonce=0, - address=Address(0xCB9A81371BC2600A843F60738091E390318CDA9C), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stStaticCall/test_static_call_value_inherit_from_call.py b/tests/ported_static/stStaticCall/test_static_call_value_inherit_from_call.py index 2a7ebfd5448..930f7670065 100644 --- a/tests/ported_static/stStaticCall/test_static_call_value_inherit_from_call.py +++ b/tests/ported_static/stStaticCall/test_static_call_value_inherit_from_call.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -36,9 +35,7 @@ def test_static_call_value_inherit_from_call( ) -> None: """Test_static_call_value_inherit_from_call.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x4F31B3206FBF0E0E598B9B1A7D8AC86302A0FF1D8930738F1BEBAE9B67173E52 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -49,7 +46,15 @@ def test_static_call_value_inherit_from_call( gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) + # Source: lll + # { (MSTORE 0 (CALLVALUE)) (RETURN 0 32) } + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x0, value=Op.CALLVALUE) + + Op.RETURN(offset=0x0, size=0x20) + + Op.STOP, + balance=1, + nonce=0, + ) # Source: lll # { [[0]] (STATICCALL 50000 0 0 0 32) [[1]] (MLOAD 0) } # noqa: E501 addr = pre.deploy_contract( # noqa: F841 @@ -57,7 +62,7 @@ def test_static_call_value_inherit_from_call( key=0x0, value=Op.STATICCALL( gas=0xC350, - address=0xCB9A81371BC2600A843F60738091E390318CDA9C, + address=addr_2, args_offset=0x0, args_size=0x0, ret_offset=0x0, @@ -69,14 +74,13 @@ def test_static_call_value_inherit_from_call( storage={1: 1}, balance=1, nonce=0, - address=Address(0x453C54CFC5AF8E6FD9110C386DA8FBC47105D611), # noqa: E501 ) # Source: lll # { (CALL 100000 10 0 0 0 0) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 code=Op.CALL( gas=0x186A0, - address=0x453C54CFC5AF8E6FD9110C386DA8FBC47105D611, + address=addr, value=0xA, args_offset=0x0, args_size=0x0, @@ -85,17 +89,6 @@ def test_static_call_value_inherit_from_call( ) + Op.STOP, nonce=0, - address=Address(0x0AF4AE2156E6347E93D875A9D46085E31E57BBE9), # noqa: E501 - ) - # Source: lll - # { (MSTORE 0 (CALLVALUE)) (RETURN 0 32) } - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x0, value=Op.CALLVALUE) - + Op.RETURN(offset=0x0, size=0x20) - + Op.STOP, - balance=1, - nonce=0, - address=Address(0xCB9A81371BC2600A843F60738091E390318CDA9C), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stStaticCall/test_static_call_with_high_value.py b/tests/ported_static/stStaticCall/test_static_call_with_high_value.py index 6956ed78807..6ebed354848 100644 --- a/tests/ported_static/stStaticCall/test_static_call_with_high_value.py +++ b/tests/ported_static/stStaticCall/test_static_call_with_high_value.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,9 +33,7 @@ def test_static_call_with_high_value( ) -> None: """Test_static_call_with_high_value.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -47,6 +44,14 @@ def test_static_call_with_high_value( gas_limit=30000000, ) + # Source: raw + # 0x603760005360026000f3 + addr = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE8(offset=0x0, value=0x37) + + Op.RETURN(offset=0x0, size=0x2), + balance=23, + nonce=0, + ) # Source: lll # { [[ 0 ]] (STATICCALL 50000 0 64 0 2 ) [[ 1 ]] 1 } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -54,7 +59,7 @@ def test_static_call_with_high_value( key=0x0, value=Op.STATICCALL( gas=0xC350, - address=0xD5D9E9E0158920B17B6DF82FAC474B3E2691EE99, + address=addr, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -65,18 +70,7 @@ def test_static_call_with_high_value( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xC81DA1AC86642F6600ECF1369D53787A64412CFC), # noqa: E501 - ) - # Source: raw - # 0x603760005360026000f3 - addr = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE8(offset=0x0, value=0x37) - + Op.RETURN(offset=0x0, size=0x2), - balance=23, - nonce=0, - address=Address(0xD5D9E9E0158920B17B6DF82FAC474B3E2691EE99), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_call_with_high_value_and_gas_oog.py b/tests/ported_static/stStaticCall/test_static_call_with_high_value_and_gas_oog.py index 7f925647e29..ddf1233324b 100644 --- a/tests/ported_static/stStaticCall/test_static_call_with_high_value_and_gas_oog.py +++ b/tests/ported_static/stStaticCall/test_static_call_with_high_value_and_gas_oog.py @@ -72,6 +72,7 @@ def test_static_call_with_high_value_and_gas_oog( gas_limit=30000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { (CALL 500000 (CALLDATALOAD 0) 0 0 0 0 0) } target = pre.deploy_contract( # noqa: F841 @@ -89,6 +90,23 @@ def test_static_call_with_high_value_and_gas_oog( nonce=0, address=Address(0x46FCFDFD17A5789B6AB6D7E23F33F4EADECFB5AD), # noqa: E501 ) + # Source: raw + # 0x603760005360026000f3 + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE8(offset=0x0, value=0x37) + + Op.RETURN(offset=0x0, size=0x2), + balance=23, + nonce=0, + address=Address(0xD5D9E9E0158920B17B6DF82FAC474B3E2691EE99), # noqa: E501 + ) + # Source: lll + # { (KECCAK256 0x00 0x2fffff) } + addr_4 = pre.deploy_contract( # noqa: F841 + code=Op.SHA3(offset=0x0, size=0x2FFFFF) + Op.STOP, + balance=23, + nonce=0, + address=Address(0xD2B07D10E28B46411527B841F0E0382A8E3BCB80), # noqa: E501 + ) # Source: lll # { (MSTORE 0 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) (MSTORE 32 0xaaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa ) [[ 0 ]] (STATICCALL 0xffffffffffffffffffffffff 0 64 0 2 ) [[ 1 ]] (MLOAD 0)} # noqa: E501 addr = pre.deploy_contract( # noqa: F841 @@ -146,24 +164,6 @@ def test_static_call_with_high_value_and_gas_oog( nonce=0, address=Address(0xBE9C847927D7E832FF5655392C160933D99CB4E8), # noqa: E501 ) - # Source: raw - # 0x603760005360026000f3 - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE8(offset=0x0, value=0x37) - + Op.RETURN(offset=0x0, size=0x2), - balance=23, - nonce=0, - address=Address(0xD5D9E9E0158920B17B6DF82FAC474B3E2691EE99), # noqa: E501 - ) - # Source: lll - # { (KECCAK256 0x00 0x2fffff) } - addr_4 = pre.deploy_contract( # noqa: F841 - code=Op.SHA3(offset=0x0, size=0x2FFFFF) + Op.STOP, - balance=23, - nonce=0, - address=Address(0xD2B07D10E28B46411527B841F0E0382A8E3BCB80), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stStaticCall/test_static_call_with_high_value_and_oo_gat_tx_level.py b/tests/ported_static/stStaticCall/test_static_call_with_high_value_and_oo_gat_tx_level.py index 33f528e4b98..09265353f6d 100644 --- a/tests/ported_static/stStaticCall/test_static_call_with_high_value_and_oo_gat_tx_level.py +++ b/tests/ported_static/stStaticCall/test_static_call_with_high_value_and_oo_gat_tx_level.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -36,9 +35,7 @@ def test_static_call_with_high_value_and_oo_gat_tx_level( ) -> None: """Test_static_call_with_high_value_and_oo_gat_tx_level.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,6 +46,14 @@ def test_static_call_with_high_value_and_oo_gat_tx_level( gas_limit=30000000, ) + # Source: raw + # 0x603760005360026000f3 + addr = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE8(offset=0x0, value=0x37) + + Op.RETURN(offset=0x0, size=0x2), + balance=23, + nonce=0, + ) # Source: lll # { [[ 0 ]] (STATICCALL 3000001 0 0 0 0 ) [[ 1 ]] (MLOAD 0) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -56,7 +61,7 @@ def test_static_call_with_high_value_and_oo_gat_tx_level( key=0x0, value=Op.STATICCALL( gas=0x2DC6C1, - address=0xD5D9E9E0158920B17B6DF82FAC474B3E2691EE99, + address=addr, args_offset=0x0, args_size=0x0, ret_offset=0x0, @@ -67,18 +72,7 @@ def test_static_call_with_high_value_and_oo_gat_tx_level( + Op.STOP, balance=0x186A0, nonce=0, - address=Address(0x5B4A9566E26075AA8FFBEE639B15CBF0292368F6), # noqa: E501 - ) - # Source: raw - # 0x603760005360026000f3 - addr = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE8(offset=0x0, value=0x37) - + Op.RETURN(offset=0x0, size=0x2), - balance=23, - nonce=0, - address=Address(0xD5D9E9E0158920B17B6DF82FAC474B3E2691EE99), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_call_with_high_value_oo_gin_call.py b/tests/ported_static/stStaticCall/test_static_call_with_high_value_oo_gin_call.py index 64c5ba35f5b..0663469cbc5 100644 --- a/tests/ported_static/stStaticCall/test_static_call_with_high_value_oo_gin_call.py +++ b/tests/ported_static/stStaticCall/test_static_call_with_high_value_oo_gin_call.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,9 +33,7 @@ def test_static_call_with_high_value_oo_gin_call( ) -> None: """Test_static_call_with_high_value_oo_gin_call.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -47,6 +44,14 @@ def test_static_call_with_high_value_oo_gin_call( gas_limit=30000000, ) + # Source: raw + # 0x603760005360026000f3 + addr = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE8(offset=0x0, value=0x37) + + Op.RETURN(offset=0x0, size=0x2), + balance=23, + nonce=0, + ) # Source: lll # { [[ 0 ]] (ADD (STATICCALL 10 0 0 0 0 ) 1) [[ 1 ]] (MLOAD 0) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -55,7 +60,7 @@ def test_static_call_with_high_value_oo_gin_call( value=Op.ADD( Op.STATICCALL( gas=0xA, - address=0xD5D9E9E0158920B17B6DF82FAC474B3E2691EE99, + address=addr, args_offset=0x0, args_size=0x0, ret_offset=0x0, @@ -68,18 +73,7 @@ def test_static_call_with_high_value_oo_gin_call( + Op.STOP, balance=0x186A0, nonce=0, - address=Address(0x211D767449420E452C129490CA6AD58ADAD11530), # noqa: E501 - ) - # Source: raw - # 0x603760005360026000f3 - addr = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE8(offset=0x0, value=0x37) - + Op.RETURN(offset=0x0, size=0x2), - balance=23, - nonce=0, - address=Address(0xD5D9E9E0158920B17B6DF82FAC474B3E2691EE99), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_call_zero_v_call_suicide.py b/tests/ported_static/stStaticCall/test_static_call_zero_v_call_suicide.py index 8ef6e121a52..b0bfdc77740 100644 --- a/tests/ported_static/stStaticCall/test_static_call_zero_v_call_suicide.py +++ b/tests/ported_static/stStaticCall/test_static_call_zero_v_call_suicide.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,9 +33,7 @@ def test_static_call_zero_v_call_suicide( ) -> None: """Test_static_call_zero_v_call_suicide.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x4F31B3206FBF0E0E598B9B1A7D8AC86302A0FF1D8930738F1BEBAE9B67173E52 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -47,7 +44,6 @@ def test_static_call_zero_v_call_suicide( gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) # Source: lll # { (STATICCALL 60000 0 0 0 0) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 diff --git a/tests/ported_static/stStaticCall/test_static_callcall_00.py b/tests/ported_static/stStaticCall/test_static_callcall_00.py index 0026a734ccf..1dc2606afd2 100644 --- a/tests/ported_static/stStaticCall/test_static_callcall_00.py +++ b/tests/ported_static/stStaticCall/test_static_callcall_00.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -59,9 +58,7 @@ def test_static_callcall_00( ) -> None: """Test_static_callcall_00.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -93,23 +90,34 @@ def test_static_callcall_00( address=Address(0xC0E4183389EB57F779A986D8C878F89B9401DC8E), # noqa: E501 ) # Source: lll - # { [[ 0 ]] (STATICCALL 350000 0 64 0 64 ) } # noqa: E501 - addr = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.STATICCALL( - gas=0x55730, - address=0x620B442C84D5068E6B57D390A1AC99130205406E, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ), - ) + # { (SSTORE 2 1) (SSTORE 4 (CALLER)) (SSTORE 7 (CALLVALUE)) (SSTORE 230 (ADDRESS)) (SSTORE 232 (ORIGIN)) (SSTORE 236 (CALLDATASIZE)) (SSTORE 238 (CODESIZE)) (SSTORE 240 (GASPRICE))} # noqa: E501 + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x2, value=0x1) + + Op.SSTORE(key=0x4, value=Op.CALLER) + + Op.SSTORE(key=0x7, value=Op.CALLVALUE) + + Op.SSTORE(key=0xE6, value=Op.ADDRESS) + + Op.SSTORE(key=0xE8, value=Op.ORIGIN) + + Op.SSTORE(key=0xEC, value=Op.CALLDATASIZE) + + Op.SSTORE(key=0xEE, value=Op.CODESIZE) + + Op.SSTORE(key=0xF0, value=Op.GASPRICE) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x2F9EC0AFCB4EDCD7D38C6A48F5E36038263CA3CD), # noqa: E501 + address=Address(0x33F368F0B54063613CF5944941E8E0E4EEB64697), # noqa: E501 + ) + # Source: lll + # { (MSTORE 0 1) (MSTORE 32 (CALLER)) (MSTORE 64 (CALLVALUE)) (MSTORE 96 (ADDRESS)) (MSTORE 128 (ORIGIN)) (MSTORE 160 (CALLDATASIZE)) (MSTORE 192 (CODESIZE)) (MSTORE 224 (GASPRICE))} # noqa: E501 + addr_6 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x0, value=0x1) + + Op.MSTORE(offset=0x20, value=Op.CALLER) + + Op.MSTORE(offset=0x40, value=Op.CALLVALUE) + + Op.MSTORE(offset=0x60, value=Op.ADDRESS) + + Op.MSTORE(offset=0x80, value=Op.ORIGIN) + + Op.MSTORE(offset=0xA0, value=Op.CALLDATASIZE) + + Op.MSTORE(offset=0xC0, value=Op.CODESIZE) + + Op.MSTORE(offset=0xE0, value=Op.GASPRICE) + + Op.STOP, + nonce=0, + address=Address(0x29736372C0FAB51DB4556614EF27D74A89ACFE21), # noqa: E501 ) # Source: lll # { (STATICCALL 250000 0 64 0 64 ) } # noqa: E501 @@ -128,28 +136,29 @@ def test_static_callcall_00( address=Address(0x620B442C84D5068E6B57D390A1AC99130205406E), # noqa: E501 ) # Source: lll - # { (SSTORE 2 1) (SSTORE 4 (CALLER)) (SSTORE 7 (CALLVALUE)) (SSTORE 230 (ADDRESS)) (SSTORE 232 (ORIGIN)) (SSTORE 236 (CALLDATASIZE)) (SSTORE 238 (CODESIZE)) (SSTORE 240 (GASPRICE))} # noqa: E501 - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x2, value=0x1) - + Op.SSTORE(key=0x4, value=Op.CALLER) - + Op.SSTORE(key=0x7, value=Op.CALLVALUE) - + Op.SSTORE(key=0xE6, value=Op.ADDRESS) - + Op.SSTORE(key=0xE8, value=Op.ORIGIN) - + Op.SSTORE(key=0xEC, value=Op.CALLDATASIZE) - + Op.SSTORE(key=0xEE, value=Op.CODESIZE) - + Op.SSTORE(key=0xF0, value=Op.GASPRICE) + # { (STATICCALL 250000 0 64 0 64 ) } # noqa: E501 + addr_5 = pre.deploy_contract( # noqa: F841 + code=Op.STATICCALL( + gas=0x3D090, + address=0x29736372C0FAB51DB4556614EF27D74A89ACFE21, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x33F368F0B54063613CF5944941E8E0E4EEB64697), # noqa: E501 + address=Address(0xDCC76191E9F918ECFE9FBA5414884D5EE621AE00), # noqa: E501 ) # Source: lll - # { [[ 0 ]] (STATICCALL 350000 0 64 0 64 ) } # noqa: E501 - addr_4 = pre.deploy_contract( # noqa: F841 + # { [[ 0 ]] (STATICCALL 350000 0 64 0 64 ) } # noqa: E501 + addr = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( key=0x0, value=Op.STATICCALL( gas=0x55730, - address=0xDCC76191E9F918ECFE9FBA5414884D5EE621AE00, + address=0x620B442C84D5068E6B57D390A1AC99130205406E, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -159,40 +168,27 @@ def test_static_callcall_00( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xBF23F3306533431B2EE5E4CA95E0A0834C090105), # noqa: E501 + address=Address(0x2F9EC0AFCB4EDCD7D38C6A48F5E36038263CA3CD), # noqa: E501 ) # Source: lll - # { (STATICCALL 250000 0 64 0 64 ) } # noqa: E501 - addr_5 = pre.deploy_contract( # noqa: F841 - code=Op.STATICCALL( - gas=0x3D090, - address=0x29736372C0FAB51DB4556614EF27D74A89ACFE21, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, + # { [[ 0 ]] (STATICCALL 350000 0 64 0 64 ) } # noqa: E501 + addr_4 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.STATICCALL( + gas=0x55730, + address=0xDCC76191E9F918ECFE9FBA5414884D5EE621AE00, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ), ) + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xDCC76191E9F918ECFE9FBA5414884D5EE621AE00), # noqa: E501 - ) - # Source: lll - # { (MSTORE 0 1) (MSTORE 32 (CALLER)) (MSTORE 64 (CALLVALUE)) (MSTORE 96 (ADDRESS)) (MSTORE 128 (ORIGIN)) (MSTORE 160 (CALLDATASIZE)) (MSTORE 192 (CODESIZE)) (MSTORE 224 (GASPRICE))} # noqa: E501 - addr_6 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x0, value=0x1) - + Op.MSTORE(offset=0x20, value=Op.CALLER) - + Op.MSTORE(offset=0x40, value=Op.CALLVALUE) - + Op.MSTORE(offset=0x60, value=Op.ADDRESS) - + Op.MSTORE(offset=0x80, value=Op.ORIGIN) - + Op.MSTORE(offset=0xA0, value=Op.CALLDATASIZE) - + Op.MSTORE(offset=0xC0, value=Op.CODESIZE) - + Op.MSTORE(offset=0xE0, value=Op.GASPRICE) - + Op.STOP, - nonce=0, - address=Address(0x29736372C0FAB51DB4556614EF27D74A89ACFE21), # noqa: E501 + address=Address(0xBF23F3306533431B2EE5E4CA95E0A0834C090105), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stStaticCall/test_static_callcall_00_ooge.py b/tests/ported_static/stStaticCall/test_static_callcall_00_ooge.py index 3cfcc58cdde..8ba69156208 100644 --- a/tests/ported_static/stStaticCall/test_static_callcall_00_ooge.py +++ b/tests/ported_static/stStaticCall/test_static_callcall_00_ooge.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -59,9 +58,7 @@ def test_static_callcall_00_ooge( ) -> None: """Test_static_callcall_00_ooge.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -93,23 +90,28 @@ def test_static_callcall_00_ooge( address=Address(0xC0E4183389EB57F779A986D8C878F89B9401DC8E), # noqa: E501 ) # Source: lll - # { [[ 0 ]] (STATICCALL 350000 0 64 0 64 ) } # noqa: E501 - addr = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.STATICCALL( - gas=0x55730, - address=0x2814F1BE80FCE656766C827BC6E55BFB7A3BC4B9, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ), + # { (SSTORE 2 1) (MSTORE 2 1)} + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x2, value=0x1) + + Op.MSTORE(offset=0x2, value=0x1) + + Op.STOP, + nonce=0, + address=Address(0xCE21F15217A7B94DB9C505A66C9549E803BF141C), # noqa: E501 + ) + # Source: lll + # { (def 'i 0x80) (for {} (< @i 50000) [i](+ @i 1) (EXTCODESIZE 1) )} + addr_6 = pre.deploy_contract( # noqa: F841 + code=Op.JUMPDEST + + Op.JUMPI( + pc=0x1C, condition=Op.ISZERO(Op.LT(Op.MLOAD(offset=0x80), 0xC350)) ) + + Op.POP(Op.EXTCODESIZE(address=0x1)) + + Op.MSTORE(offset=0x80, value=Op.ADD(Op.MLOAD(offset=0x80), 0x1)) + + Op.JUMP(pc=0x0) + + Op.JUMPDEST + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x2F9EC0AFCB4EDCD7D38C6A48F5E36038263CA3CD), # noqa: E501 + address=Address(0xE574F7EC5305BE91332B5B8B12DEB8966E05F42D), # noqa: E501 ) # Source: lll # { (MSTORE 2 1) (STATICCALL 120020 0 64 0 64 ) (MSTORE 32 1) } # noqa: E501 @@ -131,22 +133,32 @@ def test_static_callcall_00_ooge( address=Address(0x2814F1BE80FCE656766C827BC6E55BFB7A3BC4B9), # noqa: E501 ) # Source: lll - # { (SSTORE 2 1) (MSTORE 2 1)} - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x2, value=0x1) - + Op.MSTORE(offset=0x2, value=0x1) + # { (MSTORE 2 1) (STATICCALL 20020 0 64 0 64 ) (MSTORE 32 1) } # noqa: E501 + addr_5 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x2, value=0x1) + + Op.POP( + Op.STATICCALL( + gas=0x4E34, + address=0xE574F7EC5305BE91332B5B8B12DEB8966E05F42D, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ) + ) + + Op.MSTORE(offset=0x20, value=0x1) + Op.STOP, nonce=0, - address=Address(0xCE21F15217A7B94DB9C505A66C9549E803BF141C), # noqa: E501 + address=Address(0xA18394A87A4C414718BBBEE0F695D74CD7A4F9DE), # noqa: E501 ) # Source: lll - # { [[ 0 ]] (STATICCALL 150000 0 64 0 64 ) } # noqa: E501 - addr_4 = pre.deploy_contract( # noqa: F841 + # { [[ 0 ]] (STATICCALL 350000 0 64 0 64 ) } # noqa: E501 + addr = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( key=0x0, value=Op.STATICCALL( - gas=0x249F0, - address=0xA18394A87A4C414718BBBEE0F695D74CD7A4F9DE, + gas=0x55730, + address=0x2814F1BE80FCE656766C827BC6E55BFB7A3BC4B9, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -156,43 +168,27 @@ def test_static_callcall_00_ooge( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x998A75F1A4457FB7B5872C51F34AA7256F732B1E), # noqa: E501 + address=Address(0x2F9EC0AFCB4EDCD7D38C6A48F5E36038263CA3CD), # noqa: E501 ) # Source: lll - # { (MSTORE 2 1) (STATICCALL 20020 0 64 0 64 ) (MSTORE 32 1) } # noqa: E501 - addr_5 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x2, value=0x1) - + Op.POP( - Op.STATICCALL( - gas=0x4E34, - address=0xE574F7EC5305BE91332B5B8B12DEB8966E05F42D, + # { [[ 0 ]] (STATICCALL 150000 0 64 0 64 ) } # noqa: E501 + addr_4 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.STATICCALL( + gas=0x249F0, + address=0xA18394A87A4C414718BBBEE0F695D74CD7A4F9DE, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, - ) - ) - + Op.MSTORE(offset=0x20, value=0x1) - + Op.STOP, - nonce=0, - address=Address(0xA18394A87A4C414718BBBEE0F695D74CD7A4F9DE), # noqa: E501 - ) - # Source: lll - # { (def 'i 0x80) (for {} (< @i 50000) [i](+ @i 1) (EXTCODESIZE 1) )} - addr_6 = pre.deploy_contract( # noqa: F841 - code=Op.JUMPDEST - + Op.JUMPI( - pc=0x1C, condition=Op.ISZERO(Op.LT(Op.MLOAD(offset=0x80), 0xC350)) + ), ) - + Op.POP(Op.EXTCODESIZE(address=0x1)) - + Op.MSTORE(offset=0x80, value=Op.ADD(Op.MLOAD(offset=0x80), 0x1)) - + Op.JUMP(pc=0x0) - + Op.JUMPDEST + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xE574F7EC5305BE91332B5B8B12DEB8966E05F42D), # noqa: E501 + address=Address(0x998A75F1A4457FB7B5872C51F34AA7256F732B1E), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stStaticCall/test_static_callcall_00_ooge_1.py b/tests/ported_static/stStaticCall/test_static_callcall_00_ooge_1.py index 6225f08f068..b1f3f3deb06 100644 --- a/tests/ported_static/stStaticCall/test_static_callcall_00_ooge_1.py +++ b/tests/ported_static/stStaticCall/test_static_callcall_00_ooge_1.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -59,9 +58,7 @@ def test_static_callcall_00_ooge_1( ) -> None: """Test_static_callcall_00_ooge_1.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -93,23 +90,28 @@ def test_static_callcall_00_ooge_1( address=Address(0xC0E4183389EB57F779A986D8C878F89B9401DC8E), # noqa: E501 ) # Source: lll - # { [[ 0 ]] (STATICCALL 150000 0 64 0 64 ) } # noqa: E501 - addr = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.STATICCALL( - gas=0x249F0, - address=0xA122FC55193A6573FA47C988F537AE631E411058, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ), + # { (SSTORE 2 1) (SSTORE 5 (CALLVALUE)) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x2, value=0x1) + + Op.SSTORE(key=0x5, value=Op.CALLVALUE) + + Op.STOP, + nonce=0, + address=Address(0xA65F4B36F21EF107A26AB282B736F93D47BF83DE), # noqa: E501 + ) + # Source: lll + # { (def 'i 0x80) (for {} (< @i 50000) [i](+ @i 1) (EXTCODESIZE 1) ) } + addr_6 = pre.deploy_contract( # noqa: F841 + code=Op.JUMPDEST + + Op.JUMPI( + pc=0x1C, condition=Op.ISZERO(Op.LT(Op.MLOAD(offset=0x80), 0xC350)) ) + + Op.POP(Op.EXTCODESIZE(address=0x1)) + + Op.MSTORE(offset=0x80, value=Op.ADD(Op.MLOAD(offset=0x80), 0x1)) + + Op.JUMP(pc=0x0) + + Op.JUMPDEST + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xA2CA69F1CF9FFA7A761899E8DD2F941D40326FD6), # noqa: E501 + address=Address(0x609E4DFE6190235B9A0362084C741D9EC330FB1E), # noqa: E501 ) # Source: lll # { (MSTORE 2 1) (STATICCALL 100000 0 64 0 64 ) (MSTORE 32 1) } # noqa: E501 @@ -132,22 +134,33 @@ def test_static_callcall_00_ooge_1( address=Address(0xA122FC55193A6573FA47C988F537AE631E411058), # noqa: E501 ) # Source: lll - # { (SSTORE 2 1) (SSTORE 5 (CALLVALUE)) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x2, value=0x1) - + Op.SSTORE(key=0x5, value=Op.CALLVALUE) + # { (MSTORE 2 1) (STATICCALL 100000 0 64 0 64 ) (MSTORE 32 1) } # noqa: E501 + addr_5 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x2, value=0x1) + + Op.POP( + Op.STATICCALL( + gas=0x186A0, + address=0x609E4DFE6190235B9A0362084C741D9EC330FB1E, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ) + ) + + Op.MSTORE(offset=0x20, value=0x1) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xA65F4B36F21EF107A26AB282B736F93D47BF83DE), # noqa: E501 + address=Address(0x1D401212BA6C32405B4FDC993079ACAB6C7AAB6F), # noqa: E501 ) # Source: lll - # { [[ 0 ]] (STATICCALL 150000 0 64 0 64 ) } # noqa: E501 - addr_4 = pre.deploy_contract( # noqa: F841 + # { [[ 0 ]] (STATICCALL 150000 0 64 0 64 ) } # noqa: E501 + addr = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( key=0x0, value=Op.STATICCALL( gas=0x249F0, - address=0x1D401212BA6C32405B4FDC993079ACAB6C7AAB6F, + address=0xA122FC55193A6573FA47C988F537AE631E411058, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -157,44 +170,27 @@ def test_static_callcall_00_ooge_1( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x998A75F1A4457FB7B5872C51F34AA7256F732B1E), # noqa: E501 + address=Address(0xA2CA69F1CF9FFA7A761899E8DD2F941D40326FD6), # noqa: E501 ) # Source: lll - # { (MSTORE 2 1) (STATICCALL 100000 0 64 0 64 ) (MSTORE 32 1) } # noqa: E501 - addr_5 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x2, value=0x1) - + Op.POP( - Op.STATICCALL( - gas=0x186A0, - address=0x609E4DFE6190235B9A0362084C741D9EC330FB1E, + # { [[ 0 ]] (STATICCALL 150000 0 64 0 64 ) } # noqa: E501 + addr_4 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.STATICCALL( + gas=0x249F0, + address=0x1D401212BA6C32405B4FDC993079ACAB6C7AAB6F, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, - ) + ), ) - + Op.MSTORE(offset=0x20, value=0x1) + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x1D401212BA6C32405B4FDC993079ACAB6C7AAB6F), # noqa: E501 - ) - # Source: lll - # { (def 'i 0x80) (for {} (< @i 50000) [i](+ @i 1) (EXTCODESIZE 1) ) } - addr_6 = pre.deploy_contract( # noqa: F841 - code=Op.JUMPDEST - + Op.JUMPI( - pc=0x1C, condition=Op.ISZERO(Op.LT(Op.MLOAD(offset=0x80), 0xC350)) - ) - + Op.POP(Op.EXTCODESIZE(address=0x1)) - + Op.MSTORE(offset=0x80, value=Op.ADD(Op.MLOAD(offset=0x80), 0x1)) - + Op.JUMP(pc=0x0) - + Op.JUMPDEST - + Op.STOP, - nonce=0, - address=Address(0x609E4DFE6190235B9A0362084C741D9EC330FB1E), # noqa: E501 + address=Address(0x998A75F1A4457FB7B5872C51F34AA7256F732B1E), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stStaticCall/test_static_callcall_00_ooge_2.py b/tests/ported_static/stStaticCall/test_static_callcall_00_ooge_2.py index f3f3058d0f0..cd3bcbb96cb 100644 --- a/tests/ported_static/stStaticCall/test_static_callcall_00_ooge_2.py +++ b/tests/ported_static/stStaticCall/test_static_callcall_00_ooge_2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -56,9 +55,7 @@ def test_static_callcall_00_ooge_2( ) -> None: """Test_static_callcall_00_ooge_2.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -90,23 +87,28 @@ def test_static_callcall_00_ooge_2( address=Address(0xC0E4183389EB57F779A986D8C878F89B9401DC8E), # noqa: E501 ) # Source: lll - # { [[ 0 ]] (STATICCALL 150000 0 64 0 64 ) } # noqa: E501 - addr = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.STATICCALL( - gas=0x249F0, - address=0x2DEFC3FB57B42969B271935D982740948B92E86B, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ), + # { (SSTORE 2 1) (SSTORE 5 (CALLVALUE)) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x2, value=0x1) + + Op.SSTORE(key=0x5, value=Op.CALLVALUE) + + Op.STOP, + nonce=0, + address=Address(0xA65F4B36F21EF107A26AB282B736F93D47BF83DE), # noqa: E501 + ) + # Source: lll + # { (def 'i 0x80) (for {} (< @i 50000) [i](+ @i 1) (EXTCODESIZE 1) ) } + addr_6 = pre.deploy_contract( # noqa: F841 + code=Op.JUMPDEST + + Op.JUMPI( + pc=0x1C, condition=Op.ISZERO(Op.LT(Op.MLOAD(offset=0x80), 0xC350)) ) + + Op.POP(Op.EXTCODESIZE(address=0x1)) + + Op.MSTORE(offset=0x80, value=Op.ADD(Op.MLOAD(offset=0x80), 0x1)) + + Op.JUMP(pc=0x0) + + Op.JUMPDEST + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xA2CA69F1CF9FFA7A761899E8DD2F941D40326FD6), # noqa: E501 + address=Address(0x609E4DFE6190235B9A0362084C741D9EC330FB1E), # noqa: E501 ) # Source: lll # { (MSTORE 2 1) (STATICCALL 100000 0 64 0 64 ) (MSTORE 32 1) } # noqa: E501 @@ -129,22 +131,33 @@ def test_static_callcall_00_ooge_2( address=Address(0x2DEFC3FB57B42969B271935D982740948B92E86B), # noqa: E501 ) # Source: lll - # { (SSTORE 2 1) (SSTORE 5 (CALLVALUE)) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x2, value=0x1) - + Op.SSTORE(key=0x5, value=Op.CALLVALUE) + # { (MSTORE 2 1) (STATICCALL 100000 0 64 0 64 ) (MSTORE 32 1) } # noqa: E501 + addr_5 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x2, value=0x1) + + Op.POP( + Op.STATICCALL( + gas=0x186A0, + address=0x609E4DFE6190235B9A0362084C741D9EC330FB1E, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ) + ) + + Op.MSTORE(offset=0x20, value=0x1) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xA65F4B36F21EF107A26AB282B736F93D47BF83DE), # noqa: E501 + address=Address(0xDDC2B4BC1FB31ED3CD95025FB7C668BA01B2DB6C), # noqa: E501 ) # Source: lll - # { [[ 0 ]] (STATICCALL 150000 0 64 0 64 ) } # noqa: E501 - addr_4 = pre.deploy_contract( # noqa: F841 + # { [[ 0 ]] (STATICCALL 150000 0 64 0 64 ) } # noqa: E501 + addr = pre.deploy_contract( # noqa: F841 code=Op.SSTORE( key=0x0, value=Op.STATICCALL( gas=0x249F0, - address=0xDDC2B4BC1FB31ED3CD95025FB7C668BA01B2DB6C, + address=0x2DEFC3FB57B42969B271935D982740948B92E86B, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -154,44 +167,27 @@ def test_static_callcall_00_ooge_2( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x998A75F1A4457FB7B5872C51F34AA7256F732B1E), # noqa: E501 + address=Address(0xA2CA69F1CF9FFA7A761899E8DD2F941D40326FD6), # noqa: E501 ) # Source: lll - # { (MSTORE 2 1) (STATICCALL 100000 0 64 0 64 ) (MSTORE 32 1) } # noqa: E501 - addr_5 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x2, value=0x1) - + Op.POP( - Op.STATICCALL( - gas=0x186A0, - address=0x609E4DFE6190235B9A0362084C741D9EC330FB1E, + # { [[ 0 ]] (STATICCALL 150000 0 64 0 64 ) } # noqa: E501 + addr_4 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.STATICCALL( + gas=0x249F0, + address=0xDDC2B4BC1FB31ED3CD95025FB7C668BA01B2DB6C, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, - ) + ), ) - + Op.MSTORE(offset=0x20, value=0x1) + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xDDC2B4BC1FB31ED3CD95025FB7C668BA01B2DB6C), # noqa: E501 - ) - # Source: lll - # { (def 'i 0x80) (for {} (< @i 50000) [i](+ @i 1) (EXTCODESIZE 1) ) } - addr_6 = pre.deploy_contract( # noqa: F841 - code=Op.JUMPDEST - + Op.JUMPI( - pc=0x1C, condition=Op.ISZERO(Op.LT(Op.MLOAD(offset=0x80), 0xC350)) - ) - + Op.POP(Op.EXTCODESIZE(address=0x1)) - + Op.MSTORE(offset=0x80, value=Op.ADD(Op.MLOAD(offset=0x80), 0x1)) - + Op.JUMP(pc=0x0) - + Op.JUMPDEST - + Op.STOP, - nonce=0, - address=Address(0x609E4DFE6190235B9A0362084C741D9EC330FB1E), # noqa: E501 + address=Address(0x998A75F1A4457FB7B5872C51F34AA7256F732B1E), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx_data = [ Hash(addr, left_padding=True), diff --git a/tests/ported_static/stStaticCall/test_static_callcall_00_suicide_end.py b/tests/ported_static/stStaticCall/test_static_callcall_00_suicide_end.py index 058da94535f..773ad47ca84 100644 --- a/tests/ported_static/stStaticCall/test_static_callcall_00_suicide_end.py +++ b/tests/ported_static/stStaticCall/test_static_callcall_00_suicide_end.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,9 +33,7 @@ def test_static_callcall_00_suicide_end( ) -> None: """Test_static_callcall_00_suicide_end.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -47,6 +44,14 @@ def test_static_callcall_00_suicide_end( gas_limit=30000000, ) + # Source: lll + # { (MSTORE 2 1) } + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x2, value=0x1) + Op.STOP, + balance=0x2540BE400, + nonce=0, + address=Address(0xCFB5784A5E49924BECC2D5C5D2EE0A9B141E6216), # noqa: E501 + ) # Source: lll # { [[ 0 ]] (STATICCALL 150000 0 64 0 64 ) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -86,15 +91,6 @@ def test_static_callcall_00_suicide_end( nonce=0, address=Address(0x662727C5FEC3E62DB4F386D95388CAEDD4067BB8), # noqa: E501 ) - # Source: lll - # { (MSTORE 2 1) } - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x2, value=0x1) + Op.STOP, - balance=0x2540BE400, - nonce=0, - address=Address(0xCFB5784A5E49924BECC2D5C5D2EE0A9B141E6216), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_callcallcall_000.py b/tests/ported_static/stStaticCall/test_static_callcallcall_000.py index 10b37a976e2..2388568f0db 100644 --- a/tests/ported_static/stStaticCall/test_static_callcallcall_000.py +++ b/tests/ported_static/stStaticCall/test_static_callcallcall_000.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -59,9 +58,7 @@ def test_static_callcallcall_000( ) -> None: """Test_static_callcallcall_000.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -93,32 +90,35 @@ def test_static_callcallcall_000( address=Address(0xC0E4183389EB57F779A986D8C878F89B9401DC8E), # noqa: E501 ) # Source: lll - # { [[ 0 ]] (STATICCALL 650000 0 64 0 64 ) } # noqa: E501 - addr = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.STATICCALL( - gas=0x9EB10, - address=0x36ACE903A154317B8FA379AAD88A425B7EF025DC, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ), - ) + # { (SSTORE 3 1) (SSTORE 4 (CALLER)) (SSTORE 7 (CALLVALUE)) (SSTORE 330 (ADDRESS)) (SSTORE 332 (ORIGIN)) (SSTORE 336 (CALLDATASIZE)) (SSTORE 338 (CODESIZE)) (SSTORE 340 (GASPRICE))} # noqa: E501 + addr_4 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + + Op.SSTORE(key=0x4, value=Op.CALLER) + + Op.SSTORE(key=0x7, value=Op.CALLVALUE) + + Op.SSTORE(key=0x14A, value=Op.ADDRESS) + + Op.SSTORE(key=0x14C, value=Op.ORIGIN) + + Op.SSTORE(key=0x150, value=Op.CALLDATASIZE) + + Op.SSTORE(key=0x152, value=Op.CODESIZE) + + Op.SSTORE(key=0x154, value=Op.GASPRICE) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xFB157BFD4470AB46DFFEC6F8390B747C67F62B38), # noqa: E501 + address=Address(0x181B4ED322E192361633CC3C0A418F259AB0CF4B), # noqa: E501 ) # Source: lll - # { (MSTORE 3 1) (STATICCALL 400000 0 64 0 64 ) (MSTORE 32 1) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 + # { (MSTORE 3 1) } + addr_8 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, + nonce=0, + address=Address(0x335C5531B84765A7626E6E76688F18B81BE5259C), # noqa: E501 + ) + # Source: lll + # { (MSTORE 3 1) (STATICCALL 250000 0 64 0 64 ) (MSTORE 32 1) } # noqa: E501 + addr_3 = pre.deploy_contract( # noqa: F841 code=Op.MSTORE(offset=0x3, value=0x1) + Op.POP( Op.STATICCALL( - gas=0x61A80, - address=0x3F6D147A714319EF90C47921715DC5F0CCFE3B09, + gas=0x3D090, + address=0x181B4ED322E192361633CC3C0A418F259AB0CF4B, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -129,16 +129,16 @@ def test_static_callcallcall_000( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x36ACE903A154317B8FA379AAD88A425B7EF025DC), # noqa: E501 + address=Address(0x3F6D147A714319EF90C47921715DC5F0CCFE3B09), # noqa: E501 ) # Source: lll - # { (MSTORE 3 1) (STATICCALL 250000 0 64 0 64 ) (MSTORE 32 1) } # noqa: E501 - addr_3 = pre.deploy_contract( # noqa: F841 + # { (MSTORE 3 1) (STATICCALL 250000 0 64 0 64 ) (MSTORE 32 1) } # noqa: E501 + addr_7 = pre.deploy_contract( # noqa: F841 code=Op.MSTORE(offset=0x3, value=0x1) + Op.POP( Op.STATICCALL( gas=0x3D090, - address=0x181B4ED322E192361633CC3C0A418F259AB0CF4B, + address=0x335C5531B84765A7626E6E76688F18B81BE5259C, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -149,41 +149,27 @@ def test_static_callcallcall_000( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x3F6D147A714319EF90C47921715DC5F0CCFE3B09), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) (SSTORE 4 (CALLER)) (SSTORE 7 (CALLVALUE)) (SSTORE 330 (ADDRESS)) (SSTORE 332 (ORIGIN)) (SSTORE 336 (CALLDATASIZE)) (SSTORE 338 (CODESIZE)) (SSTORE 340 (GASPRICE))} # noqa: E501 - addr_4 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) - + Op.SSTORE(key=0x4, value=Op.CALLER) - + Op.SSTORE(key=0x7, value=Op.CALLVALUE) - + Op.SSTORE(key=0x14A, value=Op.ADDRESS) - + Op.SSTORE(key=0x14C, value=Op.ORIGIN) - + Op.SSTORE(key=0x150, value=Op.CALLDATASIZE) - + Op.SSTORE(key=0x152, value=Op.CODESIZE) - + Op.SSTORE(key=0x154, value=Op.GASPRICE) - + Op.STOP, - nonce=0, - address=Address(0x181B4ED322E192361633CC3C0A418F259AB0CF4B), # noqa: E501 + address=Address(0x85EE033B8FF327153F5C82D191B4942102DEBFFC), # noqa: E501 ) # Source: lll - # { [[ 0 ]] (STATICCALL 350000 0 64 0 64 ) } # noqa: E501 - addr_5 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.STATICCALL( - gas=0x55730, - address=0xD518EBB39FB88BEB34AD1598FE3CCD3F8E4C4708, + # { (MSTORE 3 1) (STATICCALL 400000 0 64 0 64 ) (MSTORE 32 1) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + + Op.POP( + Op.STATICCALL( + gas=0x61A80, + address=0x3F6D147A714319EF90C47921715DC5F0CCFE3B09, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, - ), + ) ) + + Op.MSTORE(offset=0x20, value=0x1) + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xBF23F3306533431B2EE5E4CA95E0A0834C090105), # noqa: E501 + address=Address(0x36ACE903A154317B8FA379AAD88A425B7EF025DC), # noqa: E501 ) # Source: lll # { (MSTORE 3 1) (STATICCALL 300000 0 64 0 64 ) (MSTORE 32 1) } # noqa: E501 @@ -206,33 +192,43 @@ def test_static_callcallcall_000( address=Address(0xD518EBB39FB88BEB34AD1598FE3CCD3F8E4C4708), # noqa: E501 ) # Source: lll - # { (MSTORE 3 1) (STATICCALL 250000 0 64 0 64 ) (MSTORE 32 1) } # noqa: E501 - addr_7 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) - + Op.POP( - Op.STATICCALL( - gas=0x3D090, - address=0x335C5531B84765A7626E6E76688F18B81BE5259C, + # { [[ 0 ]] (STATICCALL 650000 0 64 0 64 ) } # noqa: E501 + addr = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.STATICCALL( + gas=0x9EB10, + address=0x36ACE903A154317B8FA379AAD88A425B7EF025DC, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, - ) + ), ) - + Op.MSTORE(offset=0x20, value=0x1) + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x85EE033B8FF327153F5C82D191B4942102DEBFFC), # noqa: E501 + address=Address(0xFB157BFD4470AB46DFFEC6F8390B747C67F62B38), # noqa: E501 ) # Source: lll - # { (MSTORE 3 1) } - addr_8 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, + # { [[ 0 ]] (STATICCALL 350000 0 64 0 64 ) } # noqa: E501 + addr_5 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.STATICCALL( + gas=0x55730, + address=0xD518EBB39FB88BEB34AD1598FE3CCD3F8E4C4708, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ), + ) + + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x335C5531B84765A7626E6E76688F18B81BE5259C), # noqa: E501 + address=Address(0xBF23F3306533431B2EE5E4CA95E0A0834C090105), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stStaticCall/test_static_callcallcall_000_ooge.py b/tests/ported_static/stStaticCall/test_static_callcallcall_000_ooge.py index a7cd6aba1dc..83d2fc21188 100644 --- a/tests/ported_static/stStaticCall/test_static_callcallcall_000_ooge.py +++ b/tests/ported_static/stStaticCall/test_static_callcallcall_000_ooge.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -59,9 +58,7 @@ def test_static_callcallcall_000_ooge( ) -> None: """Test_static_callcallcall_000_ooge.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -93,32 +90,37 @@ def test_static_callcallcall_000_ooge( address=Address(0xC0E4183389EB57F779A986D8C878F89B9401DC8E), # noqa: E501 ) # Source: lll - # { [[ 0 ]] (STATICCALL 500000 0 64 0 64 ) } # noqa: E501 - addr = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.STATICCALL( - gas=0x7A120, - address=0xA69F4D8056BB192982BF07D59AD0FF96A15B41D9, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ), + # { (SSTORE 3 1) (MSTORE 3 1)} + addr_4 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + + Op.MSTORE(offset=0x3, value=0x1) + + Op.STOP, + nonce=0, + address=Address(0x9D41CA9233D19D3202BEFCEF33F16AF7201F0EAA), # noqa: E501 + ) + # Source: lll + # { (def 'i 0x80) (for {} (< @i 50000) [i](+ @i 1) (EXTCODESIZE 1) ) } + addr_8 = pre.deploy_contract( # noqa: F841 + code=Op.JUMPDEST + + Op.JUMPI( + pc=0x1C, condition=Op.ISZERO(Op.LT(Op.MLOAD(offset=0x80), 0xC350)) ) + + Op.POP(Op.EXTCODESIZE(address=0x1)) + + Op.MSTORE(offset=0x80, value=Op.ADD(Op.MLOAD(offset=0x80), 0x1)) + + Op.JUMP(pc=0x0) + + Op.JUMPDEST + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x071587C3E5F2EBF88B2A5B048733778605ADDB28), # noqa: E501 + address=Address(0xF31E5B020AFCCF373BFA588C4D3A199C4F7A46A4), # noqa: E501 ) # Source: lll - # { (MSTORE 3 1) (STATICCALL 300000 0 64 0 64 ) (MSTORE 32 1) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 + # { (MSTORE 3 1) (STATICCALL 120020 0 64 0 64 ) (MSTORE 32 1) } # noqa: E501 + addr_3 = pre.deploy_contract( # noqa: F841 code=Op.MSTORE(offset=0x3, value=0x1) + Op.POP( Op.STATICCALL( - gas=0x493E0, - address=0xCD0BD482BAEEB001E6F3FFD36BCEB34D32169C93, + gas=0x1D4D4, + address=0x9D41CA9233D19D3202BEFCEF33F16AF7201F0EAA, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -128,16 +130,16 @@ def test_static_callcallcall_000_ooge( + Op.MSTORE(offset=0x20, value=0x1) + Op.STOP, nonce=0, - address=Address(0xA69F4D8056BB192982BF07D59AD0FF96A15B41D9), # noqa: E501 + address=Address(0xCD0BD482BAEEB001E6F3FFD36BCEB34D32169C93), # noqa: E501 ) # Source: lll - # { (MSTORE 3 1) (STATICCALL 120020 0 64 0 64 ) (MSTORE 32 1) } # noqa: E501 - addr_3 = pre.deploy_contract( # noqa: F841 + # { (MSTORE 3 1) (STATICCALL 120020 0 64 0 64 )(MSTORE 32 1) } # noqa: E501 + addr_7 = pre.deploy_contract( # noqa: F841 code=Op.MSTORE(offset=0x3, value=0x1) + Op.POP( Op.STATICCALL( gas=0x1D4D4, - address=0x9D41CA9233D19D3202BEFCEF33F16AF7201F0EAA, + address=0xF31E5B020AFCCF373BFA588C4D3A199C4F7A46A4, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -147,35 +149,26 @@ def test_static_callcallcall_000_ooge( + Op.MSTORE(offset=0x20, value=0x1) + Op.STOP, nonce=0, - address=Address(0xCD0BD482BAEEB001E6F3FFD36BCEB34D32169C93), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) (MSTORE 3 1)} - addr_4 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) - + Op.MSTORE(offset=0x3, value=0x1) - + Op.STOP, - nonce=0, - address=Address(0x9D41CA9233D19D3202BEFCEF33F16AF7201F0EAA), # noqa: E501 + address=Address(0xAC6BF72C47193C6FEFC55EFCC14674F8023F39F9), # noqa: E501 ) # Source: lll - # { [[ 0 ]] (STATICCALL 600000 0 64 0 64 ) } # noqa: E501 - addr_5 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.STATICCALL( - gas=0x927C0, - address=0xA69F4D8056BB192982BF07D59AD0FF96A15B41D9, + # { (MSTORE 3 1) (STATICCALL 300000 0 64 0 64 ) (MSTORE 32 1) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + + Op.POP( + Op.STATICCALL( + gas=0x493E0, + address=0xCD0BD482BAEEB001E6F3FFD36BCEB34D32169C93, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, - ), + ) ) + + Op.MSTORE(offset=0x20, value=0x1) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x9B0CB3CB3655D3173FF7C2CD51319AAF2CCA3CAD), # noqa: E501 + address=Address(0xA69F4D8056BB192982BF07D59AD0FF96A15B41D9), # noqa: E501 ) # Source: lll # { (MSTORE 3 1) (STATICCALL 300000 0 64 0 64 )(MSTORE 32 1) } # noqa: E501 @@ -197,40 +190,43 @@ def test_static_callcallcall_000_ooge( address=Address(0xA76CE2DE971EA2B78BC19BA706CB135F4FFF2CC2), # noqa: E501 ) # Source: lll - # { (MSTORE 3 1) (STATICCALL 120020 0 64 0 64 )(MSTORE 32 1) } # noqa: E501 - addr_7 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) - + Op.POP( - Op.STATICCALL( - gas=0x1D4D4, - address=0xF31E5B020AFCCF373BFA588C4D3A199C4F7A46A4, + # { [[ 0 ]] (STATICCALL 500000 0 64 0 64 ) } # noqa: E501 + addr = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.STATICCALL( + gas=0x7A120, + address=0xA69F4D8056BB192982BF07D59AD0FF96A15B41D9, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, - ) + ), ) - + Op.MSTORE(offset=0x20, value=0x1) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xAC6BF72C47193C6FEFC55EFCC14674F8023F39F9), # noqa: E501 + address=Address(0x071587C3E5F2EBF88B2A5B048733778605ADDB28), # noqa: E501 ) # Source: lll - # { (def 'i 0x80) (for {} (< @i 50000) [i](+ @i 1) (EXTCODESIZE 1) ) } - addr_8 = pre.deploy_contract( # noqa: F841 - code=Op.JUMPDEST - + Op.JUMPI( - pc=0x1C, condition=Op.ISZERO(Op.LT(Op.MLOAD(offset=0x80), 0xC350)) + # { [[ 0 ]] (STATICCALL 600000 0 64 0 64 ) } # noqa: E501 + addr_5 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.STATICCALL( + gas=0x927C0, + address=0xA69F4D8056BB192982BF07D59AD0FF96A15B41D9, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ), ) - + Op.POP(Op.EXTCODESIZE(address=0x1)) - + Op.MSTORE(offset=0x80, value=Op.ADD(Op.MLOAD(offset=0x80), 0x1)) - + Op.JUMP(pc=0x0) - + Op.JUMPDEST + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xF31E5B020AFCCF373BFA588C4D3A199C4F7A46A4), # noqa: E501 + address=Address(0x9B0CB3CB3655D3173FF7C2CD51319AAF2CCA3CAD), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stStaticCall/test_static_callcallcall_000_oogm_after.py b/tests/ported_static/stStaticCall/test_static_callcallcall_000_oogm_after.py index e5f0cd0132b..07d09664469 100644 --- a/tests/ported_static/stStaticCall/test_static_callcallcall_000_oogm_after.py +++ b/tests/ported_static/stStaticCall/test_static_callcallcall_000_oogm_after.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,9 +33,7 @@ def test_static_callcallcall_000_oogm_after( ) -> None: """Test_static_callcallcall_000_oogm_after.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -48,24 +45,28 @@ def test_static_callcallcall_000_oogm_after( ) # Source: lll - # { [[ 0 ]] (STATICCALL 600150 0 64 0 64 ) [[ 111 ]] 1 } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.STATICCALL( - gas=0x92856, - address=0x8FF16542095DE9F85F7C395D6D543D19B30D97D7, + # { (MSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, + nonce=0, + ) + # Source: lll + # { (MSTORE 3 1) (STATICCALL 120020 0 64 0 64 ) (MSTORE 32 1) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + + Op.POP( + Op.STATICCALL( + gas=0x1D4D4, + address=addr_3, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, - ), + ) ) - + Op.SSTORE(key=0x6F, value=0x1) + + Op.MSTORE(offset=0x20, value=0x1) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x03681C634A188409B5F9B8CA2382C1A1499D8A0D), # noqa: E501 ) # Source: lll # { (MSTORE 3 1) (STATICCALL 400080 0 64 0 64 ) (SSTORE 3 1)} # noqa: E501 @@ -74,7 +75,7 @@ def test_static_callcallcall_000_oogm_after( + Op.POP( Op.STATICCALL( gas=0x61AD0, - address=0xC2234F6B4A777DB8DF1447C9C2D0C8CEE376DE76, + address=addr_2, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -84,35 +85,26 @@ def test_static_callcallcall_000_oogm_after( + Op.SSTORE(key=0x3, value=0x1) + Op.STOP, nonce=0, - address=Address(0x8FF16542095DE9F85F7C395D6D543D19B30D97D7), # noqa: E501 ) # Source: lll - # { (MSTORE 3 1) (STATICCALL 120020 0 64 0 64 ) (MSTORE 32 1) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) - + Op.POP( - Op.STATICCALL( - gas=0x1D4D4, - address=0x335C5531B84765A7626E6E76688F18B81BE5259C, + # { [[ 0 ]] (STATICCALL 600150 0 64 0 64 ) [[ 111 ]] 1 } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.STATICCALL( + gas=0x92856, + address=addr, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, - ) + ), ) - + Op.MSTORE(offset=0x20, value=0x1) + + Op.SSTORE(key=0x6F, value=0x1) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xC2234F6B4A777DB8DF1447C9C2D0C8CEE376DE76), # noqa: E501 - ) - # Source: lll - # { (MSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, - nonce=0, - address=Address(0x335C5531B84765A7626E6E76688F18B81BE5259C), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_callcallcall_000_oogm_after2.py b/tests/ported_static/stStaticCall/test_static_callcallcall_000_oogm_after2.py index 7ee3733bc9b..e1d996d11d3 100644 --- a/tests/ported_static/stStaticCall/test_static_callcallcall_000_oogm_after2.py +++ b/tests/ported_static/stStaticCall/test_static_callcallcall_000_oogm_after2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,9 +33,7 @@ def test_static_callcallcall_000_oogm_after2( ) -> None: """Test_static_callcallcall_000_oogm_after2.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -48,24 +45,28 @@ def test_static_callcallcall_000_oogm_after2( ) # Source: lll - # { [[ 0 ]] (STATICCALL 700000 0 64 0 64 ) [[ 111 ]] 1 } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.STATICCALL( - gas=0xAAE60, - address=0x10345562E309B2045C737FFDD46E941710495FC4, + # { (MSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, + nonce=0, + ) + # Source: lll + # { (MSTORE 3 1) (STATICCALL 120020 0 64 0 64 ) (MSTORE 32 1)} # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + + Op.POP( + Op.STATICCALL( + gas=0x1D4D4, + address=addr_3, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, - ), + ) ) - + Op.SSTORE(key=0x6F, value=0x1) + + Op.MSTORE(offset=0x20, value=0x1) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x6DE4E4FA82A7139E6804B5B47B42E366A9595946), # noqa: E501 ) # Source: lll # { (MSTORE 3 1) (STATICCALL 450000 0 64 0 64 ) (def 'i 0x80) (for {} (< @i 50000) [i](+ @i 1) (EXTCODESIZE 1) ) } # noqa: E501 @@ -74,7 +75,7 @@ def test_static_callcallcall_000_oogm_after2( + Op.POP( Op.STATICCALL( gas=0x6DDD0, - address=0xA34EEE061F267A63C872265BED51C483F777A7B0, + address=addr_2, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -91,35 +92,26 @@ def test_static_callcallcall_000_oogm_after2( + Op.JUMPDEST + Op.STOP, nonce=0, - address=Address(0x10345562E309B2045C737FFDD46E941710495FC4), # noqa: E501 ) # Source: lll - # { (MSTORE 3 1) (STATICCALL 120020 0 64 0 64 ) (MSTORE 32 1)} # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) - + Op.POP( - Op.STATICCALL( - gas=0x1D4D4, - address=0x335C5531B84765A7626E6E76688F18B81BE5259C, + # { [[ 0 ]] (STATICCALL 700000 0 64 0 64 ) [[ 111 ]] 1 } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.STATICCALL( + gas=0xAAE60, + address=addr, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, - ) + ), ) - + Op.MSTORE(offset=0x20, value=0x1) + + Op.SSTORE(key=0x6F, value=0x1) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xA34EEE061F267A63C872265BED51C483F777A7B0), # noqa: E501 - ) - # Source: lll - # { (MSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, - nonce=0, - address=Address(0x335C5531B84765A7626E6E76688F18B81BE5259C), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_callcallcall_000_oogm_before.py b/tests/ported_static/stStaticCall/test_static_callcallcall_000_oogm_before.py index e7d8adf51d1..d7cef670092 100644 --- a/tests/ported_static/stStaticCall/test_static_callcallcall_000_oogm_before.py +++ b/tests/ported_static/stStaticCall/test_static_callcallcall_000_oogm_before.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,9 +33,7 @@ def test_static_callcallcall_000_oogm_before( ) -> None: """Test_static_callcallcall_000_oogm_before.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -48,39 +45,10 @@ def test_static_callcallcall_000_oogm_before( ) # Source: lll - # { [[ 0 ]] (STATICCALL 600000 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.STATICCALL( - gas=0x927C0, - address=0xEDBFA645E2C5462398C0BD3A12E41EF8EC1F9F5, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ), - ) - + Op.SSTORE(key=0x1, value=0x1) - + Op.STOP, - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0x081FA564A44BD568ECF6D6B044899F7EE4057F5F), # noqa: E501 - ) - # Source: lll - # { (STATICCALL 400080 0 64 0 64 ) } # noqa: E501 - addr = pre.deploy_contract( # noqa: F841 - code=Op.STATICCALL( - gas=0x61AD0, - address=0x97498B4CE896BE02417BCFE036BEAC3332185563, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ) - + Op.STOP, + # { (MSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, nonce=0, - address=Address(0x0EDBFA645E2C5462398C0BD3A12E41EF8EC1F9F5), # noqa: E501 ) # Source: lll # { (def 'i 0x80) (for {} (< @i 50000) [i](+ @i 1) (EXTCODESIZE 1) ) (STATICCALL 120020 0 64 0 64 ) } # noqa: E501 @@ -95,7 +63,7 @@ def test_static_callcallcall_000_oogm_before( + Op.JUMPDEST + Op.STATICCALL( gas=0x1D4D4, - address=0x335C5531B84765A7626E6E76688F18B81BE5259C, + address=addr_3, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -103,16 +71,40 @@ def test_static_callcallcall_000_oogm_before( ) + Op.STOP, nonce=0, - address=Address(0x97498B4CE896BE02417BCFE036BEAC3332185563), # noqa: E501 ) # Source: lll - # { (MSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, + # { (STATICCALL 400080 0 64 0 64 ) } # noqa: E501 + addr = pre.deploy_contract( # noqa: F841 + code=Op.STATICCALL( + gas=0x61AD0, + address=addr_2, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ) + + Op.STOP, + nonce=0, + ) + # Source: lll + # { [[ 0 ]] (STATICCALL 600000 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.STATICCALL( + gas=0x927C0, + address=addr, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ), + ) + + Op.SSTORE(key=0x1, value=0x1) + + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x335C5531B84765A7626E6E76688F18B81BE5259C), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_callcallcall_000_suicide_end.py b/tests/ported_static/stStaticCall/test_static_callcallcall_000_suicide_end.py index a328a71f912..78d2acd9b59 100644 --- a/tests/ported_static/stStaticCall/test_static_callcallcall_000_suicide_end.py +++ b/tests/ported_static/stStaticCall/test_static_callcallcall_000_suicide_end.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,9 +33,7 @@ def test_static_callcallcall_000_suicide_end( ) -> None: """Test_static_callcallcall_000_suicide_end.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -47,6 +44,14 @@ def test_static_callcallcall_000_suicide_end( gas_limit=30000000, ) + # Source: lll + # { (MSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, + balance=0x2540BE400, + nonce=0, + address=Address(0x3423652BB0C864AC51C919168F106E55D6F7D138), # noqa: E501 + ) # Source: lll # { [[ 0 ]] (STATICCALL 150000 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -107,15 +112,6 @@ def test_static_callcallcall_000_suicide_end( nonce=0, address=Address(0xCB401DA610F6DE2240321640E8BF2803CE6BFD0A), # noqa: E501 ) - # Source: lll - # { (MSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, - balance=0x2540BE400, - nonce=0, - address=Address(0x3423652BB0C864AC51C919168F106E55D6F7D138), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_callcallcall_000_suicide_middle.py b/tests/ported_static/stStaticCall/test_static_callcallcall_000_suicide_middle.py index 322f1bb57d0..56cf3224bd1 100644 --- a/tests/ported_static/stStaticCall/test_static_callcallcall_000_suicide_middle.py +++ b/tests/ported_static/stStaticCall/test_static_callcallcall_000_suicide_middle.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -36,9 +35,7 @@ def test_static_callcallcall_000_suicide_middle( ) -> None: """Test_static_callcallcall_000_suicide_middle.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,6 +46,14 @@ def test_static_callcallcall_000_suicide_middle( gas_limit=30000000, ) + # Source: lll + # { (MSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, + balance=0x2540BE400, + nonce=0, + address=Address(0x48E2D4C0B593BFEBE5DDB4F13AA355B8BD83DDD3), # noqa: E501 + ) # Source: lll # { [[ 0 ]] (STATICCALL 150000 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -108,15 +113,6 @@ def test_static_callcallcall_000_suicide_middle( nonce=0, address=Address(0x72CC05B5A698AA0AE6848A4814180A756561F046), # noqa: E501 ) - # Source: lll - # { (MSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, - balance=0x2540BE400, - nonce=0, - address=Address(0x48E2D4C0B593BFEBE5DDB4F13AA355B8BD83DDD3), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_callcallcall_abcb_recursive.py b/tests/ported_static/stStaticCall/test_static_callcallcall_abcb_recursive.py index 5f07e240f11..0a0b4b64deb 100644 --- a/tests/ported_static/stStaticCall/test_static_callcallcall_abcb_recursive.py +++ b/tests/ported_static/stStaticCall/test_static_callcallcall_abcb_recursive.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,9 +33,7 @@ def test_static_callcallcall_abcb_recursive( ) -> None: """Test_static_callcallcall_abcb_recursive.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -107,7 +104,6 @@ def test_static_callcallcall_abcb_recursive( nonce=0, address=Address(0xE6F4B463900F4C325A940DCA2C0C6B1C075631C9), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_callcallcallcode_001.py b/tests/ported_static/stStaticCall/test_static_callcallcallcode_001.py index 9834b2ed84b..10695d92061 100644 --- a/tests/ported_static/stStaticCall/test_static_callcallcallcode_001.py +++ b/tests/ported_static/stStaticCall/test_static_callcallcallcode_001.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -59,9 +58,7 @@ def test_static_callcallcallcode_001( ) -> None: """Test_static_callcallcallcode_001.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -93,33 +90,35 @@ def test_static_callcallcallcode_001( address=Address(0xC0E4183389EB57F779A986D8C878F89B9401DC8E), # noqa: E501 ) # Source: lll - # { [[ 0 ]] (STATICCALL 350000 0 64 0 64 ) (MSTORE 3 1) } # noqa: E501 - addr = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.STATICCALL( - gas=0x55730, - address=0x5CCB387AB81F41F0B490664795E7004D5D14BF91, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ), - ) - + Op.MSTORE(offset=0x3, value=0x1) + # { (SSTORE 3 1) (SSTORE 4 (CALLER)) (SSTORE 7 (CALLVALUE)) (SSTORE 330 (ADDRESS)) (SSTORE 332 (ORIGIN)) (SSTORE 336 (CALLDATASIZE)) (SSTORE 338 (CODESIZE)) (SSTORE 340 (GASPRICE)) } # noqa: E501 + addr_4 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + + Op.SSTORE(key=0x4, value=Op.CALLER) + + Op.SSTORE(key=0x7, value=Op.CALLVALUE) + + Op.SSTORE(key=0x14A, value=Op.ADDRESS) + + Op.SSTORE(key=0x14C, value=Op.ORIGIN) + + Op.SSTORE(key=0x150, value=Op.CALLDATASIZE) + + Op.SSTORE(key=0x152, value=Op.CODESIZE) + + Op.SSTORE(key=0x154, value=Op.GASPRICE) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x9121E482ADD3986513A14639DB36D5EC5AE41FB8), # noqa: E501 + address=Address(0x7E63847AAD8CA50FB7C04777DCE6871A6BF8DE0C), # noqa: E501 ) # Source: lll - # { (MSTORE 3 1) (STATICCALL 300000 0 64 0 64 ) (MSTORE 3 1) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 + # { (MSTORE 3 1) } + addr_8 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, + nonce=0, + address=Address(0x335C5531B84765A7626E6E76688F18B81BE5259C), # noqa: E501 + ) + # Source: lll + # { (MSTORE 3 1) (DELEGATECALL 250000 0 64 0 64 ) (MSTORE 3 1) } # noqa: E501 + addr_3 = pre.deploy_contract( # noqa: F841 code=Op.MSTORE(offset=0x3, value=0x1) + Op.POP( - Op.STATICCALL( - gas=0x493E0, - address=0x82D1FD8C6ED53A58BD8B065074A6B572A7CA89FA, + Op.DELEGATECALL( + gas=0x3D090, + address=0x7E63847AAD8CA50FB7C04777DCE6871A6BF8DE0C, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -130,16 +129,16 @@ def test_static_callcallcallcode_001( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x5CCB387AB81F41F0B490664795E7004D5D14BF91), # noqa: E501 + address=Address(0x82D1FD8C6ED53A58BD8B065074A6B572A7CA89FA), # noqa: E501 ) # Source: lll - # { (MSTORE 3 1) (DELEGATECALL 250000 0 64 0 64 ) (MSTORE 3 1) } # noqa: E501 - addr_3 = pre.deploy_contract( # noqa: F841 + # { (MSTORE 3 1) (DELEGATECALL 250000 0 64 0 64 ) (MSTORE 3 1) } # noqa: E501 + addr_7 = pre.deploy_contract( # noqa: F841 code=Op.MSTORE(offset=0x3, value=0x1) + Op.POP( Op.DELEGATECALL( gas=0x3D090, - address=0x7E63847AAD8CA50FB7C04777DCE6871A6BF8DE0C, + address=0x335C5531B84765A7626E6E76688F18B81BE5259C, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -150,41 +149,27 @@ def test_static_callcallcallcode_001( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x82D1FD8C6ED53A58BD8B065074A6B572A7CA89FA), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) (SSTORE 4 (CALLER)) (SSTORE 7 (CALLVALUE)) (SSTORE 330 (ADDRESS)) (SSTORE 332 (ORIGIN)) (SSTORE 336 (CALLDATASIZE)) (SSTORE 338 (CODESIZE)) (SSTORE 340 (GASPRICE)) } # noqa: E501 - addr_4 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) - + Op.SSTORE(key=0x4, value=Op.CALLER) - + Op.SSTORE(key=0x7, value=Op.CALLVALUE) - + Op.SSTORE(key=0x14A, value=Op.ADDRESS) - + Op.SSTORE(key=0x14C, value=Op.ORIGIN) - + Op.SSTORE(key=0x150, value=Op.CALLDATASIZE) - + Op.SSTORE(key=0x152, value=Op.CODESIZE) - + Op.SSTORE(key=0x154, value=Op.GASPRICE) - + Op.STOP, - nonce=0, - address=Address(0x7E63847AAD8CA50FB7C04777DCE6871A6BF8DE0C), # noqa: E501 + address=Address(0xF18DDE9381A558C4BE0B84B0F3A17E22B3F9FFCE), # noqa: E501 ) # Source: lll - # { [[ 0 ]] (STATICCALL 350000 0 64 0 64 ) } # noqa: E501 - addr_5 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.STATICCALL( - gas=0x55730, - address=0x69CE59F2414271F3E079542EF3893A021D7D68EA, + # { (MSTORE 3 1) (STATICCALL 300000 0 64 0 64 ) (MSTORE 3 1) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + + Op.POP( + Op.STATICCALL( + gas=0x493E0, + address=0x82D1FD8C6ED53A58BD8B065074A6B572A7CA89FA, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, - ), + ) ) + + Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xBF23F3306533431B2EE5E4CA95E0A0834C090105), # noqa: E501 + address=Address(0x5CCB387AB81F41F0B490664795E7004D5D14BF91), # noqa: E501 ) # Source: lll # { (MSTORE 3 1) (STATICCALL 300000 0 64 0 64 )(MSTORE 3 1) } # noqa: E501 @@ -207,33 +192,44 @@ def test_static_callcallcallcode_001( address=Address(0x69CE59F2414271F3E079542EF3893A021D7D68EA), # noqa: E501 ) # Source: lll - # { (MSTORE 3 1) (DELEGATECALL 250000 0 64 0 64 ) (MSTORE 3 1) } # noqa: E501 - addr_7 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) - + Op.POP( - Op.DELEGATECALL( - gas=0x3D090, - address=0x335C5531B84765A7626E6E76688F18B81BE5259C, + # { [[ 0 ]] (STATICCALL 350000 0 64 0 64 ) (MSTORE 3 1) } # noqa: E501 + addr = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.STATICCALL( + gas=0x55730, + address=0x5CCB387AB81F41F0B490664795E7004D5D14BF91, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, - ) + ), ) + Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xF18DDE9381A558C4BE0B84B0F3A17E22B3F9FFCE), # noqa: E501 + address=Address(0x9121E482ADD3986513A14639DB36D5EC5AE41FB8), # noqa: E501 ) # Source: lll - # { (MSTORE 3 1) } - addr_8 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, + # { [[ 0 ]] (STATICCALL 350000 0 64 0 64 ) } # noqa: E501 + addr_5 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.STATICCALL( + gas=0x55730, + address=0x69CE59F2414271F3E079542EF3893A021D7D68EA, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ), + ) + + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x335C5531B84765A7626E6E76688F18B81BE5259C), # noqa: E501 + address=Address(0xBF23F3306533431B2EE5E4CA95E0A0834C090105), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stStaticCall/test_static_callcallcallcode_001_2.py b/tests/ported_static/stStaticCall/test_static_callcallcallcode_001_2.py index 20eb1b6d1f5..f76a30dbfa5 100644 --- a/tests/ported_static/stStaticCall/test_static_callcallcallcode_001_2.py +++ b/tests/ported_static/stStaticCall/test_static_callcallcallcode_001_2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -59,9 +58,7 @@ def test_static_callcallcallcode_001_2( ) -> None: """Test_static_callcallcallcode_001_2.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -93,42 +90,18 @@ def test_static_callcallcallcode_001_2( address=Address(0xE4552FDC3736D39144E64AD1A1E8253017B0C974), # noqa: E501 ) # Source: lll - # { [[ 0 ]] (STATICCALL 350000 0 64 0 64 ) } # noqa: E501 - addr = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.STATICCALL( - gas=0x55730, - address=0x52BC8086D7F6AC48937CF1B98DFC6F4BE0F75112, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ), - ) - + Op.STOP, - balance=0xDE0B6B3A7640000, + # { (MSTORE 1 0x11223344) } + addr_4 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x1, value=0x11223344) + Op.STOP, nonce=0, - address=Address(0x2F9EC0AFCB4EDCD7D38C6A48F5E36038263CA3CD), # noqa: E501 + address=Address(0x2881A083EA775F78057A93F73110241FDB7398A9), # noqa: E501 ) # Source: lll - # { (STATICCALL 300000 0 64 0 64 ) (MSTORE 3 1) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.POP( - Op.STATICCALL( - gas=0x493E0, - address=0xFFFFAEB931552E5F094CA96A70BE612DA56B887, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ) - ) - + Op.MSTORE(offset=0x3, value=0x1) - + Op.STOP, - balance=0xDE0B6B3A7640000, + # { (MSTORE 3 1) } + addr_8 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, nonce=0, - address=Address(0x52BC8086D7F6AC48937CF1B98DFC6F4BE0F75112), # noqa: E501 + address=Address(0x335C5531B84765A7626E6E76688F18B81BE5259C), # noqa: E501 ) # Source: lll # { [[ 2 ]] (CALLCODE 250000 3 0 64 0 64 ) } # noqa: E501 @@ -151,30 +124,44 @@ def test_static_callcallcallcode_001_2( address=Address(0x0FFFFAEB931552E5F094CA96A70BE612DA56B887), # noqa: E501 ) # Source: lll - # { (MSTORE 1 0x11223344) } - addr_4 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x1, value=0x11223344) + Op.STOP, + # { (MSTORE 4 1) (CALLCODE 250000 0 0 64 0 64 ) (MSTORE 6 1) } # noqa: E501 + addr_7 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x4, value=0x1) + + Op.POP( + Op.CALLCODE( + gas=0x3D090, + address=0x335C5531B84765A7626E6E76688F18B81BE5259C, + value=0x0, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ) + ) + + Op.MSTORE(offset=0x6, value=0x1) + + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x2881A083EA775F78057A93F73110241FDB7398A9), # noqa: E501 + address=Address(0x5517C40699CEB16C4EB71F2B0D841078C198560E), # noqa: E501 ) # Source: lll - # { [[ 0 ]] (STATICCALL 350000 0 64 0 64 ) } # noqa: E501 - addr_5 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.STATICCALL( - gas=0x55730, - address=0xB4631A307A08ABC5D5A582549B23CB98A7C5BEB2, + # { (STATICCALL 300000 0 64 0 64 ) (MSTORE 3 1) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.POP( + Op.STATICCALL( + gas=0x493E0, + address=0xFFFFAEB931552E5F094CA96A70BE612DA56B887, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, - ), + ) ) + + Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xBF23F3306533431B2EE5E4CA95E0A0834C090105), # noqa: E501 + address=Address(0x52BC8086D7F6AC48937CF1B98DFC6F4BE0F75112), # noqa: E501 ) # Source: lll # { (STATICCALL 300000 0 64 0 64 ) (MSTORE 3 1) } # noqa: E501 @@ -196,34 +183,43 @@ def test_static_callcallcallcode_001_2( address=Address(0xB4631A307A08ABC5D5A582549B23CB98A7C5BEB2), # noqa: E501 ) # Source: lll - # { (MSTORE 4 1) (CALLCODE 250000 0 0 64 0 64 ) (MSTORE 6 1) } # noqa: E501 - addr_7 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x4, value=0x1) - + Op.POP( - Op.CALLCODE( - gas=0x3D090, - address=0x335C5531B84765A7626E6E76688F18B81BE5259C, - value=0x0, + # { [[ 0 ]] (STATICCALL 350000 0 64 0 64 ) } # noqa: E501 + addr = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.STATICCALL( + gas=0x55730, + address=0x52BC8086D7F6AC48937CF1B98DFC6F4BE0F75112, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, - ) + ), ) - + Op.MSTORE(offset=0x6, value=0x1) + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x5517C40699CEB16C4EB71F2B0D841078C198560E), # noqa: E501 + address=Address(0x2F9EC0AFCB4EDCD7D38C6A48F5E36038263CA3CD), # noqa: E501 ) # Source: lll - # { (MSTORE 3 1) } - addr_8 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, + # { [[ 0 ]] (STATICCALL 350000 0 64 0 64 ) } # noqa: E501 + addr_5 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.STATICCALL( + gas=0x55730, + address=0xB4631A307A08ABC5D5A582549B23CB98A7C5BEB2, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ), + ) + + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x335C5531B84765A7626E6E76688F18B81BE5259C), # noqa: E501 + address=Address(0xBF23F3306533431B2EE5E4CA95E0A0834C090105), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stStaticCall/test_static_callcallcallcode_001_ooge.py b/tests/ported_static/stStaticCall/test_static_callcallcallcode_001_ooge.py index 952b23aec34..948a7ec6d19 100644 --- a/tests/ported_static/stStaticCall/test_static_callcallcallcode_001_ooge.py +++ b/tests/ported_static/stStaticCall/test_static_callcallcallcode_001_ooge.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,9 +33,7 @@ def test_static_callcallcallcode_001_ooge( ) -> None: """Test_static_callcallcallcode_001_ooge.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -48,24 +45,36 @@ def test_static_callcallcallcode_001_ooge( ) # Source: lll - # { [[ 0 ]] (STATICCALL 600000 0 64 0 64 ) (MSTORE 3 1)} # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.STATICCALL( - gas=0x927C0, - address=0x6F80B859BA9392B2C26E5930C330D4A7247FBA4F, + # { (def 'i 0x80) (for {} (< @i 50000) [i](+ @i 1) (EXTCODESIZE 1) )} + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.JUMPDEST + + Op.JUMPI( + pc=0x1C, condition=Op.ISZERO(Op.LT(Op.MLOAD(offset=0x80), 0xC350)) + ) + + Op.POP(Op.EXTCODESIZE(address=0x1)) + + Op.MSTORE(offset=0x80, value=Op.ADD(Op.MLOAD(offset=0x80), 0x1)) + + Op.JUMP(pc=0x0) + + Op.JUMPDEST + + Op.STOP, + nonce=0, + ) + # Source: lll + # { (MSTORE 3 1) (DELEGATECALL 120020 0 64 0 64 ) (MSTORE 3 1)} # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + + Op.POP( + Op.DELEGATECALL( + gas=0x1D4D4, + address=addr_3, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, - ), + ) ) + Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x563F06D1277F7CB092689AC2168D6EECD1ACB499), # noqa: E501 ) # Source: lll # { (MSTORE 3 1) (STATICCALL 300000 0 64 0 64 ) (MSTORE 3 1)} # noqa: E501 @@ -74,7 +83,7 @@ def test_static_callcallcallcode_001_ooge( + Op.POP( Op.STATICCALL( gas=0x493E0, - address=0xA3E14608664E4A0229F96C49500F83F0FDBF3DCB, + address=addr_2, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -84,43 +93,26 @@ def test_static_callcallcallcode_001_ooge( + Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, nonce=0, - address=Address(0x6F80B859BA9392B2C26E5930C330D4A7247FBA4F), # noqa: E501 ) # Source: lll - # { (MSTORE 3 1) (DELEGATECALL 120020 0 64 0 64 ) (MSTORE 3 1)} # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) - + Op.POP( - Op.DELEGATECALL( - gas=0x1D4D4, - address=0xE574F7EC5305BE91332B5B8B12DEB8966E05F42D, + # { [[ 0 ]] (STATICCALL 600000 0 64 0 64 ) (MSTORE 3 1)} # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.STATICCALL( + gas=0x927C0, + address=addr, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, - ) + ), ) + Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xA3E14608664E4A0229F96C49500F83F0FDBF3DCB), # noqa: E501 - ) - # Source: lll - # { (def 'i 0x80) (for {} (< @i 50000) [i](+ @i 1) (EXTCODESIZE 1) )} - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.JUMPDEST - + Op.JUMPI( - pc=0x1C, condition=Op.ISZERO(Op.LT(Op.MLOAD(offset=0x80), 0xC350)) - ) - + Op.POP(Op.EXTCODESIZE(address=0x1)) - + Op.MSTORE(offset=0x80, value=Op.ADD(Op.MLOAD(offset=0x80), 0x1)) - + Op.JUMP(pc=0x0) - + Op.JUMPDEST - + Op.STOP, - nonce=0, - address=Address(0xE574F7EC5305BE91332B5B8B12DEB8966E05F42D), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_callcallcallcode_001_ooge_2.py b/tests/ported_static/stStaticCall/test_static_callcallcallcode_001_ooge_2.py index 26c5e80244e..970133882b1 100644 --- a/tests/ported_static/stStaticCall/test_static_callcallcallcode_001_ooge_2.py +++ b/tests/ported_static/stStaticCall/test_static_callcallcallcode_001_ooge_2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -56,9 +55,7 @@ def test_static_callcallcallcode_001_ooge_2( ) -> None: """Test_static_callcallcallcode_001_ooge_2.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -90,38 +87,28 @@ def test_static_callcallcallcode_001_ooge_2( address=Address(0xC0E4183389EB57F779A986D8C878F89B9401DC8E), # noqa: E501 ) # Source: lll - # { [[ 0 ]] (STATICCALL 500000 0 64 0 64 ) } # noqa: E501 - addr = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.STATICCALL( - gas=0x7A120, - address=0xBDA9155E6214FE759004E6FCBE736289EF800528, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ), - ) + # { (SSTORE 3 1) (MSTORE 3 1)} + addr_4 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + + Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x071587C3E5F2EBF88B2A5B048733778605ADDB28), # noqa: E501 + address=Address(0x9D41CA9233D19D3202BEFCEF33F16AF7201F0EAA), # noqa: E501 ) # Source: lll - # { (STATICCALL 300000 0 64 0 64 ) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.STATICCALL( - gas=0x493E0, - address=0xFEE7D85F02F84CE8917FA8300FEA57FF41AD47D7, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, + # { (def 'i 0x80) (for {} (< @i 50000) [i](+ @i 1) (EXTCODESIZE 1) ) } + addr_8 = pre.deploy_contract( # noqa: F841 + code=Op.JUMPDEST + + Op.JUMPI( + pc=0x1C, condition=Op.ISZERO(Op.LT(Op.MLOAD(offset=0x80), 0xC350)) ) + + Op.POP(Op.EXTCODESIZE(address=0x1)) + + Op.MSTORE(offset=0x80, value=Op.ADD(Op.MLOAD(offset=0x80), 0x1)) + + Op.JUMP(pc=0x0) + + Op.JUMPDEST + Op.STOP, nonce=0, - address=Address(0xBDA9155E6214FE759004E6FCBE736289EF800528), # noqa: E501 + address=Address(0x609E4DFE6190235B9A0362084C741D9EC330FB1E), # noqa: E501 ) # Source: lll # { (CALLCODE 120020 0 0 64 0 64 ) } # noqa: E501 @@ -140,32 +127,35 @@ def test_static_callcallcallcode_001_ooge_2( address=Address(0xFEE7D85F02F84CE8917FA8300FEA57FF41AD47D7), # noqa: E501 ) # Source: lll - # { (SSTORE 3 1) (MSTORE 3 1)} - addr_4 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) - + Op.MSTORE(offset=0x3, value=0x1) + # { (CALLCODE 120020 0 0 64 0 64 ) } # noqa: E501 + addr_7 = pre.deploy_contract( # noqa: F841 + code=Op.CALLCODE( + gas=0x1D4D4, + address=0x609E4DFE6190235B9A0362084C741D9EC330FB1E, + value=0x0, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ) + Op.STOP, nonce=0, - address=Address(0x9D41CA9233D19D3202BEFCEF33F16AF7201F0EAA), # noqa: E501 + address=Address(0xA7C64824C59E4295A3868A2B275AD46B38F7846D), # noqa: E501 ) # Source: lll - # { [[ 0 ]] (STATICCALL 500000 0 64 0 64 ) } # noqa: E501 - addr_5 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.STATICCALL( - gas=0x7A120, - address=0x2DB6829F13013D6280C5BE4F6A5E87DE274A3C47, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ), + # { (STATICCALL 300000 0 64 0 64 ) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.STATICCALL( + gas=0x493E0, + address=0xFEE7D85F02F84CE8917FA8300FEA57FF41AD47D7, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, ) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xED9009ABB678FB6E7898148DC46FA339EA580CBD), # noqa: E501 + address=Address(0xBDA9155E6214FE759004E6FCBE736289EF800528), # noqa: E501 ) # Source: lll # { (STATICCALL 300000 0 64 0 64 ) } # noqa: E501 @@ -183,37 +173,43 @@ def test_static_callcallcallcode_001_ooge_2( address=Address(0x2DB6829F13013D6280C5BE4F6A5E87DE274A3C47), # noqa: E501 ) # Source: lll - # { (CALLCODE 120020 0 0 64 0 64 ) } # noqa: E501 - addr_7 = pre.deploy_contract( # noqa: F841 - code=Op.CALLCODE( - gas=0x1D4D4, - address=0x609E4DFE6190235B9A0362084C741D9EC330FB1E, - value=0x0, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, + # { [[ 0 ]] (STATICCALL 500000 0 64 0 64 ) } # noqa: E501 + addr = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.STATICCALL( + gas=0x7A120, + address=0xBDA9155E6214FE759004E6FCBE736289EF800528, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ), ) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xA7C64824C59E4295A3868A2B275AD46B38F7846D), # noqa: E501 + address=Address(0x071587C3E5F2EBF88B2A5B048733778605ADDB28), # noqa: E501 ) # Source: lll - # { (def 'i 0x80) (for {} (< @i 50000) [i](+ @i 1) (EXTCODESIZE 1) ) } - addr_8 = pre.deploy_contract( # noqa: F841 - code=Op.JUMPDEST - + Op.JUMPI( - pc=0x1C, condition=Op.ISZERO(Op.LT(Op.MLOAD(offset=0x80), 0xC350)) + # { [[ 0 ]] (STATICCALL 500000 0 64 0 64 ) } # noqa: E501 + addr_5 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.STATICCALL( + gas=0x7A120, + address=0x2DB6829F13013D6280C5BE4F6A5E87DE274A3C47, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ), ) - + Op.POP(Op.EXTCODESIZE(address=0x1)) - + Op.MSTORE(offset=0x80, value=Op.ADD(Op.MLOAD(offset=0x80), 0x1)) - + Op.JUMP(pc=0x0) - + Op.JUMPDEST + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x609E4DFE6190235B9A0362084C741D9EC330FB1E), # noqa: E501 + address=Address(0xED9009ABB678FB6E7898148DC46FA339EA580CBD), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx_data = [ Hash(addr, left_padding=True), diff --git a/tests/ported_static/stStaticCall/test_static_callcallcallcode_001_oogm_after.py b/tests/ported_static/stStaticCall/test_static_callcallcallcode_001_oogm_after.py index f4c7bea28aa..01e13ccf801 100644 --- a/tests/ported_static/stStaticCall/test_static_callcallcallcode_001_oogm_after.py +++ b/tests/ported_static/stStaticCall/test_static_callcallcallcode_001_oogm_after.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -58,9 +57,7 @@ def test_static_callcallcallcode_001_oogm_after( ) -> None: """Test_static_callcallcallcode_001_oogm_after.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -92,23 +89,30 @@ def test_static_callcallcallcode_001_oogm_after( address=Address(0xF1F083974FD68B961E68130C27FC5EF37B49C1DF), # noqa: E501 ) # Source: lll - # { (MSTORE 3 1) (STATICCALL 400085 0 64 0 64 ) (SSTORE 3 1) } # noqa: E501 - addr = pre.deploy_contract( # noqa: F841 + # { (MSTORE 3 1) } + addr_4 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, + nonce=0, + address=Address(0x335C5531B84765A7626E6E76688F18B81BE5259C), # noqa: E501 + ) + # Source: lll + # { (MSTORE 3 1) (DELEGATECALL 120020 0 64 0 64 ) (MSTORE 32 1) } # noqa: E501 + addr_3 = pre.deploy_contract( # noqa: F841 code=Op.MSTORE(offset=0x3, value=0x1) + Op.POP( - Op.STATICCALL( - gas=0x61AD5, - address=0x265EEB9A84FEA22DA8B58252402B03BAFE1A6324, + Op.DELEGATECALL( + gas=0x1D4D4, + address=0x335C5531B84765A7626E6E76688F18B81BE5259C, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, ) ) - + Op.SSTORE(key=0x3, value=0x1) + + Op.MSTORE(offset=0x20, value=0x1) + Op.STOP, nonce=0, - address=Address(0x4CD868420CBC0E9D9BA63455A2D0A36CE0FABF2C), # noqa: E501 + address=Address(0x265EEB9A84FEA22DA8B58252402B03BAFE1A6324), # noqa: E501 ) # Source: lll # { (MSTORE 3 1) (STATICCALL 400085 0 64 0 64 ) (def 'i 0x80) (for {} (< @i 50000) [i](+ @i 1) (EXTCODESIZE 1) ) } # noqa: E501 @@ -137,32 +141,24 @@ def test_static_callcallcallcode_001_oogm_after( address=Address(0xEE8F7E38BE79A20210BA7860A51507505984E4ED), # noqa: E501 ) # Source: lll - # { (MSTORE 3 1) (DELEGATECALL 120020 0 64 0 64 ) (MSTORE 32 1) } # noqa: E501 - addr_3 = pre.deploy_contract( # noqa: F841 + # { (MSTORE 3 1) (STATICCALL 400085 0 64 0 64 ) (SSTORE 3 1) } # noqa: E501 + addr = pre.deploy_contract( # noqa: F841 code=Op.MSTORE(offset=0x3, value=0x1) + Op.POP( - Op.DELEGATECALL( - gas=0x1D4D4, - address=0x335C5531B84765A7626E6E76688F18B81BE5259C, + Op.STATICCALL( + gas=0x61AD5, + address=0x265EEB9A84FEA22DA8B58252402B03BAFE1A6324, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, ) ) - + Op.MSTORE(offset=0x20, value=0x1) + + Op.SSTORE(key=0x3, value=0x1) + Op.STOP, nonce=0, - address=Address(0x265EEB9A84FEA22DA8B58252402B03BAFE1A6324), # noqa: E501 - ) - # Source: lll - # { (MSTORE 3 1) } - addr_4 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, - nonce=0, - address=Address(0x335C5531B84765A7626E6E76688F18B81BE5259C), # noqa: E501 + address=Address(0x4CD868420CBC0E9D9BA63455A2D0A36CE0FABF2C), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx_data = [ Hash(addr, left_padding=True), diff --git a/tests/ported_static/stStaticCall/test_static_callcallcallcode_001_oogm_after2.py b/tests/ported_static/stStaticCall/test_static_callcallcallcode_001_oogm_after2.py index 353ab10b86c..51cf5aacb27 100644 --- a/tests/ported_static/stStaticCall/test_static_callcallcallcode_001_oogm_after2.py +++ b/tests/ported_static/stStaticCall/test_static_callcallcallcode_001_oogm_after2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -58,9 +57,7 @@ def test_static_callcallcallcode_001_oogm_after2( ) -> None: """Test_static_callcallcallcode_001_oogm_after2.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -92,6 +89,29 @@ def test_static_callcallcallcode_001_oogm_after2( address=Address(0xF1F083974FD68B961E68130C27FC5EF37B49C1DF), # noqa: E501 ) # Source: lll + # { (MSTORE 3 1) } + addr_4 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, + nonce=0, + address=Address(0x335C5531B84765A7626E6E76688F18B81BE5259C), # noqa: E501 + ) + # Source: lll + # { (CALLCODE 120020 0 0 64 0 64 ) } # noqa: E501 + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.CALLCODE( + gas=0x1D4D4, + address=0x335C5531B84765A7626E6E76688F18B81BE5259C, + value=0x0, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ) + + Op.STOP, + nonce=0, + address=Address(0xC26255D9FCF9D7D38D2734CD4E980B8C00ECEEF6), # noqa: E501 + ) + # Source: lll # { (STATICCALL 400080 0 64 0 64 ) (def 'i 0x80) (for {} (< @i 50000) [i](+ @i 1) (EXTCODESIZE 1) ) } # noqa: E501 addr = pre.deploy_contract( # noqa: F841 code=Op.POP( @@ -134,30 +154,6 @@ def test_static_callcallcallcode_001_oogm_after2( nonce=0, address=Address(0x171A4477DFE54503DD5F21DAF90429FD2F22D654), # noqa: E501 ) - # Source: lll - # { (CALLCODE 120020 0 0 64 0 64 ) } # noqa: E501 - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.CALLCODE( - gas=0x1D4D4, - address=0x335C5531B84765A7626E6E76688F18B81BE5259C, - value=0x0, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ) - + Op.STOP, - nonce=0, - address=Address(0xC26255D9FCF9D7D38D2734CD4E980B8C00ECEEF6), # noqa: E501 - ) - # Source: lll - # { (MSTORE 3 1) } - addr_4 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, - nonce=0, - address=Address(0x335C5531B84765A7626E6E76688F18B81BE5259C), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx_data = [ Hash(addr_2, left_padding=True), diff --git a/tests/ported_static/stStaticCall/test_static_callcallcallcode_001_oogm_after_2.py b/tests/ported_static/stStaticCall/test_static_callcallcallcode_001_oogm_after_2.py index 73b11d49b25..355583438ec 100644 --- a/tests/ported_static/stStaticCall/test_static_callcallcallcode_001_oogm_after_2.py +++ b/tests/ported_static/stStaticCall/test_static_callcallcallcode_001_oogm_after_2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -58,9 +57,7 @@ def test_static_callcallcallcode_001_oogm_after_2( ) -> None: """Test_static_callcallcallcode_001_oogm_after_2.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -92,6 +89,28 @@ def test_static_callcallcallcode_001_oogm_after_2( address=Address(0xF346244D7B72784053A685F7B1531B0D914911CA), # noqa: E501 ) # Source: lll + # { (MSTORE 3 1) } + addr_4 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, + nonce=0, + address=Address(0x335C5531B84765A7626E6E76688F18B81BE5259C), # noqa: E501 + ) + # Source: lll + # { (DELEGATECALL 120020 0 64 0 64 ) } # noqa: E501 + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.DELEGATECALL( + gas=0x1D4D4, + address=0x335C5531B84765A7626E6E76688F18B81BE5259C, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ) + + Op.STOP, + nonce=0, + address=Address(0x1067D2B507295358055ED9F68F74245839D6339F), # noqa: E501 + ) + # Source: lll # { (STATICCALL 400085 0 64 0 64 ) (def 'i 0x80) (for {} (< @i 50000) [i](+ @i 1) (EXTCODESIZE 1) ) } # noqa: E501 addr = pre.deploy_contract( # noqa: F841 code=Op.POP( @@ -134,29 +153,6 @@ def test_static_callcallcallcode_001_oogm_after_2( nonce=0, address=Address(0x4FDE3A9B8985C447BC5071EE2818F0FEEE56052F), # noqa: E501 ) - # Source: lll - # { (DELEGATECALL 120020 0 64 0 64 ) } # noqa: E501 - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.DELEGATECALL( - gas=0x1D4D4, - address=0x335C5531B84765A7626E6E76688F18B81BE5259C, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ) - + Op.STOP, - nonce=0, - address=Address(0x1067D2B507295358055ED9F68F74245839D6339F), # noqa: E501 - ) - # Source: lll - # { (MSTORE 3 1) } - addr_4 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, - nonce=0, - address=Address(0x335C5531B84765A7626E6E76688F18B81BE5259C), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx_data = [ Hash(addr_2, left_padding=True), diff --git a/tests/ported_static/stStaticCall/test_static_callcallcallcode_001_oogm_after_3.py b/tests/ported_static/stStaticCall/test_static_callcallcallcode_001_oogm_after_3.py index 9423d61c55c..2c4db1f7baf 100644 --- a/tests/ported_static/stStaticCall/test_static_callcallcallcode_001_oogm_after_3.py +++ b/tests/ported_static/stStaticCall/test_static_callcallcallcode_001_oogm_after_3.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -58,9 +57,7 @@ def test_static_callcallcallcode_001_oogm_after_3( ) -> None: """Test_static_callcallcallcode_001_oogm_after_3.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -92,6 +89,29 @@ def test_static_callcallcallcode_001_oogm_after_3( address=Address(0xF1F083974FD68B961E68130C27FC5EF37B49C1DF), # noqa: E501 ) # Source: lll + # { (MSTORE 3 1) } + addr_4 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, + nonce=0, + address=Address(0x335C5531B84765A7626E6E76688F18B81BE5259C), # noqa: E501 + ) + # Source: lll + # { (CALLCODE 120020 0 0 64 0 64 ) } # noqa: E501 + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.CALLCODE( + gas=0x1D4D4, + address=0x335C5531B84765A7626E6E76688F18B81BE5259C, + value=0x0, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ) + + Op.STOP, + nonce=0, + address=Address(0xC26255D9FCF9D7D38D2734CD4E980B8C00ECEEF6), # noqa: E501 + ) + # Source: lll # { (STATICCALL 400080 0 64 0 64 ) (SSTORE 3 1)} # noqa: E501 addr = pre.deploy_contract( # noqa: F841 code=Op.POP( @@ -134,30 +154,6 @@ def test_static_callcallcallcode_001_oogm_after_3( nonce=0, address=Address(0x813986A928F9829BA2BD6633D33083759F1990A3), # noqa: E501 ) - # Source: lll - # { (CALLCODE 120020 0 0 64 0 64 ) } # noqa: E501 - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.CALLCODE( - gas=0x1D4D4, - address=0x335C5531B84765A7626E6E76688F18B81BE5259C, - value=0x0, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ) - + Op.STOP, - nonce=0, - address=Address(0xC26255D9FCF9D7D38D2734CD4E980B8C00ECEEF6), # noqa: E501 - ) - # Source: lll - # { (MSTORE 3 1) } - addr_4 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, - nonce=0, - address=Address(0x335C5531B84765A7626E6E76688F18B81BE5259C), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx_data = [ Hash(addr, left_padding=True), diff --git a/tests/ported_static/stStaticCall/test_static_callcallcallcode_001_oogm_before.py b/tests/ported_static/stStaticCall/test_static_callcallcallcode_001_oogm_before.py index 58af3033e34..15838bdb067 100644 --- a/tests/ported_static/stStaticCall/test_static_callcallcallcode_001_oogm_before.py +++ b/tests/ported_static/stStaticCall/test_static_callcallcallcode_001_oogm_before.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -58,9 +57,7 @@ def test_static_callcallcallcode_001_oogm_before( ) -> None: """Test_static_callcallcallcode_001_oogm_before.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -71,6 +68,32 @@ def test_static_callcallcallcode_001_oogm_before( gas_limit=30000000, ) + # Source: lll + # { (MSTORE 3 1) (STATICCALL 400080 (CALLDATALOAD 0) 0 64 0 64 ) (MSTORE 32 1) } # noqa: E501 + addr = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + + Op.POP( + Op.STATICCALL( + gas=0x61AD0, + address=Op.CALLDATALOAD(offset=0x0), + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ) + ) + + Op.MSTORE(offset=0x20, value=0x1) + + Op.STOP, + nonce=0, + address=Address(0x10F374FCA091CACD3E57E847BA123BC16695C44E), # noqa: E501 + ) + # Source: lll + # { (MSTORE 3 1) } + addr_4 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, + nonce=0, + address=Address(0x335C5531B84765A7626E6E76688F18B81BE5259C), # noqa: E501 + ) # Source: lll # { (MSTORE 0 (CALLDATALOAD 0)) [[ 0 ]] (STATICCALL 600000 0 32 0 64 ) [[ 1 ]] 1 } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -93,23 +116,23 @@ def test_static_callcallcallcode_001_oogm_before( address=Address(0xC6DF53AF8AAF7C046B42CF493D4C6819EBEC7994), # noqa: E501 ) # Source: lll - # { (MSTORE 3 1) (STATICCALL 400080 (CALLDATALOAD 0) 0 64 0 64 ) (MSTORE 32 1) } # noqa: E501 - addr = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) + # { (SSTORE 1 1) (DELEGATECALL 120020 0 64 0 64 ) (MSTORE 3 1) } # noqa: E501 + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x1, value=0x1) + Op.POP( - Op.STATICCALL( - gas=0x61AD0, - address=Op.CALLDATALOAD(offset=0x0), + Op.DELEGATECALL( + gas=0x1D4D4, + address=0x335C5531B84765A7626E6E76688F18B81BE5259C, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, ) ) - + Op.MSTORE(offset=0x20, value=0x1) + + Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, nonce=0, - address=Address(0x10F374FCA091CACD3E57E847BA123BC16695C44E), # noqa: E501 + address=Address(0xEB89BE27EB1850F5F46204E0609023F43C2EDC35), # noqa: E501 ) # Source: lll # { (def 'i 0x80) (for {} (< @i 50000) [i](+ @i 1) (EXTCODESIZE 1) ) (DELEGATECALL 120020 0 64 0 64 ) (MSTORE 3 1) } # noqa: E501 @@ -137,33 +160,6 @@ def test_static_callcallcallcode_001_oogm_before( nonce=0, address=Address(0x8214B87BB9FD41ED6C19255D74B7FCC66178C4D5), # noqa: E501 ) - # Source: lll - # { (SSTORE 1 1) (DELEGATECALL 120020 0 64 0 64 ) (MSTORE 3 1) } # noqa: E501 - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x1, value=0x1) - + Op.POP( - Op.DELEGATECALL( - gas=0x1D4D4, - address=0x335C5531B84765A7626E6E76688F18B81BE5259C, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ) - ) - + Op.MSTORE(offset=0x3, value=0x1) - + Op.STOP, - nonce=0, - address=Address(0xEB89BE27EB1850F5F46204E0609023F43C2EDC35), # noqa: E501 - ) - # Source: lll - # { (MSTORE 3 1) } - addr_4 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, - nonce=0, - address=Address(0x335C5531B84765A7626E6E76688F18B81BE5259C), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx_data = [ Hash(addr_2, left_padding=True), diff --git a/tests/ported_static/stStaticCall/test_static_callcallcallcode_001_oogm_before2.py b/tests/ported_static/stStaticCall/test_static_callcallcallcode_001_oogm_before2.py index 93c55903a15..d9c0470221b 100644 --- a/tests/ported_static/stStaticCall/test_static_callcallcallcode_001_oogm_before2.py +++ b/tests/ported_static/stStaticCall/test_static_callcallcallcode_001_oogm_before2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -58,9 +57,7 @@ def test_static_callcallcallcode_001_oogm_before2( ) -> None: """Test_static_callcallcallcode_001_oogm_before2.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -71,27 +68,6 @@ def test_static_callcallcallcode_001_oogm_before2( gas_limit=30000000, ) - # Source: lll - # { (MSTORE 0 (CALLDATALOAD 0)) [[ 0 ]] (STATICCALL 600000 0 32 0 64 ) [[ 1 ]] 1 } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x0, value=Op.CALLDATALOAD(offset=0x0)) - + Op.SSTORE( - key=0x0, - value=Op.STATICCALL( - gas=0x927C0, - address=0x7BECA6585C70E19A4A6B3B0452A8C8867FEC95E8, - args_offset=0x0, - args_size=0x20, - ret_offset=0x0, - ret_size=0x40, - ), - ) - + Op.SSTORE(key=0x1, value=0x1) - + Op.STOP, - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0xC8CB56ED2B3BB8CB3E2F8CE276C85AD35D9AC1BF), # noqa: E501 - ) # Source: lll # { (MSTORE 0 (CALLDATALOAD 0)) (STATICCALL 400080 (CALLDATALOAD 0) 0 64 0 64 ) (MSTORE 32 1) } # noqa: E501 addr = pre.deploy_contract( # noqa: F841 @@ -112,21 +88,32 @@ def test_static_callcallcallcode_001_oogm_before2( address=Address(0x7BECA6585C70E19A4A6B3B0452A8C8867FEC95E8), # noqa: E501 ) # Source: lll - # { (SSTORE 1 1) (CALLCODE 120020 0 0 64 0 64 ) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x1, value=0x1) - + Op.CALLCODE( - gas=0x1D4D4, - address=0x335C5531B84765A7626E6E76688F18B81BE5259C, - value=0x0, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, + # { (MSTORE 3 1) } + addr_4 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, + nonce=0, + address=Address(0x335C5531B84765A7626E6E76688F18B81BE5259C), # noqa: E501 + ) + # Source: lll + # { (MSTORE 0 (CALLDATALOAD 0)) [[ 0 ]] (STATICCALL 600000 0 32 0 64 ) [[ 1 ]] 1 } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x0, value=Op.CALLDATALOAD(offset=0x0)) + + Op.SSTORE( + key=0x0, + value=Op.STATICCALL( + gas=0x927C0, + address=0x7BECA6585C70E19A4A6B3B0452A8C8867FEC95E8, + args_offset=0x0, + args_size=0x20, + ret_offset=0x0, + ret_size=0x40, + ), ) + + Op.SSTORE(key=0x1, value=0x1) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xEA6E38EC4F121597EEA4BAB20E02865062D20101), # noqa: E501 + address=Address(0xC8CB56ED2B3BB8CB3E2F8CE276C85AD35D9AC1BF), # noqa: E501 ) # Source: lll # { (def 'i 0x80) (for {} (< @i 50000) [i](+ @i 1) (EXTCODESIZE 1)) (CALLCODE 120020 0 0 64 0 64 ) } # noqa: E501 @@ -153,13 +140,22 @@ def test_static_callcallcallcode_001_oogm_before2( address=Address(0xCF0670B1AA38B467E493459F12AC3B22FDC4A12B), # noqa: E501 ) # Source: lll - # { (MSTORE 3 1) } - addr_4 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, + # { (SSTORE 1 1) (CALLCODE 120020 0 0 64 0 64 ) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x1, value=0x1) + + Op.CALLCODE( + gas=0x1D4D4, + address=0x335C5531B84765A7626E6E76688F18B81BE5259C, + value=0x0, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ) + + Op.STOP, nonce=0, - address=Address(0x335C5531B84765A7626E6E76688F18B81BE5259C), # noqa: E501 + address=Address(0xEA6E38EC4F121597EEA4BAB20E02865062D20101), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx_data = [ Hash(addr_2, left_padding=True), diff --git a/tests/ported_static/stStaticCall/test_static_callcallcallcode_001_suicide_end.py b/tests/ported_static/stStaticCall/test_static_callcallcallcode_001_suicide_end.py index bcd660b470e..a10e903b3f6 100644 --- a/tests/ported_static/stStaticCall/test_static_callcallcallcode_001_suicide_end.py +++ b/tests/ported_static/stStaticCall/test_static_callcallcallcode_001_suicide_end.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -36,9 +35,7 @@ def test_static_callcallcallcode_001_suicide_end( ) -> None: """Test_static_callcallcallcode_001_suicide_end.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,6 +46,14 @@ def test_static_callcallcallcode_001_suicide_end( gas_limit=30000000, ) + # Source: lll + # { (MSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, + balance=0x2540BE400, + nonce=0, + address=Address(0x48E2D4C0B593BFEBE5DDB4F13AA355B8BD83DDD3), # noqa: E501 + ) # Source: lll # { [[ 0 ]] (STATICCALL 150000 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -104,15 +109,6 @@ def test_static_callcallcallcode_001_suicide_end( nonce=0, address=Address(0x4A31DD3A8C3C9A793AC0B3C234A4DBAC2F201404), # noqa: E501 ) - # Source: lll - # { (MSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, - balance=0x2540BE400, - nonce=0, - address=Address(0x48E2D4C0B593BFEBE5DDB4F13AA355B8BD83DDD3), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_callcallcallcode_001_suicide_end2.py b/tests/ported_static/stStaticCall/test_static_callcallcallcode_001_suicide_end2.py index f2b2ae89a3a..18eb7c39182 100644 --- a/tests/ported_static/stStaticCall/test_static_callcallcallcode_001_suicide_end2.py +++ b/tests/ported_static/stStaticCall/test_static_callcallcallcode_001_suicide_end2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -36,9 +35,7 @@ def test_static_callcallcallcode_001_suicide_end2( ) -> None: """Test_static_callcallcallcode_001_suicide_end2.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,6 +46,14 @@ def test_static_callcallcallcode_001_suicide_end2( gas_limit=30000000, ) + # Source: lll + # { (MSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, + balance=0x2540BE400, + nonce=0, + address=Address(0x48E2D4C0B593BFEBE5DDB4F13AA355B8BD83DDD3), # noqa: E501 + ) # Source: lll # { [[ 0 ]] (STATICCALL 150000 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -105,15 +110,6 @@ def test_static_callcallcallcode_001_suicide_end2( nonce=0, address=Address(0x90E9B92C59A0E93D8AB0B7AFBC945D6999A50A9B), # noqa: E501 ) - # Source: lll - # { (MSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, - balance=0x2540BE400, - nonce=0, - address=Address(0x48E2D4C0B593BFEBE5DDB4F13AA355B8BD83DDD3), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_callcallcallcode_001_suicide_middle.py b/tests/ported_static/stStaticCall/test_static_callcallcallcode_001_suicide_middle.py index 1724215796a..ad2000d94ca 100644 --- a/tests/ported_static/stStaticCall/test_static_callcallcallcode_001_suicide_middle.py +++ b/tests/ported_static/stStaticCall/test_static_callcallcallcode_001_suicide_middle.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -36,9 +35,7 @@ def test_static_callcallcallcode_001_suicide_middle( ) -> None: """Test_static_callcallcallcode_001_suicide_middle.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,6 +46,14 @@ def test_static_callcallcallcode_001_suicide_middle( gas_limit=30000000, ) + # Source: lll + # { (MSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, + balance=0x2540BE400, + nonce=0, + address=Address(0x48E2D4C0B593BFEBE5DDB4F13AA355B8BD83DDD3), # noqa: E501 + ) # Source: lll # { [[ 0 ]] (STATICCALL 150000 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -108,15 +113,6 @@ def test_static_callcallcallcode_001_suicide_middle( nonce=0, address=Address(0xB40862EB0C1F073048AC62D867277B80B57BF6E0), # noqa: E501 ) - # Source: lll - # { (MSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, - balance=0x2540BE400, - nonce=0, - address=Address(0x48E2D4C0B593BFEBE5DDB4F13AA355B8BD83DDD3), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_callcallcallcode_001_suicide_middle2.py b/tests/ported_static/stStaticCall/test_static_callcallcallcode_001_suicide_middle2.py index ec4bef22a8c..a61da985eaa 100644 --- a/tests/ported_static/stStaticCall/test_static_callcallcallcode_001_suicide_middle2.py +++ b/tests/ported_static/stStaticCall/test_static_callcallcallcode_001_suicide_middle2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -36,9 +35,7 @@ def test_static_callcallcallcode_001_suicide_middle2( ) -> None: """Test_static_callcallcallcode_001_suicide_middle2.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,6 +46,14 @@ def test_static_callcallcallcode_001_suicide_middle2( gas_limit=30000000, ) + # Source: lll + # { (MSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, + balance=0x2540BE400, + nonce=0, + address=Address(0x48E2D4C0B593BFEBE5DDB4F13AA355B8BD83DDD3), # noqa: E501 + ) # Source: lll # { [[ 0 ]] (STATICCALL 150000 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -109,15 +114,6 @@ def test_static_callcallcallcode_001_suicide_middle2( nonce=0, address=Address(0x2DFE35A60D7DE3D8EEB1D7A015541C76B0E00E9F), # noqa: E501 ) - # Source: lll - # { (MSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, - balance=0x2540BE400, - nonce=0, - address=Address(0x48E2D4C0B593BFEBE5DDB4F13AA355B8BD83DDD3), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_callcallcallcode_abcb_recursive.py b/tests/ported_static/stStaticCall/test_static_callcallcallcode_abcb_recursive.py index 4f7c6e61031..a354022133e 100644 --- a/tests/ported_static/stStaticCall/test_static_callcallcallcode_abcb_recursive.py +++ b/tests/ported_static/stStaticCall/test_static_callcallcallcode_abcb_recursive.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -36,9 +35,7 @@ def test_static_callcallcallcode_abcb_recursive( ) -> None: """Test_static_callcallcallcode_abcb_recursive.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -109,7 +106,6 @@ def test_static_callcallcallcode_abcb_recursive( nonce=0, address=Address(0x458E20B622EC33A82F2A43A90EDC52A429639916), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_callcallcallcode_abcb_recursive2.py b/tests/ported_static/stStaticCall/test_static_callcallcallcode_abcb_recursive2.py index 017d9a98abf..10b220ca55d 100644 --- a/tests/ported_static/stStaticCall/test_static_callcallcallcode_abcb_recursive2.py +++ b/tests/ported_static/stStaticCall/test_static_callcallcallcode_abcb_recursive2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -36,9 +35,7 @@ def test_static_callcallcallcode_abcb_recursive2( ) -> None: """Test_static_callcallcallcode_abcb_recursive2.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -110,7 +107,6 @@ def test_static_callcallcallcode_abcb_recursive2( nonce=0, address=Address(0x812297C04813FEA96B943B246D9D17EA17545526), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_callcallcode_01_2.py b/tests/ported_static/stStaticCall/test_static_callcallcode_01_2.py index 6aa62646e8f..66ab50c76f3 100644 --- a/tests/ported_static/stStaticCall/test_static_callcallcode_01_2.py +++ b/tests/ported_static/stStaticCall/test_static_callcallcode_01_2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -59,9 +58,7 @@ def test_static_callcallcode_01_2( ) -> None: """Test_static_callcallcode_01_2.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -94,20 +91,18 @@ def test_static_callcallcode_01_2( address=Address(0xAAB59F13D96113334FAB5C68E4E62B61F6CBF647), # noqa: E501 ) # Source: lll - # { (STATICCALL 350000 0 32 0 64 ) } # noqa: E501 - addr = pre.deploy_contract( # noqa: F841 - code=Op.STATICCALL( - gas=0x55730, - address=0xC42C1601B039F8BB80A155B5B6AFB4CFFEB430A, - args_offset=0x0, - args_size=0x20, - ret_offset=0x0, - ret_size=0x40, - ) - + Op.STOP, - balance=0xDE0B6B3A7640000, + # { (MSTORE 0 0x11223344) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x0, value=0x11223344) + Op.STOP, nonce=0, - address=Address(0xFBE34B488C83765DE2F7FEFC646710B8F1DCB303), # noqa: E501 + address=Address(0x8AD8D964B0888C5016605939DD13E1BDCF679F05), # noqa: E501 + ) + # Source: lll + # { (MSTORE 0 0x11223344) } + addr_6 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x0, value=0x11223344) + Op.STOP, + nonce=0, + address=Address(0x2FCC143C5267B6C6CE4E1ABD936E84EEDFFD6A4E), # noqa: E501 ) # Source: lll # { (CALLCODE 250000 2 0 32 0 64 ) } # noqa: E501 @@ -127,18 +122,29 @@ def test_static_callcallcode_01_2( address=Address(0x0C42C1601B039F8BB80A155B5B6AFB4CFFEB430A), # noqa: E501 ) # Source: lll - # { (MSTORE 0 0x11223344) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x0, value=0x11223344) + Op.STOP, + # { (MSTORE 0 (CALLDATALOAD 0)) (CALLCODE 250000 0 0 32 0 64 ) } # noqa: E501 + addr_5 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x0, value=Op.CALLDATALOAD(offset=0x0)) + + Op.CALLCODE( + gas=0x3D090, + address=0x2FCC143C5267B6C6CE4E1ABD936E84EEDFFD6A4E, + value=0x0, + args_offset=0x0, + args_size=0x20, + ret_offset=0x0, + ret_size=0x40, + ) + + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x8AD8D964B0888C5016605939DD13E1BDCF679F05), # noqa: E501 + address=Address(0xF686A2E0E79C5FBB3407D5E53F3AB6B0AB21A51A), # noqa: E501 ) # Source: lll - # { (STATICCALL 350000 0 32 0 64 ) } # noqa: E501 - addr_4 = pre.deploy_contract( # noqa: F841 + # { (STATICCALL 350000 0 32 0 64 ) } # noqa: E501 + addr = pre.deploy_contract( # noqa: F841 code=Op.STATICCALL( gas=0x55730, - address=0xF686A2E0E79C5FBB3407D5E53F3AB6B0AB21A51A, + address=0xC42C1601B039F8BB80A155B5B6AFB4CFFEB430A, args_offset=0x0, args_size=0x20, ret_offset=0x0, @@ -147,16 +153,14 @@ def test_static_callcallcode_01_2( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xC766DCC7257DD2AF2B6A354FC922D43D3AD9A390), # noqa: E501 + address=Address(0xFBE34B488C83765DE2F7FEFC646710B8F1DCB303), # noqa: E501 ) # Source: lll - # { (MSTORE 0 (CALLDATALOAD 0)) (CALLCODE 250000 0 0 32 0 64 ) } # noqa: E501 - addr_5 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x0, value=Op.CALLDATALOAD(offset=0x0)) - + Op.CALLCODE( - gas=0x3D090, - address=0x2FCC143C5267B6C6CE4E1ABD936E84EEDFFD6A4E, - value=0x0, + # { (STATICCALL 350000 0 32 0 64 ) } # noqa: E501 + addr_4 = pre.deploy_contract( # noqa: F841 + code=Op.STATICCALL( + gas=0x55730, + address=0xF686A2E0E79C5FBB3407D5E53F3AB6B0AB21A51A, args_offset=0x0, args_size=0x20, ret_offset=0x0, @@ -165,16 +169,8 @@ def test_static_callcallcode_01_2( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xF686A2E0E79C5FBB3407D5E53F3AB6B0AB21A51A), # noqa: E501 - ) - # Source: lll - # { (MSTORE 0 0x11223344) } - addr_6 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x0, value=0x11223344) + Op.STOP, - nonce=0, - address=Address(0x2FCC143C5267B6C6CE4E1ABD936E84EEDFFD6A4E), # noqa: E501 + address=Address(0xC766DCC7257DD2AF2B6A354FC922D43D3AD9A390), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stStaticCall/test_static_callcallcode_01_ooge_2.py b/tests/ported_static/stStaticCall/test_static_callcallcode_01_ooge_2.py index 748fa769b0d..118b967f0dd 100644 --- a/tests/ported_static/stStaticCall/test_static_callcallcode_01_ooge_2.py +++ b/tests/ported_static/stStaticCall/test_static_callcallcode_01_ooge_2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -56,9 +55,7 @@ def test_static_callcallcode_01_ooge_2( ) -> None: """Test_static_callcallcode_01_ooge_2.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -69,27 +66,6 @@ def test_static_callcallcode_01_ooge_2( gas_limit=30000000, ) - # Source: lll - # { (MSTORE 0 (CALLDATALOAD 0)) [[ 0 ]] (STATICCALL 150000 0 32 0 64 ) [[ 1 ]] 1 } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x0, value=Op.CALLDATALOAD(offset=0x0)) - + Op.SSTORE( - key=0x0, - value=Op.STATICCALL( - gas=0x249F0, - address=0x85DDAAC1762B4B9A01861C244947C3D6F40FD709, - args_offset=0x0, - args_size=0x20, - ret_offset=0x0, - ret_size=0x40, - ), - ) - + Op.SSTORE(key=0x1, value=0x1) - + Op.STOP, - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0xC4C9495535A13D71C26E498898C90576F7C64218), # noqa: E501 - ) # Source: lll # { (CALLCODE 20020 (CALLDATALOAD 0) 0 0 64 0 64 ) } addr = pre.deploy_contract( # noqa: F841 @@ -130,7 +106,27 @@ def test_static_callcallcode_01_ooge_2( nonce=0, address=Address(0x609E4DFE6190235B9A0362084C741D9EC330FB1E), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: lll + # { (MSTORE 0 (CALLDATALOAD 0)) [[ 0 ]] (STATICCALL 150000 0 32 0 64 ) [[ 1 ]] 1 } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x0, value=Op.CALLDATALOAD(offset=0x0)) + + Op.SSTORE( + key=0x0, + value=Op.STATICCALL( + gas=0x249F0, + address=0x85DDAAC1762B4B9A01861C244947C3D6F40FD709, + args_offset=0x0, + args_size=0x20, + ret_offset=0x0, + ret_size=0x40, + ), + ) + + Op.SSTORE(key=0x1, value=0x1) + + Op.STOP, + balance=0xDE0B6B3A7640000, + nonce=0, + address=Address(0xC4C9495535A13D71C26E498898C90576F7C64218), # noqa: E501 + ) tx_data = [ Hash(addr_2, left_padding=True), diff --git a/tests/ported_static/stStaticCall/test_static_callcallcode_01_suicide_end.py b/tests/ported_static/stStaticCall/test_static_callcallcode_01_suicide_end.py index 8ae8c36e2ac..8d063a6dc55 100644 --- a/tests/ported_static/stStaticCall/test_static_callcallcode_01_suicide_end.py +++ b/tests/ported_static/stStaticCall/test_static_callcallcode_01_suicide_end.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,9 +33,7 @@ def test_static_callcallcode_01_suicide_end( ) -> None: """Test_static_callcallcode_01_suicide_end.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -47,6 +44,14 @@ def test_static_callcallcode_01_suicide_end( gas_limit=30000000, ) + # Source: lll + # { (MSTORE 2 1) } + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x2, value=0x1) + Op.STOP, + balance=0x2540BE400, + nonce=0, + address=Address(0xCFB5784A5E49924BECC2D5C5D2EE0A9B141E6216), # noqa: E501 + ) # Source: lll # { [[ 0 ]] (STATICCALL 150000 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -86,15 +91,6 @@ def test_static_callcallcode_01_suicide_end( nonce=0, address=Address(0x0F25670A9CA7BFA523E8B216478051E908ECE142), # noqa: E501 ) - # Source: lll - # { (MSTORE 2 1) } - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x2, value=0x1) + Op.STOP, - balance=0x2540BE400, - nonce=0, - address=Address(0xCFB5784A5E49924BECC2D5C5D2EE0A9B141E6216), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_callcallcode_01_suicide_end2.py b/tests/ported_static/stStaticCall/test_static_callcallcode_01_suicide_end2.py index ec2e5bc44ef..3523798982a 100644 --- a/tests/ported_static/stStaticCall/test_static_callcallcode_01_suicide_end2.py +++ b/tests/ported_static/stStaticCall/test_static_callcallcode_01_suicide_end2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,9 +33,7 @@ def test_static_callcallcode_01_suicide_end2( ) -> None: """Test_static_callcallcode_01_suicide_end2.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -47,6 +44,14 @@ def test_static_callcallcode_01_suicide_end2( gas_limit=30000000, ) + # Source: lll + # { (MSTORE 2 1) } + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x2, value=0x1) + Op.STOP, + balance=0x2540BE400, + nonce=0, + address=Address(0xCFB5784A5E49924BECC2D5C5D2EE0A9B141E6216), # noqa: E501 + ) # Source: lll # { [[ 0 ]] (STATICCALL 150000 0 64 0 64 ) [[ 1 ]] 1} # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -87,15 +92,6 @@ def test_static_callcallcode_01_suicide_end2( nonce=0, address=Address(0x5DE1C119E1FC3598726F4D9411DEBD7ED1402187), # noqa: E501 ) - # Source: lll - # { (MSTORE 2 1) } - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x2, value=0x1) + Op.STOP, - balance=0x2540BE400, - nonce=0, - address=Address(0xCFB5784A5E49924BECC2D5C5D2EE0A9B141E6216), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_callcallcodecall_010.py b/tests/ported_static/stStaticCall/test_static_callcallcodecall_010.py index c4bb1d40ffb..e0b2ba42ed1 100644 --- a/tests/ported_static/stStaticCall/test_static_callcallcodecall_010.py +++ b/tests/ported_static/stStaticCall/test_static_callcallcodecall_010.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,9 +33,7 @@ def test_static_callcallcodecall_010( ) -> None: """Test_static_callcallcodecall_010.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -48,24 +45,29 @@ def test_static_callcallcodecall_010( ) # Source: lll - # { [[ 0 ]] (STATICCALL 350000 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.STATICCALL( - gas=0x55730, - address=0x8BD89F495B3F37357D15A16D7B0F72470ABE929F, + # { (MSTORE 1 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x1, value=0x1) + Op.STOP, + nonce=0, + ) + # Source: lll + # { (MSTORE 3 1) (STATICCALL 250000 0 64 0 64 ) (MSTORE 3 1)} # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + + Op.POP( + Op.STATICCALL( + gas=0x3D090, + address=addr_3, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, - ), + ) ) - + Op.SSTORE(key=0x1, value=0x1) + + Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x46DF4A924470CB27A2F8700239656C40DD4794C8), # noqa: E501 ) # Source: lll # { (MSTORE 3 1) (DELEGATECALL 300000 0 64 0 64 ) (MSTORE 3 1) } # noqa: E501 @@ -74,7 +76,7 @@ def test_static_callcallcodecall_010( + Op.POP( Op.DELEGATECALL( gas=0x493E0, - address=0x5AAEF6827794656B94367D6130F40D34B219F1FD, + address=addr_2, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -85,36 +87,26 @@ def test_static_callcallcodecall_010( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x8BD89F495B3F37357D15A16D7B0F72470ABE929F), # noqa: E501 ) # Source: lll - # { (MSTORE 3 1) (STATICCALL 250000 0 64 0 64 ) (MSTORE 3 1)} # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) - + Op.POP( - Op.STATICCALL( - gas=0x3D090, - address=0x2A142C79A9B097C111CE945214226126B75E332C, + # { [[ 0 ]] (STATICCALL 350000 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.STATICCALL( + gas=0x55730, + address=addr, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, - ) + ), ) - + Op.MSTORE(offset=0x3, value=0x1) + + Op.SSTORE(key=0x1, value=0x1) + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x5AAEF6827794656B94367D6130F40D34B219F1FD), # noqa: E501 - ) - # Source: lll - # { (MSTORE 1 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x1, value=0x1) + Op.STOP, - nonce=0, - address=Address(0x2A142C79A9B097C111CE945214226126B75E332C), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_callcallcodecall_010_2.py b/tests/ported_static/stStaticCall/test_static_callcallcodecall_010_2.py index c84ff19ab31..fbd6b903580 100644 --- a/tests/ported_static/stStaticCall/test_static_callcallcodecall_010_2.py +++ b/tests/ported_static/stStaticCall/test_static_callcallcodecall_010_2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -59,9 +58,7 @@ def test_static_callcallcodecall_010_2( ) -> None: """Test_static_callcallcodecall_010_2.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -93,12 +90,18 @@ def test_static_callcallcodecall_010_2( address=Address(0x04FEBA02513BFA1CF1456A0F32838B186775D8D4), # noqa: E501 ) # Source: lll - # { (CALLCODE 300000 2 0 64 0 64 ) } # noqa: E501 - addr = pre.deploy_contract( # noqa: F841 - code=Op.CALLCODE( - gas=0x493E0, - address=0xEF859513AE36C397C43170A2980741575916167B, - value=0x2, + # { (MSTORE 3 1) } + addr_4 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, + nonce=0, + address=Address(0x335C5531B84765A7626E6E76688F18B81BE5259C), # noqa: E501 + ) + # Source: lll + # { (STATICCALL 250000 0 64 0 64 ) } # noqa: E501 + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.STATICCALL( + gas=0x3D090, + address=0x335C5531B84765A7626E6E76688F18B81BE5259C, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -107,7 +110,7 @@ def test_static_callcallcodecall_010_2( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x6B21D14FFAE42852FC3A6F98DA6275E551C07008), # noqa: E501 + address=Address(0xEF859513AE36C397C43170A2980741575916167B), # noqa: E501 ) # Source: lll # { (CALLCODE 300000 0 0 64 0 64 ) } # noqa: E501 @@ -127,11 +130,12 @@ def test_static_callcallcodecall_010_2( address=Address(0xD450D1D19AEFB5A30DC4A483DB88E86C215C67A0), # noqa: E501 ) # Source: lll - # { (STATICCALL 250000 0 64 0 64 ) } # noqa: E501 - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.STATICCALL( - gas=0x3D090, - address=0x335C5531B84765A7626E6E76688F18B81BE5259C, + # { (CALLCODE 300000 2 0 64 0 64 ) } # noqa: E501 + addr = pre.deploy_contract( # noqa: F841 + code=Op.CALLCODE( + gas=0x493E0, + address=0xEF859513AE36C397C43170A2980741575916167B, + value=0x2, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -140,16 +144,8 @@ def test_static_callcallcodecall_010_2( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xEF859513AE36C397C43170A2980741575916167B), # noqa: E501 - ) - # Source: lll - # { (MSTORE 3 1) } - addr_4 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, - nonce=0, - address=Address(0x335C5531B84765A7626E6E76688F18B81BE5259C), # noqa: E501 + address=Address(0x6B21D14FFAE42852FC3A6F98DA6275E551C07008), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stStaticCall/test_static_callcallcodecall_010_ooge.py b/tests/ported_static/stStaticCall/test_static_callcallcodecall_010_ooge.py index 65d3a0b358c..ba5737462ae 100644 --- a/tests/ported_static/stStaticCall/test_static_callcallcodecall_010_ooge.py +++ b/tests/ported_static/stStaticCall/test_static_callcallcodecall_010_ooge.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -56,9 +55,7 @@ def test_static_callcallcodecall_010_ooge( ) -> None: """Test_static_callcallcodecall_010_ooge.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -69,6 +66,31 @@ def test_static_callcallcodecall_010_ooge( gas_limit=30000000, ) + # Source: lll + # { (DELEGATECALL 300000 (CALLDATALOAD 0) 0 64 0 64 ) (MSTORE 1 1) } + addr = pre.deploy_contract( # noqa: F841 + code=Op.POP( + Op.DELEGATECALL( + gas=0x493E0, + address=Op.CALLDATALOAD(offset=0x0), + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ) + ) + + Op.MSTORE(offset=0x1, value=0x1) + + Op.STOP, + nonce=0, + address=Address(0x39C3AAD8C9ECF3BE71828CAFFEEE06727FDA4679), # noqa: E501 + ) + # Source: lll + # { (MSTORE 3 1) } + addr_4 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, + nonce=0, + address=Address(0x335C5531B84765A7626E6E76688F18B81BE5259C), # noqa: E501 + ) # Source: lll # { (MSTORE 0 (CALLDATALOAD 0)) [[ 0 ]] (STATICCALL 500000 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -91,22 +113,22 @@ def test_static_callcallcodecall_010_ooge( address=Address(0x33344FF747B678F9E86028B0C745D8AB0E0D1792), # noqa: E501 ) # Source: lll - # { (DELEGATECALL 300000 (CALLDATALOAD 0) 0 64 0 64 ) (MSTORE 1 1) } - addr = pre.deploy_contract( # noqa: F841 + # { (STATICCALL 120020 0 64 0 64 ) (SSTORE 1 1) } # noqa: E501 + addr_3 = pre.deploy_contract( # noqa: F841 code=Op.POP( - Op.DELEGATECALL( - gas=0x493E0, - address=Op.CALLDATALOAD(offset=0x0), + Op.STATICCALL( + gas=0x1D4D4, + address=0x335C5531B84765A7626E6E76688F18B81BE5259C, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, ) ) - + Op.MSTORE(offset=0x1, value=0x1) + + Op.SSTORE(key=0x1, value=0x1) + Op.STOP, nonce=0, - address=Address(0x39C3AAD8C9ECF3BE71828CAFFEEE06727FDA4679), # noqa: E501 + address=Address(0xC45FE363C9AC4E1FEED02B03A212FDF979A74505), # noqa: E501 ) # Source: lll # { (STATICCALL 120020 0 64 0 64 ) (def 'i 0x80) (for {} (< @i 50000) [i](+ @i 1) (EXTCODESIZE 1)) } # noqa: E501 @@ -133,32 +155,6 @@ def test_static_callcallcodecall_010_ooge( nonce=0, address=Address(0x0D195FCCF4102D8B6B6798768727AE0915C88ED7), # noqa: E501 ) - # Source: lll - # { (STATICCALL 120020 0 64 0 64 ) (SSTORE 1 1) } # noqa: E501 - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.POP( - Op.STATICCALL( - gas=0x1D4D4, - address=0x335C5531B84765A7626E6E76688F18B81BE5259C, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ) - ) - + Op.SSTORE(key=0x1, value=0x1) - + Op.STOP, - nonce=0, - address=Address(0xC45FE363C9AC4E1FEED02B03A212FDF979A74505), # noqa: E501 - ) - # Source: lll - # { (MSTORE 3 1) } - addr_4 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, - nonce=0, - address=Address(0x335C5531B84765A7626E6E76688F18B81BE5259C), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx_data = [ Hash(addr_2, left_padding=True), diff --git a/tests/ported_static/stStaticCall/test_static_callcallcodecall_010_ooge_2.py b/tests/ported_static/stStaticCall/test_static_callcallcodecall_010_ooge_2.py index 7e4c489ef97..ab06fb60786 100644 --- a/tests/ported_static/stStaticCall/test_static_callcallcodecall_010_ooge_2.py +++ b/tests/ported_static/stStaticCall/test_static_callcallcodecall_010_ooge_2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -56,9 +55,7 @@ def test_static_callcallcodecall_010_ooge_2( ) -> None: """Test_static_callcallcodecall_010_ooge_2.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -69,44 +66,6 @@ def test_static_callcallcodecall_010_ooge_2( gas_limit=30000000, ) - # Source: lll - # { (MSTORE 0 (CALLDATALOAD 0)) [[ 0 ]] (STATICCALL 350000 0 32 0 64 ) [[ 1 ]] 1 } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x0, value=Op.CALLDATALOAD(offset=0x0)) - + Op.SSTORE( - key=0x0, - value=Op.STATICCALL( - gas=0x55730, - address=0x87B79D9A4C004A23C7A12074BA8DA784E201EA8C, - args_offset=0x0, - args_size=0x20, - ret_offset=0x0, - ret_size=0x40, - ), - ) - + Op.SSTORE(key=0x1, value=0x1) - + Op.STOP, - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0x519393D984BEAF4FD226309E9F0704B2DB3164B5), # noqa: E501 - ) - # Source: lll - # { (MSTORE 0 (CALLDATALOAD 0)) (CALLCODE 200000 0 0 32 0 64 ) } # noqa: E501 - addr = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x0, value=Op.CALLDATALOAD(offset=0x0)) - + Op.CALLCODE( - gas=0x30D40, - address=0x77E67836C6A30F95E117469CAEFB6C1FDCAD0C2E, - value=0x0, - args_offset=0x0, - args_size=0x20, - ret_offset=0x0, - ret_size=0x40, - ) - + Op.STOP, - nonce=0, - address=Address(0x87B79D9A4C004A23C7A12074BA8DA784E201EA8C), # noqa: E501 - ) # Source: lll # { (STATICCALL 120020 (CALLDATALOAD 0) 0 64 0 64 ) } addr_2 = pre.deploy_contract( # noqa: F841 @@ -144,7 +103,44 @@ def test_static_callcallcodecall_010_ooge_2( nonce=0, address=Address(0xFBEF21C5A6C2ADCF3D769F085E0CC9FE9A8DF954), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: lll + # { (MSTORE 0 (CALLDATALOAD 0)) (CALLCODE 200000 0 0 32 0 64 ) } # noqa: E501 + addr = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x0, value=Op.CALLDATALOAD(offset=0x0)) + + Op.CALLCODE( + gas=0x30D40, + address=0x77E67836C6A30F95E117469CAEFB6C1FDCAD0C2E, + value=0x0, + args_offset=0x0, + args_size=0x20, + ret_offset=0x0, + ret_size=0x40, + ) + + Op.STOP, + nonce=0, + address=Address(0x87B79D9A4C004A23C7A12074BA8DA784E201EA8C), # noqa: E501 + ) + # Source: lll + # { (MSTORE 0 (CALLDATALOAD 0)) [[ 0 ]] (STATICCALL 350000 0 32 0 64 ) [[ 1 ]] 1 } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x0, value=Op.CALLDATALOAD(offset=0x0)) + + Op.SSTORE( + key=0x0, + value=Op.STATICCALL( + gas=0x55730, + address=0x87B79D9A4C004A23C7A12074BA8DA784E201EA8C, + args_offset=0x0, + args_size=0x20, + ret_offset=0x0, + ret_size=0x40, + ), + ) + + Op.SSTORE(key=0x1, value=0x1) + + Op.STOP, + balance=0xDE0B6B3A7640000, + nonce=0, + address=Address(0x519393D984BEAF4FD226309E9F0704B2DB3164B5), # noqa: E501 + ) tx_data = [ Hash(addr_3, left_padding=True), diff --git a/tests/ported_static/stStaticCall/test_static_callcallcodecall_010_oogm_after.py b/tests/ported_static/stStaticCall/test_static_callcallcodecall_010_oogm_after.py index e85db624c08..9cc19c3222d 100644 --- a/tests/ported_static/stStaticCall/test_static_callcallcodecall_010_oogm_after.py +++ b/tests/ported_static/stStaticCall/test_static_callcallcodecall_010_oogm_after.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -58,9 +57,7 @@ def test_static_callcallcodecall_010_oogm_after( ) -> None: """Test_static_callcallcodecall_010_oogm_after.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -92,22 +89,26 @@ def test_static_callcallcodecall_010_oogm_after( address=Address(0xF1F083974FD68B961E68130C27FC5EF37B49C1DF), # noqa: E501 ) # Source: lll - # { (DELEGATECALL 400080 0 64 0 64 ) (SSTORE 3 1) } # noqa: E501 - addr = pre.deploy_contract( # noqa: F841 - code=Op.POP( - Op.DELEGATECALL( - gas=0x61AD0, - address=0x5AD1F77E14FE15F07A2F5DF1480DCABA5B4B6435, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ) + # { (MSTORE 3 1) } + addr_4 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, + nonce=0, + address=Address(0x335C5531B84765A7626E6E76688F18B81BE5259C), # noqa: E501 + ) + # Source: lll + # { (STATICCALL 120040 0 64 0 64 ) } # noqa: E501 + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.STATICCALL( + gas=0x1D4E8, + address=0x335C5531B84765A7626E6E76688F18B81BE5259C, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, ) - + Op.SSTORE(key=0x3, value=0x1) + Op.STOP, nonce=0, - address=Address(0xC00FBA9C86D497814A90912F8F6C63801EA59908), # noqa: E501 + address=Address(0x5AD1F77E14FE15F07A2F5DF1480DCABA5B4B6435), # noqa: E501 ) # Source: lll # { (DELEGATECALL 400080 0 64 0 64 ) (def 'i 0x80) (for {} (< @i 50000) [i](+ @i 1) (EXTCODESIZE 1)) } # noqa: E501 @@ -135,28 +136,23 @@ def test_static_callcallcodecall_010_oogm_after( address=Address(0x3A2FB8850EEA3CBD892BB77FF68DA146EAD9C49D), # noqa: E501 ) # Source: lll - # { (STATICCALL 120040 0 64 0 64 ) } # noqa: E501 - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.STATICCALL( - gas=0x1D4E8, - address=0x335C5531B84765A7626E6E76688F18B81BE5259C, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, + # { (DELEGATECALL 400080 0 64 0 64 ) (SSTORE 3 1) } # noqa: E501 + addr = pre.deploy_contract( # noqa: F841 + code=Op.POP( + Op.DELEGATECALL( + gas=0x61AD0, + address=0x5AD1F77E14FE15F07A2F5DF1480DCABA5B4B6435, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ) ) + + Op.SSTORE(key=0x3, value=0x1) + Op.STOP, nonce=0, - address=Address(0x5AD1F77E14FE15F07A2F5DF1480DCABA5B4B6435), # noqa: E501 - ) - # Source: lll - # { (MSTORE 3 1) } - addr_4 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, - nonce=0, - address=Address(0x335C5531B84765A7626E6E76688F18B81BE5259C), # noqa: E501 + address=Address(0xC00FBA9C86D497814A90912F8F6C63801EA59908), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx_data = [ Hash(addr, left_padding=True), diff --git a/tests/ported_static/stStaticCall/test_static_callcallcodecall_010_oogm_after2.py b/tests/ported_static/stStaticCall/test_static_callcallcodecall_010_oogm_after2.py index eba102b6f35..2a2ed4e6b12 100644 --- a/tests/ported_static/stStaticCall/test_static_callcallcodecall_010_oogm_after2.py +++ b/tests/ported_static/stStaticCall/test_static_callcallcodecall_010_oogm_after2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -58,9 +57,7 @@ def test_static_callcallcodecall_010_oogm_after2( ) -> None: """Test_static_callcallcodecall_010_oogm_after2.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -92,8 +89,30 @@ def test_static_callcallcodecall_010_oogm_after2( address=Address(0x652A62E8338E91A46AA8387A2C205F35F79347AB), # noqa: E501 ) # Source: lll - # { (CALLCODE 400080 0 0 64 0 64 ) (def 'i 0x80) (for {} (< @i 50000) [i](+ @i 1) (EXTCODESIZE 1)) } # noqa: E501 - addr = pre.deploy_contract( # noqa: F841 + # { (MSTORE 3 1) } + addr_4 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, + nonce=0, + address=Address(0x335C5531B84765A7626E6E76688F18B81BE5259C), # noqa: E501 + ) + # Source: lll + # { (STATICCALL 120020 0 64 0 64 ) } # noqa: E501 + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.STATICCALL( + gas=0x1D4D4, + address=0x335C5531B84765A7626E6E76688F18B81BE5259C, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ) + + Op.STOP, + nonce=0, + address=Address(0x6F67C62FA385EDFE7BD280594EFF367F33E51438), # noqa: E501 + ) + # Source: lll + # { (CALLCODE 400080 0 0 64 0 64 ) (SSTORE 1 1) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 code=Op.POP( Op.CALLCODE( gas=0x61AD0, @@ -105,21 +124,14 @@ def test_static_callcallcodecall_010_oogm_after2( ret_size=0x40, ) ) - + Op.JUMPDEST - + Op.JUMPI( - pc=0x41, condition=Op.ISZERO(Op.LT(Op.MLOAD(offset=0x80), 0xC350)) - ) - + Op.POP(Op.EXTCODESIZE(address=0x1)) - + Op.MSTORE(offset=0x80, value=Op.ADD(Op.MLOAD(offset=0x80), 0x1)) - + Op.JUMP(pc=0x25) - + Op.JUMPDEST + + Op.SSTORE(key=0x1, value=0x1) + Op.STOP, nonce=0, - address=Address(0x4C57F5C93FEB3AF1807980230371459B773A1F88), # noqa: E501 + address=Address(0xCE0959EC3EC0C6527232DB11B856879585AFB0BB), # noqa: E501 ) # Source: lll - # { (CALLCODE 400080 0 0 64 0 64 ) (SSTORE 1 1) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 + # { (CALLCODE 400080 0 0 64 0 64 ) (def 'i 0x80) (for {} (< @i 50000) [i](+ @i 1) (EXTCODESIZE 1)) } # noqa: E501 + addr = pre.deploy_contract( # noqa: F841 code=Op.POP( Op.CALLCODE( gas=0x61AD0, @@ -131,34 +143,18 @@ def test_static_callcallcodecall_010_oogm_after2( ret_size=0x40, ) ) - + Op.SSTORE(key=0x1, value=0x1) - + Op.STOP, - nonce=0, - address=Address(0xCE0959EC3EC0C6527232DB11B856879585AFB0BB), # noqa: E501 - ) - # Source: lll - # { (STATICCALL 120020 0 64 0 64 ) } # noqa: E501 - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.STATICCALL( - gas=0x1D4D4, - address=0x335C5531B84765A7626E6E76688F18B81BE5259C, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, + + Op.JUMPDEST + + Op.JUMPI( + pc=0x41, condition=Op.ISZERO(Op.LT(Op.MLOAD(offset=0x80), 0xC350)) ) + + Op.POP(Op.EXTCODESIZE(address=0x1)) + + Op.MSTORE(offset=0x80, value=Op.ADD(Op.MLOAD(offset=0x80), 0x1)) + + Op.JUMP(pc=0x25) + + Op.JUMPDEST + Op.STOP, nonce=0, - address=Address(0x6F67C62FA385EDFE7BD280594EFF367F33E51438), # noqa: E501 - ) - # Source: lll - # { (MSTORE 3 1) } - addr_4 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, - nonce=0, - address=Address(0x335C5531B84765A7626E6E76688F18B81BE5259C), # noqa: E501 + address=Address(0x4C57F5C93FEB3AF1807980230371459B773A1F88), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx_data = [ Hash(addr, left_padding=True), diff --git a/tests/ported_static/stStaticCall/test_static_callcallcodecall_010_oogm_after_2.py b/tests/ported_static/stStaticCall/test_static_callcallcodecall_010_oogm_after_2.py index 9f6d9cb873d..1ab56099a4e 100644 --- a/tests/ported_static/stStaticCall/test_static_callcallcodecall_010_oogm_after_2.py +++ b/tests/ported_static/stStaticCall/test_static_callcallcodecall_010_oogm_after_2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -58,9 +57,7 @@ def test_static_callcallcodecall_010_oogm_after_2( ) -> None: """Test_static_callcallcodecall_010_oogm_after_2.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -92,22 +89,26 @@ def test_static_callcallcodecall_010_oogm_after_2( address=Address(0xF1F083974FD68B961E68130C27FC5EF37B49C1DF), # noqa: E501 ) # Source: lll - # { (DELEGATECALL 400080 0 64 0 64 ) (SSTORE 3 1) } # noqa: E501 - addr = pre.deploy_contract( # noqa: F841 - code=Op.POP( - Op.DELEGATECALL( - gas=0x61AD0, - address=0x5AD1F77E14FE15F07A2F5DF1480DCABA5B4B6435, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ) + # { (MSTORE 3 1) } + addr_4 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, + nonce=0, + address=Address(0x335C5531B84765A7626E6E76688F18B81BE5259C), # noqa: E501 + ) + # Source: lll + # { (STATICCALL 120040 0 64 0 64 ) } # noqa: E501 + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.STATICCALL( + gas=0x1D4E8, + address=0x335C5531B84765A7626E6E76688F18B81BE5259C, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, ) - + Op.SSTORE(key=0x3, value=0x1) + Op.STOP, nonce=0, - address=Address(0xC00FBA9C86D497814A90912F8F6C63801EA59908), # noqa: E501 + address=Address(0x5AD1F77E14FE15F07A2F5DF1480DCABA5B4B6435), # noqa: E501 ) # Source: lll # { (DELEGATECALL 400080 0 64 0 64 ) (def 'i 0x80) (for {} (< @i 50000) [i](+ @i 1) (EXTCODESIZE 1)) } # noqa: E501 @@ -135,28 +136,23 @@ def test_static_callcallcodecall_010_oogm_after_2( address=Address(0x3A2FB8850EEA3CBD892BB77FF68DA146EAD9C49D), # noqa: E501 ) # Source: lll - # { (STATICCALL 120040 0 64 0 64 ) } # noqa: E501 - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.STATICCALL( - gas=0x1D4E8, - address=0x335C5531B84765A7626E6E76688F18B81BE5259C, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, + # { (DELEGATECALL 400080 0 64 0 64 ) (SSTORE 3 1) } # noqa: E501 + addr = pre.deploy_contract( # noqa: F841 + code=Op.POP( + Op.DELEGATECALL( + gas=0x61AD0, + address=0x5AD1F77E14FE15F07A2F5DF1480DCABA5B4B6435, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ) ) + + Op.SSTORE(key=0x3, value=0x1) + Op.STOP, nonce=0, - address=Address(0x5AD1F77E14FE15F07A2F5DF1480DCABA5B4B6435), # noqa: E501 - ) - # Source: lll - # { (MSTORE 3 1) } - addr_4 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, - nonce=0, - address=Address(0x335C5531B84765A7626E6E76688F18B81BE5259C), # noqa: E501 + address=Address(0xC00FBA9C86D497814A90912F8F6C63801EA59908), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx_data = [ Hash(addr, left_padding=True), diff --git a/tests/ported_static/stStaticCall/test_static_callcallcodecall_010_oogm_after_3.py b/tests/ported_static/stStaticCall/test_static_callcallcodecall_010_oogm_after_3.py index 189f11e2686..1ad57cf628e 100644 --- a/tests/ported_static/stStaticCall/test_static_callcallcodecall_010_oogm_after_3.py +++ b/tests/ported_static/stStaticCall/test_static_callcallcodecall_010_oogm_after_3.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -58,9 +57,7 @@ def test_static_callcallcodecall_010_oogm_after_3( ) -> None: """Test_static_callcallcodecall_010_oogm_after_3.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -92,6 +89,28 @@ def test_static_callcallcodecall_010_oogm_after_3( address=Address(0xF1F083974FD68B961E68130C27FC5EF37B49C1DF), # noqa: E501 ) # Source: lll + # { (MSTORE 3 1) } + addr_4 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, + nonce=0, + address=Address(0x335C5531B84765A7626E6E76688F18B81BE5259C), # noqa: E501 + ) + # Source: lll + # { (STATICCALL 120020 0 64 0 64 ) } # noqa: E501 + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.STATICCALL( + gas=0x1D4D4, + address=0x335C5531B84765A7626E6E76688F18B81BE5259C, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ) + + Op.STOP, + nonce=0, + address=Address(0x6F67C62FA385EDFE7BD280594EFF367F33E51438), # noqa: E501 + ) + # Source: lll # { (CALLCODE 400080 0 0 64 0 64 ) (SSTORE 3 1) } # noqa: E501 addr = pre.deploy_contract( # noqa: F841 code=Op.POP( @@ -136,29 +155,6 @@ def test_static_callcallcodecall_010_oogm_after_3( nonce=0, address=Address(0x4C57F5C93FEB3AF1807980230371459B773A1F88), # noqa: E501 ) - # Source: lll - # { (STATICCALL 120020 0 64 0 64 ) } # noqa: E501 - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.STATICCALL( - gas=0x1D4D4, - address=0x335C5531B84765A7626E6E76688F18B81BE5259C, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ) - + Op.STOP, - nonce=0, - address=Address(0x6F67C62FA385EDFE7BD280594EFF367F33E51438), # noqa: E501 - ) - # Source: lll - # { (MSTORE 3 1) } - addr_4 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, - nonce=0, - address=Address(0x335C5531B84765A7626E6E76688F18B81BE5259C), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx_data = [ Hash(addr, left_padding=True), diff --git a/tests/ported_static/stStaticCall/test_static_callcallcodecall_010_oogm_before.py b/tests/ported_static/stStaticCall/test_static_callcallcodecall_010_oogm_before.py index 532b1199a50..ff5d85c14b8 100644 --- a/tests/ported_static/stStaticCall/test_static_callcallcodecall_010_oogm_before.py +++ b/tests/ported_static/stStaticCall/test_static_callcallcodecall_010_oogm_before.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -58,9 +57,7 @@ def test_static_callcallcodecall_010_oogm_before( ) -> None: """Test_static_callcallcodecall_010_oogm_before.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -71,6 +68,28 @@ def test_static_callcallcodecall_010_oogm_before( gas_limit=30000000, ) + # Source: lll + # { (DELEGATECALL 400080 (CALLDATALOAD 0) 0 64 0 64 ) } + addr = pre.deploy_contract( # noqa: F841 + code=Op.DELEGATECALL( + gas=0x61AD0, + address=Op.CALLDATALOAD(offset=0x0), + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ) + + Op.STOP, + nonce=0, + address=Address(0xE7B982648E452964FB0AC2B867EFA7C7B5B93D91), # noqa: E501 + ) + # Source: lll + # { (MSTORE 3 1) } + addr_4 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, + nonce=0, + address=Address(0x335C5531B84765A7626E6E76688F18B81BE5259C), # noqa: E501 + ) # Source: lll # { (MSTORE 0 (CALLDATALOAD 0)) [[ 0 ]] (STATICCALL 500000 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -93,37 +112,6 @@ def test_static_callcallcodecall_010_oogm_before( address=Address(0x33344FF747B678F9E86028B0C745D8AB0E0D1792), # noqa: E501 ) # Source: lll - # { (DELEGATECALL 400080 (CALLDATALOAD 0) 0 64 0 64 ) } - addr = pre.deploy_contract( # noqa: F841 - code=Op.DELEGATECALL( - gas=0x61AD0, - address=Op.CALLDATALOAD(offset=0x0), - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ) - + Op.STOP, - nonce=0, - address=Address(0xE7B982648E452964FB0AC2B867EFA7C7B5B93D91), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) (STATICCALL 120020 0 64 0 64 ) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) - + Op.STATICCALL( - gas=0x1D4D4, - address=0x335C5531B84765A7626E6E76688F18B81BE5259C, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ) - + Op.STOP, - nonce=0, - address=Address(0xC5B28F694C0E1BEFB55BDFBEC30BE55455897729), # noqa: E501 - ) - # Source: lll # { (def 'i 0x80) (for {} (< @i 50000) [i](+ @i 1) (EXTCODESIZE 1)) (STATICCALL 20020 0 64 0 64 ) } # noqa: E501 addr_3 = pre.deploy_contract( # noqa: F841 code=Op.JUMPDEST @@ -147,13 +135,21 @@ def test_static_callcallcodecall_010_oogm_before( address=Address(0xF32619344056AD22A07F10433F70165CE82D9273), # noqa: E501 ) # Source: lll - # { (MSTORE 3 1) } - addr_4 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, + # { (SSTORE 3 1) (STATICCALL 120020 0 64 0 64 ) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + + Op.STATICCALL( + gas=0x1D4D4, + address=0x335C5531B84765A7626E6E76688F18B81BE5259C, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ) + + Op.STOP, nonce=0, - address=Address(0x335C5531B84765A7626E6E76688F18B81BE5259C), # noqa: E501 + address=Address(0xC5B28F694C0E1BEFB55BDFBEC30BE55455897729), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx_data = [ Hash(addr_2, left_padding=True), diff --git a/tests/ported_static/stStaticCall/test_static_callcallcodecall_010_oogm_before2.py b/tests/ported_static/stStaticCall/test_static_callcallcodecall_010_oogm_before2.py index a1b0382ed4f..2adc6629ce5 100644 --- a/tests/ported_static/stStaticCall/test_static_callcallcodecall_010_oogm_before2.py +++ b/tests/ported_static/stStaticCall/test_static_callcallcodecall_010_oogm_before2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -58,9 +57,7 @@ def test_static_callcallcodecall_010_oogm_before2( ) -> None: """Test_static_callcallcodecall_010_oogm_before2.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -71,6 +68,29 @@ def test_static_callcallcodecall_010_oogm_before2( gas_limit=30000000, ) + # Source: lll + # { (CALLCODE 400080 (CALLDATALOAD 0) 0 0 64 0 64 ) } + addr = pre.deploy_contract( # noqa: F841 + code=Op.CALLCODE( + gas=0x61AD0, + address=Op.CALLDATALOAD(offset=0x0), + value=0x0, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ) + + Op.STOP, + nonce=0, + address=Address(0x21BE848CB68A95437A4928ED657B6D5F17DD3B03), # noqa: E501 + ) + # Source: lll + # { (MSTORE 3 1) } + addr_4 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, + nonce=0, + address=Address(0x335C5531B84765A7626E6E76688F18B81BE5259C), # noqa: E501 + ) # Source: lll # { (MSTORE 0 (CALLDATALOAD 0)) [[ 0 ]] (STATICCALL 800000 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -93,22 +113,6 @@ def test_static_callcallcodecall_010_oogm_before2( address=Address(0x045BC6E334B0570CC84FBC4B86847063456E7C99), # noqa: E501 ) # Source: lll - # { (CALLCODE 400080 (CALLDATALOAD 0) 0 0 64 0 64 ) } - addr = pre.deploy_contract( # noqa: F841 - code=Op.CALLCODE( - gas=0x61AD0, - address=Op.CALLDATALOAD(offset=0x0), - value=0x0, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ) - + Op.STOP, - nonce=0, - address=Address(0x21BE848CB68A95437A4928ED657B6D5F17DD3B03), # noqa: E501 - ) - # Source: lll # { (def 'i 0x80) (for {} (< @i 50000) [i](+ @i 1) (EXTCODESIZE 1)) (STATICCALL 120020 0 64 0 64 ) } # noqa: E501 addr_2 = pre.deploy_contract( # noqa: F841 code=Op.JUMPDEST @@ -147,14 +151,6 @@ def test_static_callcallcodecall_010_oogm_before2( nonce=0, address=Address(0x698F17D55BFC6351C73D397D5DF71D8A1A1D694D), # noqa: E501 ) - # Source: lll - # { (MSTORE 3 1) } - addr_4 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, - nonce=0, - address=Address(0x335C5531B84765A7626E6E76688F18B81BE5259C), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx_data = [ Hash(addr_2, left_padding=True), diff --git a/tests/ported_static/stStaticCall/test_static_callcallcodecall_010_suicide_end.py b/tests/ported_static/stStaticCall/test_static_callcallcodecall_010_suicide_end.py index ae366f0be5a..a24f9488aec 100644 --- a/tests/ported_static/stStaticCall/test_static_callcallcodecall_010_suicide_end.py +++ b/tests/ported_static/stStaticCall/test_static_callcallcodecall_010_suicide_end.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -36,9 +35,7 @@ def test_static_callcallcodecall_010_suicide_end( ) -> None: """Test_static_callcallcodecall_010_suicide_end.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,6 +46,14 @@ def test_static_callcallcodecall_010_suicide_end( gas_limit=30000000, ) + # Source: lll + # { (MSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, + balance=0x2540BE400, + nonce=0, + address=Address(0x48E2D4C0B593BFEBE5DDB4F13AA355B8BD83DDD3), # noqa: E501 + ) # Source: lll # { [[ 0 ]] (STATICCALL 150000 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -104,15 +109,6 @@ def test_static_callcallcodecall_010_suicide_end( nonce=0, address=Address(0xB7770360E0B87603E3D9C87C866451760C95ABCA), # noqa: E501 ) - # Source: lll - # { (MSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, - balance=0x2540BE400, - nonce=0, - address=Address(0x48E2D4C0B593BFEBE5DDB4F13AA355B8BD83DDD3), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_callcallcodecall_010_suicide_end2.py b/tests/ported_static/stStaticCall/test_static_callcallcodecall_010_suicide_end2.py index f2a251053c1..9c532bc1315 100644 --- a/tests/ported_static/stStaticCall/test_static_callcallcodecall_010_suicide_end2.py +++ b/tests/ported_static/stStaticCall/test_static_callcallcodecall_010_suicide_end2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -36,9 +35,7 @@ def test_static_callcallcodecall_010_suicide_end2( ) -> None: """Test_static_callcallcodecall_010_suicide_end2.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,6 +46,14 @@ def test_static_callcallcodecall_010_suicide_end2( gas_limit=30000000, ) + # Source: lll + # { (MSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, + balance=0x2540BE400, + nonce=0, + address=Address(0x48E2D4C0B593BFEBE5DDB4F13AA355B8BD83DDD3), # noqa: E501 + ) # Source: lll # { [[ 0 ]] (STATICCALL 150000 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -105,15 +110,6 @@ def test_static_callcallcodecall_010_suicide_end2( nonce=0, address=Address(0xB7770360E0B87603E3D9C87C866451760C95ABCA), # noqa: E501 ) - # Source: lll - # { (MSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, - balance=0x2540BE400, - nonce=0, - address=Address(0x48E2D4C0B593BFEBE5DDB4F13AA355B8BD83DDD3), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_callcallcodecall_010_suicide_middle.py b/tests/ported_static/stStaticCall/test_static_callcallcodecall_010_suicide_middle.py index b3695a0a09f..2354250e5cb 100644 --- a/tests/ported_static/stStaticCall/test_static_callcallcodecall_010_suicide_middle.py +++ b/tests/ported_static/stStaticCall/test_static_callcallcodecall_010_suicide_middle.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -36,9 +35,7 @@ def test_static_callcallcodecall_010_suicide_middle( ) -> None: """Test_static_callcallcodecall_010_suicide_middle.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,6 +46,14 @@ def test_static_callcallcodecall_010_suicide_middle( gas_limit=30000000, ) + # Source: lll + # { (MSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, + balance=0x2540BE400, + nonce=0, + address=Address(0x48E2D4C0B593BFEBE5DDB4F13AA355B8BD83DDD3), # noqa: E501 + ) # Source: lll # { [[ 0 ]] (STATICCALL 150000 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -104,15 +109,6 @@ def test_static_callcallcodecall_010_suicide_middle( nonce=0, address=Address(0x408F1ACEFFEC7BDAA35D77006CDCAEAD563BB694), # noqa: E501 ) - # Source: lll - # { (MSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, - balance=0x2540BE400, - nonce=0, - address=Address(0x48E2D4C0B593BFEBE5DDB4F13AA355B8BD83DDD3), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_callcallcodecall_010_suicide_middle2.py b/tests/ported_static/stStaticCall/test_static_callcallcodecall_010_suicide_middle2.py index afd8d610d62..3fd310c1261 100644 --- a/tests/ported_static/stStaticCall/test_static_callcallcodecall_010_suicide_middle2.py +++ b/tests/ported_static/stStaticCall/test_static_callcallcodecall_010_suicide_middle2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -36,9 +35,7 @@ def test_static_callcallcodecall_010_suicide_middle2( ) -> None: """Test_static_callcallcodecall_010_suicide_middle2.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,6 +46,14 @@ def test_static_callcallcodecall_010_suicide_middle2( gas_limit=30000000, ) + # Source: lll + # { (MSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, + balance=0x2540BE400, + nonce=0, + address=Address(0x48E2D4C0B593BFEBE5DDB4F13AA355B8BD83DDD3), # noqa: E501 + ) # Source: lll # { [[ 0 ]] (STATICCALL 150000 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -105,15 +110,6 @@ def test_static_callcallcodecall_010_suicide_middle2( nonce=0, address=Address(0x408F1ACEFFEC7BDAA35D77006CDCAEAD563BB694), # noqa: E501 ) - # Source: lll - # { (MSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, - balance=0x2540BE400, - nonce=0, - address=Address(0x48E2D4C0B593BFEBE5DDB4F13AA355B8BD83DDD3), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_callcallcodecallcode_011.py b/tests/ported_static/stStaticCall/test_static_callcallcodecallcode_011.py index da4ad467c2a..a2f2dadbf77 100644 --- a/tests/ported_static/stStaticCall/test_static_callcallcodecallcode_011.py +++ b/tests/ported_static/stStaticCall/test_static_callcallcodecallcode_011.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,9 +33,7 @@ def test_static_callcallcodecallcode_011( ) -> None: """Test_static_callcallcodecallcode_011.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -48,24 +45,29 @@ def test_static_callcallcodecallcode_011( ) # Source: lll - # { [[ 0 ]] (STATICCALL 350000 0 64 0 64 ) [[ 1 ]] 1} # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.STATICCALL( - gas=0x55730, - address=0x2BF6D23C6CDD3A7712AD150DFA2680ADABDA8B82, + # { (MSTORE 1 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x1, value=0x1) + Op.STOP, + nonce=0, + ) + # Source: lll + # { (MSTORE 11 1) (DELEGATECALL 250000 0 64 0 64 ) (MSTORE 11 1) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0xB, value=0x1) + + Op.POP( + Op.DELEGATECALL( + gas=0x3D090, + address=addr_3, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, - ), + ) ) - + Op.SSTORE(key=0x1, value=0x1) + + Op.MSTORE(offset=0xB, value=0x1) + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x5CD189BC46453773DD75BDA72E7A7EEE97D63BCE), # noqa: E501 ) # Source: lll # { (MSTORE 1 1) (DELEGATECALL 300000 0 64 0 64 ) (MSTORE 1 1) } # noqa: E501 @@ -74,7 +76,7 @@ def test_static_callcallcodecallcode_011( + Op.POP( Op.DELEGATECALL( gas=0x493E0, - address=0x86ADD32E31AA6E47126BC308CF85B29D0C9A4234, + address=addr_2, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -85,36 +87,26 @@ def test_static_callcallcodecallcode_011( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x2BF6D23C6CDD3A7712AD150DFA2680ADABDA8B82), # noqa: E501 ) # Source: lll - # { (MSTORE 11 1) (DELEGATECALL 250000 0 64 0 64 ) (MSTORE 11 1) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0xB, value=0x1) - + Op.POP( - Op.DELEGATECALL( - gas=0x3D090, - address=0x2A142C79A9B097C111CE945214226126B75E332C, + # { [[ 0 ]] (STATICCALL 350000 0 64 0 64 ) [[ 1 ]] 1} # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.STATICCALL( + gas=0x55730, + address=addr, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, - ) + ), ) - + Op.MSTORE(offset=0xB, value=0x1) + + Op.SSTORE(key=0x1, value=0x1) + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x86ADD32E31AA6E47126BC308CF85B29D0C9A4234), # noqa: E501 - ) - # Source: lll - # { (MSTORE 1 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x1, value=0x1) + Op.STOP, - nonce=0, - address=Address(0x2A142C79A9B097C111CE945214226126B75E332C), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_callcallcodecallcode_011_2.py b/tests/ported_static/stStaticCall/test_static_callcallcodecallcode_011_2.py index 28f2c9099cd..a9751f80768 100644 --- a/tests/ported_static/stStaticCall/test_static_callcallcodecallcode_011_2.py +++ b/tests/ported_static/stStaticCall/test_static_callcallcodecallcode_011_2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -59,9 +58,7 @@ def test_static_callcallcodecallcode_011_2( ) -> None: """Test_static_callcallcodecallcode_011_2.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -72,6 +69,30 @@ def test_static_callcallcodecallcode_011_2( gas_limit=30000000, ) + # Source: lll + # { (CALLCODE 300000 (CALLDATALOAD 0) 0 0 64 0 64 ) } + addr = pre.deploy_contract( # noqa: F841 + code=Op.CALLCODE( + gas=0x493E0, + address=Op.CALLDATALOAD(offset=0x0), + value=0x0, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ) + + Op.STOP, + balance=0xDE0B6B3A7640000, + nonce=0, + address=Address(0x21A2D07156B4F874F3B25DFD175145C9CCEC1E19), # noqa: E501 + ) + # Source: lll + # { (MSTORE 1 1) } + addr_4 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x1, value=0x1) + Op.STOP, + nonce=0, + address=Address(0x2A142C79A9B097C111CE945214226126B75E332C), # noqa: E501 + ) # Source: lll # { (MSTORE 0 (CALLDATALOAD 0)) [[ 0 ]] (STATICCALL 350000 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -94,23 +115,6 @@ def test_static_callcallcodecallcode_011_2( address=Address(0x023AE6338FBE9709A6449BFB0821F5AA83987B26), # noqa: E501 ) # Source: lll - # { (CALLCODE 300000 (CALLDATALOAD 0) 0 0 64 0 64 ) } - addr = pre.deploy_contract( # noqa: F841 - code=Op.CALLCODE( - gas=0x493E0, - address=Op.CALLDATALOAD(offset=0x0), - value=0x0, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ) - + Op.STOP, - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0x21A2D07156B4F874F3B25DFD175145C9CCEC1E19), # noqa: E501 - ) - # Source: lll # { (CALLCODE 250000 0 0 64 0 64 ) } # noqa: E501 addr_2 = pre.deploy_contract( # noqa: F841 code=Op.CALLCODE( @@ -144,14 +148,6 @@ def test_static_callcallcodecallcode_011_2( nonce=0, address=Address(0x3CEA889FD03A922CC673D25E5DB4E72743AA4878), # noqa: E501 ) - # Source: lll - # { (MSTORE 1 1) } - addr_4 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x1, value=0x1) + Op.STOP, - nonce=0, - address=Address(0x2A142C79A9B097C111CE945214226126B75E332C), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stStaticCall/test_static_callcallcodecallcode_011_ooge.py b/tests/ported_static/stStaticCall/test_static_callcallcodecallcode_011_ooge.py index 556de5b40bc..255691213b7 100644 --- a/tests/ported_static/stStaticCall/test_static_callcallcodecallcode_011_ooge.py +++ b/tests/ported_static/stStaticCall/test_static_callcallcodecallcode_011_ooge.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -58,9 +57,7 @@ def test_static_callcallcodecallcode_011_ooge( ) -> None: """Test_static_callcallcodecallcode_011_ooge.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -71,43 +68,6 @@ def test_static_callcallcodecallcode_011_ooge( gas_limit=30000000, ) - # Source: lll - # { (MSTORE 0 (CALLDATALOAD 0)) [[ 0 ]] (STATICCALL 150000 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x0, value=Op.CALLDATALOAD(offset=0x0)) - + Op.SSTORE( - key=0x0, - value=Op.STATICCALL( - gas=0x249F0, - address=0x630155B633B8B8F4BCB63E94E0BAAE0197C824EB, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ), - ) - + Op.SSTORE(key=0x1, value=0x1) - + Op.STOP, - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0x6E143211E9D36EAEEBE65F6ED69D6C28500040D6), # noqa: E501 - ) - # Source: lll - # { (MSTORE 0 (CALLDATALOAD 0)) (DELEGATECALL 100000 0 64 0 64 ) } # noqa: E501 - addr = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x0, value=Op.CALLDATALOAD(offset=0x0)) - + Op.DELEGATECALL( - gas=0x186A0, - address=0x77612608C7A22F8929F6F1C9462A9954621AEEFD, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ) - + Op.STOP, - nonce=0, - address=Address(0x630155B633B8B8F4BCB63E94E0BAAE0197C824EB), # noqa: E501 - ) # Source: lll # { (DELEGATECALL 20020 (CALLDATALOAD 0) 0 64 0 64 ) } addr_2 = pre.deploy_contract( # noqa: F841 @@ -145,7 +105,43 @@ def test_static_callcallcodecallcode_011_ooge( nonce=0, address=Address(0xFBEF21C5A6C2ADCF3D769F085E0CC9FE9A8DF954), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: lll + # { (MSTORE 0 (CALLDATALOAD 0)) (DELEGATECALL 100000 0 64 0 64 ) } # noqa: E501 + addr = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x0, value=Op.CALLDATALOAD(offset=0x0)) + + Op.DELEGATECALL( + gas=0x186A0, + address=0x77612608C7A22F8929F6F1C9462A9954621AEEFD, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ) + + Op.STOP, + nonce=0, + address=Address(0x630155B633B8B8F4BCB63E94E0BAAE0197C824EB), # noqa: E501 + ) + # Source: lll + # { (MSTORE 0 (CALLDATALOAD 0)) [[ 0 ]] (STATICCALL 150000 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x0, value=Op.CALLDATALOAD(offset=0x0)) + + Op.SSTORE( + key=0x0, + value=Op.STATICCALL( + gas=0x249F0, + address=0x630155B633B8B8F4BCB63E94E0BAAE0197C824EB, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ), + ) + + Op.SSTORE(key=0x1, value=0x1) + + Op.STOP, + balance=0xDE0B6B3A7640000, + nonce=0, + address=Address(0x6E143211E9D36EAEEBE65F6ED69D6C28500040D6), # noqa: E501 + ) tx_data = [ Hash(addr_3, left_padding=True), diff --git a/tests/ported_static/stStaticCall/test_static_callcallcodecallcode_011_ooge_2.py b/tests/ported_static/stStaticCall/test_static_callcallcodecallcode_011_ooge_2.py index ffbdcfebc2c..9b73ceaab58 100644 --- a/tests/ported_static/stStaticCall/test_static_callcallcodecallcode_011_ooge_2.py +++ b/tests/ported_static/stStaticCall/test_static_callcallcodecallcode_011_ooge_2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -61,9 +60,7 @@ def test_static_callcallcodecallcode_011_ooge_2( ) -> None: """Test_static_callcallcodecallcode_011_ooge_2.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -74,6 +71,33 @@ def test_static_callcallcodecallcode_011_ooge_2( gas_limit=30000000, ) + # Source: lll + # { (MSTORE 3 1) (CALLCODE 100000 (CALLDATALOAD 0) 0 0 64 0 64 ) (MSTORE 3 1)} # noqa: E501 + addr = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + + Op.POP( + Op.CALLCODE( + gas=0x186A0, + address=Op.CALLDATALOAD(offset=0x0), + value=0x0, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ) + ) + + Op.MSTORE(offset=0x3, value=0x1) + + Op.STOP, + nonce=0, + address=Address(0x11A4A9DAD43E6ED44E108EAF7FB160F9835068F4), # noqa: E501 + ) + # Source: lll + # { (MSTORE 3 1) } + addr_4 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, + nonce=0, + address=Address(0x335C5531B84765A7626E6E76688F18B81BE5259C), # noqa: E501 + ) # Source: lll # { (MSTORE 0 (CALLDATALOAD 0)) [[ 0 ]] (STATICCALL 150000 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -96,26 +120,6 @@ def test_static_callcallcodecallcode_011_ooge_2( address=Address(0x6E143211E9D36EAEEBE65F6ED69D6C28500040D6), # noqa: E501 ) # Source: lll - # { (MSTORE 3 1) (CALLCODE 100000 (CALLDATALOAD 0) 0 0 64 0 64 ) (MSTORE 3 1)} # noqa: E501 - addr = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) - + Op.POP( - Op.CALLCODE( - gas=0x186A0, - address=Op.CALLDATALOAD(offset=0x0), - value=0x0, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ) - ) - + Op.MSTORE(offset=0x3, value=0x1) - + Op.STOP, - nonce=0, - address=Address(0x11A4A9DAD43E6ED44E108EAF7FB160F9835068F4), # noqa: E501 - ) - # Source: lll # { (MSTORE 3 11) (CALLCODE 20020 0 0 64 0 64 ) (MSTORE 13 1)} # noqa: E501 addr_2 = pre.deploy_contract( # noqa: F841 code=Op.MSTORE(offset=0x3, value=0xB) @@ -155,14 +159,6 @@ def test_static_callcallcodecallcode_011_ooge_2( nonce=0, address=Address(0xF43B4E8B779078758104039080947F8F74E663D3), # noqa: E501 ) - # Source: lll - # { (MSTORE 3 1) } - addr_4 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, - nonce=0, - address=Address(0x335C5531B84765A7626E6E76688F18B81BE5259C), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stStaticCall/test_static_callcallcodecallcode_011_oogm_after.py b/tests/ported_static/stStaticCall/test_static_callcallcodecallcode_011_oogm_after.py index d38ae9044ff..f2dd613dedf 100644 --- a/tests/ported_static/stStaticCall/test_static_callcallcodecallcode_011_oogm_after.py +++ b/tests/ported_static/stStaticCall/test_static_callcallcodecallcode_011_oogm_after.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -58,9 +57,7 @@ def test_static_callcallcodecallcode_011_oogm_after( ) -> None: """Test_static_callcallcodecallcode_011_oogm_after.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -92,23 +89,30 @@ def test_static_callcallcodecallcode_011_oogm_after( address=Address(0xB4D115B5309A03FEBD836ABB6456BCE43CEC037B), # noqa: E501 ) # Source: lll - # { (MSTORE 1 1) (DELEGATECALL 40080 0 64 0 64 ) (SSTORE 3 1) } # noqa: E501 - addr = pre.deploy_contract( # noqa: F841 + # { (MSTORE 3 1) } + addr_4 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, + nonce=0, + address=Address(0x335C5531B84765A7626E6E76688F18B81BE5259C), # noqa: E501 + ) + # Source: lll + # { (MSTORE 1 1) (DELEGATECALL 20020 0 64 0 64 ) (MSTORE 1 1) } # noqa: E501 + addr_3 = pre.deploy_contract( # noqa: F841 code=Op.MSTORE(offset=0x1, value=0x1) + Op.POP( Op.DELEGATECALL( - gas=0x9C90, - address=0xFECF0806036B619896DA47F661DFCE85C0107E9D, + gas=0x4E34, + address=0x335C5531B84765A7626E6E76688F18B81BE5259C, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, ) ) - + Op.SSTORE(key=0x3, value=0x1) + + Op.MSTORE(offset=0x1, value=0x1) + Op.STOP, nonce=0, - address=Address(0x476564431E8A9C2C934EF7712A1182EEBB46B872), # noqa: E501 + address=Address(0xFECF0806036B619896DA47F661DFCE85C0107E9D), # noqa: E501 ) # Source: lll # { (MSTORE 1 1) (DELEGATECALL 40080 0 64 0 64 ) (def 'i 0x80) (for {} (< @i 50000) [i](+ @i 1) (EXTCODESIZE 1)) } # noqa: E501 @@ -137,32 +141,24 @@ def test_static_callcallcodecallcode_011_oogm_after( address=Address(0xD678D9A03433A246D441A9A225553D3E4E760C5F), # noqa: E501 ) # Source: lll - # { (MSTORE 1 1) (DELEGATECALL 20020 0 64 0 64 ) (MSTORE 1 1) } # noqa: E501 - addr_3 = pre.deploy_contract( # noqa: F841 + # { (MSTORE 1 1) (DELEGATECALL 40080 0 64 0 64 ) (SSTORE 3 1) } # noqa: E501 + addr = pre.deploy_contract( # noqa: F841 code=Op.MSTORE(offset=0x1, value=0x1) + Op.POP( Op.DELEGATECALL( - gas=0x4E34, - address=0x335C5531B84765A7626E6E76688F18B81BE5259C, + gas=0x9C90, + address=0xFECF0806036B619896DA47F661DFCE85C0107E9D, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, ) ) - + Op.MSTORE(offset=0x1, value=0x1) + + Op.SSTORE(key=0x3, value=0x1) + Op.STOP, nonce=0, - address=Address(0xFECF0806036B619896DA47F661DFCE85C0107E9D), # noqa: E501 - ) - # Source: lll - # { (MSTORE 3 1) } - addr_4 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, - nonce=0, - address=Address(0x335C5531B84765A7626E6E76688F18B81BE5259C), # noqa: E501 + address=Address(0x476564431E8A9C2C934EF7712A1182EEBB46B872), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx_data = [ Hash(addr, left_padding=True), diff --git a/tests/ported_static/stStaticCall/test_static_callcallcodecallcode_011_oogm_after2.py b/tests/ported_static/stStaticCall/test_static_callcallcodecallcode_011_oogm_after2.py index 990955e3558..91e9a676fb2 100644 --- a/tests/ported_static/stStaticCall/test_static_callcallcodecallcode_011_oogm_after2.py +++ b/tests/ported_static/stStaticCall/test_static_callcallcodecallcode_011_oogm_after2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -58,9 +57,7 @@ def test_static_callcallcodecallcode_011_oogm_after2( ) -> None: """Test_static_callcallcodecallcode_011_oogm_after2.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -92,23 +89,27 @@ def test_static_callcallcodecallcode_011_oogm_after2( address=Address(0x652A62E8338E91A46AA8387A2C205F35F79347AB), # noqa: E501 ) # Source: lll - # { (CALLCODE 40080 0 0 64 0 64 ) (SSTORE 3 1) } # noqa: E501 - addr = pre.deploy_contract( # noqa: F841 - code=Op.POP( - Op.CALLCODE( - gas=0x9C90, - address=0x25D69E6A677BD6D872F436BAD807C3244A268673, - value=0x0, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ) + # { (MSTORE 3 1) } + addr_4 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, + nonce=0, + address=Address(0x335C5531B84765A7626E6E76688F18B81BE5259C), # noqa: E501 + ) + # Source: lll + # { (CALLCODE 20020 0 0 64 0 64 ) } # noqa: E501 + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.CALLCODE( + gas=0x4E34, + address=0x335C5531B84765A7626E6E76688F18B81BE5259C, + value=0x0, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, ) - + Op.SSTORE(key=0x3, value=0x1) + Op.STOP, nonce=0, - address=Address(0x0973E7675CA57F8E6DEB10CC07DE5D8B53956212), # noqa: E501 + address=Address(0x25D69E6A677BD6D872F436BAD807C3244A268673), # noqa: E501 ) # Source: lll # { (CALLCODE 40080 0 0 64 0 64 ) (def 'i 0x80) (for {} (< @i 50000) [i](+ @i 1) (EXTCODESIZE 1)) } # noqa: E501 @@ -137,29 +138,24 @@ def test_static_callcallcodecallcode_011_oogm_after2( address=Address(0x13A5EB6FC2CF111FBA5DE5C336A9510E8229A44C), # noqa: E501 ) # Source: lll - # { (CALLCODE 20020 0 0 64 0 64 ) } # noqa: E501 - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.CALLCODE( - gas=0x4E34, - address=0x335C5531B84765A7626E6E76688F18B81BE5259C, - value=0x0, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, + # { (CALLCODE 40080 0 0 64 0 64 ) (SSTORE 3 1) } # noqa: E501 + addr = pre.deploy_contract( # noqa: F841 + code=Op.POP( + Op.CALLCODE( + gas=0x9C90, + address=0x25D69E6A677BD6D872F436BAD807C3244A268673, + value=0x0, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ) ) + + Op.SSTORE(key=0x3, value=0x1) + Op.STOP, nonce=0, - address=Address(0x25D69E6A677BD6D872F436BAD807C3244A268673), # noqa: E501 - ) - # Source: lll - # { (MSTORE 3 1) } - addr_4 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, - nonce=0, - address=Address(0x335C5531B84765A7626E6E76688F18B81BE5259C), # noqa: E501 + address=Address(0x0973E7675CA57F8E6DEB10CC07DE5D8B53956212), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx_data = [ Hash(addr, left_padding=True), diff --git a/tests/ported_static/stStaticCall/test_static_callcallcodecallcode_011_oogm_after_1.py b/tests/ported_static/stStaticCall/test_static_callcallcodecallcode_011_oogm_after_1.py index 4bd426bacd3..bfbc6735e35 100644 --- a/tests/ported_static/stStaticCall/test_static_callcallcodecallcode_011_oogm_after_1.py +++ b/tests/ported_static/stStaticCall/test_static_callcallcodecallcode_011_oogm_after_1.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -58,9 +57,7 @@ def test_static_callcallcodecallcode_011_oogm_after_1( ) -> None: """Test_static_callcallcodecallcode_011_oogm_after_1.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -92,6 +89,32 @@ def test_static_callcallcodecallcode_011_oogm_after_1( address=Address(0xB4D115B5309A03FEBD836ABB6456BCE43CEC037B), # noqa: E501 ) # Source: lll + # { (MSTORE 3 1) } + addr_4 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, + nonce=0, + address=Address(0x335C5531B84765A7626E6E76688F18B81BE5259C), # noqa: E501 + ) + # Source: lll + # { (MSTORE 3 1) (DELEGATECALL 20020 0 64 0 64 ) (MSTORE 3 1) } # noqa: E501 + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + + Op.POP( + Op.DELEGATECALL( + gas=0x4E34, + address=0x335C5531B84765A7626E6E76688F18B81BE5259C, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ) + ) + + Op.MSTORE(offset=0x3, value=0x1) + + Op.STOP, + nonce=0, + address=Address(0x02C0BFFB833F0BD1BDCB227A4FE215CF640316BB), # noqa: E501 + ) + # Source: lll # { (MSTORE 3 1) (DELEGATECALL 40080 0 64 0 64 ) (SSTORE 3 1) } # noqa: E501 addr = pre.deploy_contract( # noqa: F841 code=Op.MSTORE(offset=0x3, value=0x1) @@ -136,33 +159,6 @@ def test_static_callcallcodecallcode_011_oogm_after_1( nonce=0, address=Address(0x037BF0D28AF83352E42A45CD844899EE7C948A7C), # noqa: E501 ) - # Source: lll - # { (MSTORE 3 1) (DELEGATECALL 20020 0 64 0 64 ) (MSTORE 3 1) } # noqa: E501 - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) - + Op.POP( - Op.DELEGATECALL( - gas=0x4E34, - address=0x335C5531B84765A7626E6E76688F18B81BE5259C, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ) - ) - + Op.MSTORE(offset=0x3, value=0x1) - + Op.STOP, - nonce=0, - address=Address(0x02C0BFFB833F0BD1BDCB227A4FE215CF640316BB), # noqa: E501 - ) - # Source: lll - # { (MSTORE 3 1) } - addr_4 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, - nonce=0, - address=Address(0x335C5531B84765A7626E6E76688F18B81BE5259C), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx_data = [ Hash(addr, left_padding=True), diff --git a/tests/ported_static/stStaticCall/test_static_callcallcodecallcode_011_oogm_after_2.py b/tests/ported_static/stStaticCall/test_static_callcallcodecallcode_011_oogm_after_2.py index 52404fc0bae..a8854ec54cc 100644 --- a/tests/ported_static/stStaticCall/test_static_callcallcodecallcode_011_oogm_after_2.py +++ b/tests/ported_static/stStaticCall/test_static_callcallcodecallcode_011_oogm_after_2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -58,9 +57,7 @@ def test_static_callcallcodecallcode_011_oogm_after_2( ) -> None: """Test_static_callcallcodecallcode_011_oogm_after_2.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -92,13 +89,20 @@ def test_static_callcallcodecallcode_011_oogm_after_2( address=Address(0x652A62E8338E91A46AA8387A2C205F35F79347AB), # noqa: E501 ) # Source: lll - # { (MSTORE 3 1) (CALLCODE 40080 0 0 64 0 64 ) (SSTORE 3 1) } # noqa: E501 - addr = pre.deploy_contract( # noqa: F841 + # { (MSTORE 3 1) } + addr_4 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, + nonce=0, + address=Address(0x335C5531B84765A7626E6E76688F18B81BE5259C), # noqa: E501 + ) + # Source: lll + # { (MSTORE 3 1) (CALLCODE 20020 0 0 64 0 64 ) (MSTORE 32 1) } # noqa: E501 + addr_3 = pre.deploy_contract( # noqa: F841 code=Op.MSTORE(offset=0x3, value=0x1) + Op.POP( Op.CALLCODE( - gas=0x9C90, - address=0x1E28DAA61AD32AAC8383A1F7B17986C69F0C3273, + gas=0x4E34, + address=0x335C5531B84765A7626E6E76688F18B81BE5259C, value=0x0, args_offset=0x0, args_size=0x40, @@ -106,10 +110,10 @@ def test_static_callcallcodecallcode_011_oogm_after_2( ret_size=0x40, ) ) - + Op.SSTORE(key=0x3, value=0x1) + + Op.MSTORE(offset=0x20, value=0x1) + Op.STOP, nonce=0, - address=Address(0x7DA35806C36EF9661EFA1128809B18A8ED9C78F0), # noqa: E501 + address=Address(0x1E28DAA61AD32AAC8383A1F7B17986C69F0C3273), # noqa: E501 ) # Source: lll # { (MSTORE 3 1) (CALLCODE 40080 0 0 64 0 64 ) (def 'i 0x80) (for {} (< @i 50000) [i](+ @i 1) (EXTCODESIZE 1)) } # noqa: E501 @@ -139,13 +143,13 @@ def test_static_callcallcodecallcode_011_oogm_after_2( address=Address(0x45445092B290295FB6C954103FF2CE24CF3CFAF5), # noqa: E501 ) # Source: lll - # { (MSTORE 3 1) (CALLCODE 20020 0 0 64 0 64 ) (MSTORE 32 1) } # noqa: E501 - addr_3 = pre.deploy_contract( # noqa: F841 + # { (MSTORE 3 1) (CALLCODE 40080 0 0 64 0 64 ) (SSTORE 3 1) } # noqa: E501 + addr = pre.deploy_contract( # noqa: F841 code=Op.MSTORE(offset=0x3, value=0x1) + Op.POP( Op.CALLCODE( - gas=0x4E34, - address=0x335C5531B84765A7626E6E76688F18B81BE5259C, + gas=0x9C90, + address=0x1E28DAA61AD32AAC8383A1F7B17986C69F0C3273, value=0x0, args_offset=0x0, args_size=0x40, @@ -153,19 +157,11 @@ def test_static_callcallcodecallcode_011_oogm_after_2( ret_size=0x40, ) ) - + Op.MSTORE(offset=0x20, value=0x1) + + Op.SSTORE(key=0x3, value=0x1) + Op.STOP, nonce=0, - address=Address(0x1E28DAA61AD32AAC8383A1F7B17986C69F0C3273), # noqa: E501 - ) - # Source: lll - # { (MSTORE 3 1) } - addr_4 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, - nonce=0, - address=Address(0x335C5531B84765A7626E6E76688F18B81BE5259C), # noqa: E501 + address=Address(0x7DA35806C36EF9661EFA1128809B18A8ED9C78F0), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx_data = [ Hash(addr, left_padding=True), diff --git a/tests/ported_static/stStaticCall/test_static_callcallcodecallcode_011_oogm_before.py b/tests/ported_static/stStaticCall/test_static_callcallcodecallcode_011_oogm_before.py index a084bc0c56e..9c95f6777cf 100644 --- a/tests/ported_static/stStaticCall/test_static_callcallcodecallcode_011_oogm_before.py +++ b/tests/ported_static/stStaticCall/test_static_callcallcodecallcode_011_oogm_before.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -58,9 +57,7 @@ def test_static_callcallcodecallcode_011_oogm_before( ) -> None: """Test_static_callcallcodecallcode_011_oogm_before.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -71,6 +68,32 @@ def test_static_callcallcodecallcode_011_oogm_before( gas_limit=30000000, ) + # Source: lll + # { (MSTORE 3 1) (DELEGATECALL 40080 (CALLDATALOAD 0) 0 64 0 64 ) (MSTORE 3 1) } # noqa: E501 + addr = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + + Op.POP( + Op.DELEGATECALL( + gas=0x9C90, + address=Op.CALLDATALOAD(offset=0x0), + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ) + ) + + Op.MSTORE(offset=0x3, value=0x1) + + Op.STOP, + nonce=0, + address=Address(0xF752172F60D0024AF14BEE497ED232AB3A215362), # noqa: E501 + ) + # Source: lll + # { (MSTORE 3 1) } + addr_4 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, + nonce=0, + address=Address(0x335C5531B84765A7626E6E76688F18B81BE5259C), # noqa: E501 + ) # Source: lll # { (MSTORE 0 (CALLDATALOAD 0)) [[ 0 ]] (STATICCALL 150000 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -93,25 +116,6 @@ def test_static_callcallcodecallcode_011_oogm_before( address=Address(0xD28B8E27785DDEE975645E09E8631D7BCB4133F3), # noqa: E501 ) # Source: lll - # { (MSTORE 3 1) (DELEGATECALL 40080 (CALLDATALOAD 0) 0 64 0 64 ) (MSTORE 3 1) } # noqa: E501 - addr = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) - + Op.POP( - Op.DELEGATECALL( - gas=0x9C90, - address=Op.CALLDATALOAD(offset=0x0), - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ) - ) - + Op.MSTORE(offset=0x3, value=0x1) - + Op.STOP, - nonce=0, - address=Address(0xF752172F60D0024AF14BEE497ED232AB3A215362), # noqa: E501 - ) - # Source: lll # { (SSTORE 3 1) (DELEGATECALL 20020 0 64 0 64 ) (MSTORE 3 1) } # noqa: E501 addr_2 = pre.deploy_contract( # noqa: F841 code=Op.SSTORE(key=0x3, value=0x1) @@ -156,14 +160,6 @@ def test_static_callcallcodecallcode_011_oogm_before( nonce=0, address=Address(0x9D3E6C1D2BC6290F0E7161ADBB3AD1EC4770D0D3), # noqa: E501 ) - # Source: lll - # { (MSTORE 3 1) } - addr_4 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, - nonce=0, - address=Address(0x335C5531B84765A7626E6E76688F18B81BE5259C), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx_data = [ Hash(addr_2, left_padding=True), diff --git a/tests/ported_static/stStaticCall/test_static_callcallcodecallcode_011_oogm_before2.py b/tests/ported_static/stStaticCall/test_static_callcallcodecallcode_011_oogm_before2.py index 209c0d32b7d..b0ff081f608 100644 --- a/tests/ported_static/stStaticCall/test_static_callcallcodecallcode_011_oogm_before2.py +++ b/tests/ported_static/stStaticCall/test_static_callcallcodecallcode_011_oogm_before2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -67,9 +66,7 @@ def test_static_callcallcodecallcode_011_oogm_before2( ) -> None: """Test_static_callcallcodecallcode_011_oogm_before2.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -80,6 +77,33 @@ def test_static_callcallcodecallcode_011_oogm_before2( gas_limit=30000000, ) + # Source: lll + # { (MSTORE 32 1) (CALLCODE 40080 (CALLDATALOAD 0) 0 0 64 0 64 ) (MSTORE 32 1) } # noqa: E501 + addr = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x20, value=0x1) + + Op.POP( + Op.CALLCODE( + gas=0x9C90, + address=Op.CALLDATALOAD(offset=0x0), + value=0x0, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ) + ) + + Op.MSTORE(offset=0x20, value=0x1) + + Op.STOP, + nonce=0, + address=Address(0x8BDE6A10A1792232FD09B528800D9AC2A6835424), # noqa: E501 + ) + # Source: lll + # { (MSTORE 32 1) } + addr_5 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x20, value=0x1) + Op.STOP, + nonce=0, + address=Address(0xD4286AC3FCAC436406BC95F5B0176AD49AED7F7C), # noqa: E501 + ) # Source: lll # { (MSTORE 0 (CALLDATALOAD 0)) [[ 0 ]] (STATICCALL 150000 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -102,13 +126,13 @@ def test_static_callcallcodecallcode_011_oogm_before2( address=Address(0x6E143211E9D36EAEEBE65F6ED69D6C28500040D6), # noqa: E501 ) # Source: lll - # { (MSTORE 32 1) (CALLCODE 40080 (CALLDATALOAD 0) 0 0 64 0 64 ) (MSTORE 32 1) } # noqa: E501 - addr = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x20, value=0x1) + # { (SSTORE 3 1) (CALLCODE 20020 0 0 64 0 64 ) (MSTORE 32 1) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.POP( Op.CALLCODE( - gas=0x9C90, - address=Op.CALLDATALOAD(offset=0x0), + gas=0x4E34, + address=0xD4286AC3FCAC436406BC95F5B0176AD49AED7F7C, value=0x0, args_offset=0x0, args_size=0x40, @@ -119,17 +143,16 @@ def test_static_callcallcodecallcode_011_oogm_before2( + Op.MSTORE(offset=0x20, value=0x1) + Op.STOP, nonce=0, - address=Address(0x8BDE6A10A1792232FD09B528800D9AC2A6835424), # noqa: E501 + address=Address(0x87F0BB05316A8D8146646A151A64F38AE9D25176), # noqa: E501 ) # Source: lll - # { (SSTORE 3 1) (CALLCODE 20020 0 0 64 0 64 ) (MSTORE 32 1) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) - + Op.POP( + # { (CALLCODE 20020 1 0 64 0 64 ) (MSTORE 32 1) } # noqa: E501 + addr_4 = pre.deploy_contract( # noqa: F841 + code=Op.POP( Op.CALLCODE( gas=0x4E34, address=0xD4286AC3FCAC436406BC95F5B0176AD49AED7F7C, - value=0x0, + value=0x1, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -138,8 +161,9 @@ def test_static_callcallcodecallcode_011_oogm_before2( ) + Op.MSTORE(offset=0x20, value=0x1) + Op.STOP, + balance=10, nonce=0, - address=Address(0x87F0BB05316A8D8146646A151A64F38AE9D25176), # noqa: E501 + address=Address(0x94C82267A4E8333AFB80073FBAED3FE5973ADC7C), # noqa: E501 ) # Source: lll # { (def 'i 0x80) (for {} (< @i 50000) [i](+ @i 1) (EXTCODESIZE 1)) (CALLCODE 20020 0 0 64 0 64 ) (MSTORE 32 1) } # noqa: E501 @@ -168,34 +192,6 @@ def test_static_callcallcodecallcode_011_oogm_before2( nonce=0, address=Address(0x1DFFDBFBE33709F17B6E90137242C109917A994B), # noqa: E501 ) - # Source: lll - # { (CALLCODE 20020 1 0 64 0 64 ) (MSTORE 32 1) } # noqa: E501 - addr_4 = pre.deploy_contract( # noqa: F841 - code=Op.POP( - Op.CALLCODE( - gas=0x4E34, - address=0xD4286AC3FCAC436406BC95F5B0176AD49AED7F7C, - value=0x1, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ) - ) - + Op.MSTORE(offset=0x20, value=0x1) - + Op.STOP, - balance=10, - nonce=0, - address=Address(0x94C82267A4E8333AFB80073FBAED3FE5973ADC7C), # noqa: E501 - ) - # Source: lll - # { (MSTORE 32 1) } - addr_5 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x20, value=0x1) + Op.STOP, - nonce=0, - address=Address(0xD4286AC3FCAC436406BC95F5B0176AD49AED7F7C), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stStaticCall/test_static_callcallcodecallcode_011_suicide_end.py b/tests/ported_static/stStaticCall/test_static_callcallcodecallcode_011_suicide_end.py index 37679cc9d73..225136cbccb 100644 --- a/tests/ported_static/stStaticCall/test_static_callcallcodecallcode_011_suicide_end.py +++ b/tests/ported_static/stStaticCall/test_static_callcallcodecallcode_011_suicide_end.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -36,9 +35,7 @@ def test_static_callcallcodecallcode_011_suicide_end( ) -> None: """Test_static_callcallcodecallcode_011_suicide_end.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,6 +46,14 @@ def test_static_callcallcodecallcode_011_suicide_end( gas_limit=30000000, ) + # Source: lll + # { (MSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, + balance=0x2540BE400, + nonce=0, + address=Address(0x48E2D4C0B593BFEBE5DDB4F13AA355B8BD83DDD3), # noqa: E501 + ) # Source: lll # { [[ 0 ]] (STATICCALL 150000 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -104,15 +109,6 @@ def test_static_callcallcodecallcode_011_suicide_end( nonce=0, address=Address(0x4A31DD3A8C3C9A793AC0B3C234A4DBAC2F201404), # noqa: E501 ) - # Source: lll - # { (MSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, - balance=0x2540BE400, - nonce=0, - address=Address(0x48E2D4C0B593BFEBE5DDB4F13AA355B8BD83DDD3), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_callcallcodecallcode_011_suicide_end2.py b/tests/ported_static/stStaticCall/test_static_callcallcodecallcode_011_suicide_end2.py index f7434d31144..d1821e6f7a5 100644 --- a/tests/ported_static/stStaticCall/test_static_callcallcodecallcode_011_suicide_end2.py +++ b/tests/ported_static/stStaticCall/test_static_callcallcodecallcode_011_suicide_end2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -36,9 +35,7 @@ def test_static_callcallcodecallcode_011_suicide_end2( ) -> None: """Test_static_callcallcodecallcode_011_suicide_end2.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,6 +46,14 @@ def test_static_callcallcodecallcode_011_suicide_end2( gas_limit=30000000, ) + # Source: lll + # { (MSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, + balance=0x2540BE400, + nonce=0, + address=Address(0x48E2D4C0B593BFEBE5DDB4F13AA355B8BD83DDD3), # noqa: E501 + ) # Source: lll # { [[ 0 ]] (STATICCALL 150000 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -108,15 +113,6 @@ def test_static_callcallcodecallcode_011_suicide_end2( nonce=0, address=Address(0x13B9EDFF99AE7B562C9292952C1E67E8FA0A3E03), # noqa: E501 ) - # Source: lll - # { (MSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, - balance=0x2540BE400, - nonce=0, - address=Address(0x48E2D4C0B593BFEBE5DDB4F13AA355B8BD83DDD3), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_callcallcodecallcode_011_suicide_middle.py b/tests/ported_static/stStaticCall/test_static_callcallcodecallcode_011_suicide_middle.py index 5615d596d57..c7417f94074 100644 --- a/tests/ported_static/stStaticCall/test_static_callcallcodecallcode_011_suicide_middle.py +++ b/tests/ported_static/stStaticCall/test_static_callcallcodecallcode_011_suicide_middle.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -36,9 +35,7 @@ def test_static_callcallcodecallcode_011_suicide_middle( ) -> None: """Test_static_callcallcodecallcode_011_suicide_middle.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,6 +46,14 @@ def test_static_callcallcodecallcode_011_suicide_middle( gas_limit=30000000, ) + # Source: lll + # { (MSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, + balance=0x2540BE400, + nonce=0, + address=Address(0x48E2D4C0B593BFEBE5DDB4F13AA355B8BD83DDD3), # noqa: E501 + ) # Source: lll # { [[ 0 ]] (STATICCALL 150000 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -104,15 +109,6 @@ def test_static_callcallcodecallcode_011_suicide_middle( nonce=0, address=Address(0xECA01D36DBE4F4AB283A49016EFA370BAC7E7346), # noqa: E501 ) - # Source: lll - # { (MSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, - balance=0x2540BE400, - nonce=0, - address=Address(0x48E2D4C0B593BFEBE5DDB4F13AA355B8BD83DDD3), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_callcallcodecallcode_011_suicide_middle2.py b/tests/ported_static/stStaticCall/test_static_callcallcodecallcode_011_suicide_middle2.py index 2e4cb91900c..0234bc00b51 100644 --- a/tests/ported_static/stStaticCall/test_static_callcallcodecallcode_011_suicide_middle2.py +++ b/tests/ported_static/stStaticCall/test_static_callcallcodecallcode_011_suicide_middle2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -36,9 +35,7 @@ def test_static_callcallcodecallcode_011_suicide_middle2( ) -> None: """Test_static_callcallcodecallcode_011_suicide_middle2.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,6 +46,14 @@ def test_static_callcallcodecallcode_011_suicide_middle2( gas_limit=30000000, ) + # Source: lll + # { (MSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, + balance=0x2540BE400, + nonce=0, + address=Address(0x48E2D4C0B593BFEBE5DDB4F13AA355B8BD83DDD3), # noqa: E501 + ) # Source: lll # { [[ 0 ]] (STATICCALL 150000 0 64 0 64 ) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -112,15 +117,6 @@ def test_static_callcallcodecallcode_011_suicide_middle2( nonce=0, address=Address(0xDCAD05283EB3153CA2200073454E8303C30805EC), # noqa: E501 ) - # Source: lll - # { (MSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, - balance=0x2540BE400, - nonce=0, - address=Address(0x48E2D4C0B593BFEBE5DDB4F13AA355B8BD83DDD3), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_callcodecall_10.py b/tests/ported_static/stStaticCall/test_static_callcodecall_10.py index 34472009770..14ed9be49e3 100644 --- a/tests/ported_static/stStaticCall/test_static_callcodecall_10.py +++ b/tests/ported_static/stStaticCall/test_static_callcodecall_10.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,9 +33,7 @@ def test_static_callcodecall_10( ) -> None: """Test_static_callcodecall_10.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -48,24 +45,10 @@ def test_static_callcodecall_10( ) # Source: lll - # { [[ 0 ]] (DELEGATECALL 350000 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.DELEGATECALL( - gas=0x55730, - address=0x732757BD540487F3FCFA3342F95106BC67684091, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ), - ) - + Op.SSTORE(key=0x1, value=0x1) - + Op.STOP, - balance=0xDE0B6B3A7640000, + # { (MSTORE 1 1) } + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x1, value=0x1) + Op.STOP, nonce=0, - address=Address(0x4EEF7E2B5AE9BE0FC5B43DC4FE39195A1AE10FC4), # noqa: E501 ) # Source: lll # { (MSTORE 1 1) (STATICCALL 250000 0 64 0 64 ) (MSTORE 1 1) } # noqa: E501 @@ -74,7 +57,7 @@ def test_static_callcodecall_10( + Op.POP( Op.STATICCALL( gas=0x3D090, - address=0x2A142C79A9B097C111CE945214226126B75E332C, + address=addr_2, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -85,16 +68,26 @@ def test_static_callcodecall_10( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x732757BD540487F3FCFA3342F95106BC67684091), # noqa: E501 ) # Source: lll - # { (MSTORE 1 1) } - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x1, value=0x1) + Op.STOP, + # { [[ 0 ]] (DELEGATECALL 350000 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.DELEGATECALL( + gas=0x55730, + address=addr, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ), + ) + + Op.SSTORE(key=0x1, value=0x1) + + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x2A142C79A9B097C111CE945214226126B75E332C), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_callcodecall_10_2.py b/tests/ported_static/stStaticCall/test_static_callcodecall_10_2.py index 847fbf8693d..28bc158d0e5 100644 --- a/tests/ported_static/stStaticCall/test_static_callcodecall_10_2.py +++ b/tests/ported_static/stStaticCall/test_static_callcodecall_10_2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,9 +33,7 @@ def test_static_callcodecall_10_2( ) -> None: """Test_static_callcodecall_10_2.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -48,32 +45,17 @@ def test_static_callcodecall_10_2( ) # Source: lll - # { [[ 0 ]] (CALLCODE 350000 1 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.CALLCODE( - gas=0x55730, - address=0x620B442C84D5068E6B57D390A1AC99130205406E, - value=0x1, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ), - ) - + Op.SSTORE(key=0x1, value=0x1) - + Op.STOP, - balance=0xDE0B6B3A7640000, + # { (MSTORE 1 1) } + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x1, value=0x1) + Op.STOP, nonce=0, - address=Address(0x1C60BD6C18EAA7C07312B755979E9B2C2F2802D4), # noqa: E501 ) # Source: lll # { (STATICCALL 250000 0 64 0 64 ) } # noqa: E501 addr = pre.deploy_contract( # noqa: F841 code=Op.STATICCALL( gas=0x3D090, - address=0x2A142C79A9B097C111CE945214226126B75E332C, + address=addr_2, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -82,16 +64,27 @@ def test_static_callcodecall_10_2( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x620B442C84D5068E6B57D390A1AC99130205406E), # noqa: E501 ) # Source: lll - # { (MSTORE 1 1) } - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x1, value=0x1) + Op.STOP, + # { [[ 0 ]] (CALLCODE 350000 1 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.CALLCODE( + gas=0x55730, + address=addr, + value=0x1, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ), + ) + + Op.SSTORE(key=0x1, value=0x1) + + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x2A142C79A9B097C111CE945214226126B75E332C), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_callcodecall_10_ooge.py b/tests/ported_static/stStaticCall/test_static_callcodecall_10_ooge.py index e7093742577..52635e65517 100644 --- a/tests/ported_static/stStaticCall/test_static_callcodecall_10_ooge.py +++ b/tests/ported_static/stStaticCall/test_static_callcodecall_10_ooge.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -56,9 +55,7 @@ def test_static_callcodecall_10_ooge( ) -> None: """Test_static_callcodecall_10_ooge.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -69,27 +66,6 @@ def test_static_callcodecall_10_ooge( gas_limit=30000000, ) - # Source: lll - # { (MSTORE 0 (CALLDATALOAD 0)) [[ 0 ]] (DELEGATECALL 150000 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x0, value=Op.CALLDATALOAD(offset=0x0)) - + Op.SSTORE( - key=0x0, - value=Op.DELEGATECALL( - gas=0x249F0, - address=0x33E1AD2A3AE944798E9ED4689B85D9136B59EBD2, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ), - ) - + Op.SSTORE(key=0x1, value=0x1) - + Op.STOP, - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0xDCFF1EF291EC7B6A606AC4284680DB5A06F33054), # noqa: E501 - ) # Source: lll # { (STATICCALL 20020 (CALLDATALOAD 0) 0 64 0 64 ) } addr = pre.deploy_contract( # noqa: F841 @@ -127,7 +103,27 @@ def test_static_callcodecall_10_ooge( nonce=0, address=Address(0xFBEF21C5A6C2ADCF3D769F085E0CC9FE9A8DF954), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: lll + # { (MSTORE 0 (CALLDATALOAD 0)) [[ 0 ]] (DELEGATECALL 150000 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x0, value=Op.CALLDATALOAD(offset=0x0)) + + Op.SSTORE( + key=0x0, + value=Op.DELEGATECALL( + gas=0x249F0, + address=0x33E1AD2A3AE944798E9ED4689B85D9136B59EBD2, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ), + ) + + Op.SSTORE(key=0x1, value=0x1) + + Op.STOP, + balance=0xDE0B6B3A7640000, + nonce=0, + address=Address(0xDCFF1EF291EC7B6A606AC4284680DB5A06F33054), # noqa: E501 + ) tx_data = [ Hash(addr_2, left_padding=True), diff --git a/tests/ported_static/stStaticCall/test_static_callcodecall_10_ooge_2.py b/tests/ported_static/stStaticCall/test_static_callcodecall_10_ooge_2.py index eb311ee0b0c..a81f4ac172c 100644 --- a/tests/ported_static/stStaticCall/test_static_callcodecall_10_ooge_2.py +++ b/tests/ported_static/stStaticCall/test_static_callcodecall_10_ooge_2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -56,9 +55,7 @@ def test_static_callcodecall_10_ooge_2( ) -> None: """Test_static_callcodecall_10_ooge_2.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -69,28 +66,6 @@ def test_static_callcodecall_10_ooge_2( gas_limit=30000000, ) - # Source: lll - # { (MSTORE 0 (CALLDATALOAD 0)) [[ 0 ]] (CALLCODE 150000 0 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x0, value=Op.CALLDATALOAD(offset=0x0)) - + Op.SSTORE( - key=0x0, - value=Op.CALLCODE( - gas=0x249F0, - address=0xE7BF411C5F7EA351927579255740C4BD69BD01F5, - value=0x0, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ), - ) - + Op.SSTORE(key=0x1, value=0x1) - + Op.STOP, - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0xECEB2D7DC716950B2877389DC5B8CF7000305255), # noqa: E501 - ) # Source: lll # { (MSTORE 2 1) (STATICCALL 20020 (CALLDATALOAD 0) 0 64 0 64 ) (MSTORE 32 1) } # noqa: E501 addr = pre.deploy_contract( # noqa: F841 @@ -132,7 +107,28 @@ def test_static_callcodecall_10_ooge_2( nonce=0, address=Address(0xFBEF21C5A6C2ADCF3D769F085E0CC9FE9A8DF954), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: lll + # { (MSTORE 0 (CALLDATALOAD 0)) [[ 0 ]] (CALLCODE 150000 0 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x0, value=Op.CALLDATALOAD(offset=0x0)) + + Op.SSTORE( + key=0x0, + value=Op.CALLCODE( + gas=0x249F0, + address=0xE7BF411C5F7EA351927579255740C4BD69BD01F5, + value=0x0, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ), + ) + + Op.SSTORE(key=0x1, value=0x1) + + Op.STOP, + balance=0xDE0B6B3A7640000, + nonce=0, + address=Address(0xECEB2D7DC716950B2877389DC5B8CF7000305255), # noqa: E501 + ) tx_data = [ Hash(addr_2, left_padding=True), diff --git a/tests/ported_static/stStaticCall/test_static_callcodecall_10_suicide_end.py b/tests/ported_static/stStaticCall/test_static_callcodecall_10_suicide_end.py index f16e28b4e46..5fecaa2fdc8 100644 --- a/tests/ported_static/stStaticCall/test_static_callcodecall_10_suicide_end.py +++ b/tests/ported_static/stStaticCall/test_static_callcodecall_10_suicide_end.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -56,9 +55,7 @@ def test_static_callcodecall_10_suicide_end( ) -> None: """Test_static_callcodecall_10_suicide_end.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -69,6 +66,22 @@ def test_static_callcodecall_10_suicide_end( gas_limit=30000000, ) + # Source: lll + # { (MSTORE 2 1) } + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x2, value=0x1) + Op.STOP, + balance=0x2540BE400, + nonce=0, + address=Address(0xCFB5784A5E49924BECC2D5C5D2EE0A9B141E6216), # noqa: E501 + ) + # Source: lll + # { (SSTORE 2 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x2, value=0x1) + Op.STOP, + balance=0x2540BE400, + nonce=0, + address=Address(0x703B936FD4D674F0FF5D6957F61097152F8781B8), # noqa: E501 + ) # Source: lll # { (MSTORE 0 (CALLDATALOAD 0)) [[ 0 ]] (DELEGATECALL 150000 0 64 0 64 ) [[ 1 ]] (GAS) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -109,23 +122,6 @@ def test_static_callcodecall_10_suicide_end( nonce=0, address=Address(0xDC07FFF80D888EBA04EAB962D37897F6C923462B), # noqa: E501 ) - # Source: lll - # { (MSTORE 2 1) } - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x2, value=0x1) + Op.STOP, - balance=0x2540BE400, - nonce=0, - address=Address(0xCFB5784A5E49924BECC2D5C5D2EE0A9B141E6216), # noqa: E501 - ) - # Source: lll - # { (SSTORE 2 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x2, value=0x1) + Op.STOP, - balance=0x2540BE400, - nonce=0, - address=Address(0x703B936FD4D674F0FF5D6957F61097152F8781B8), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx_data = [ Hash(addr_2, left_padding=True), diff --git a/tests/ported_static/stStaticCall/test_static_callcodecall_10_suicide_end2.py b/tests/ported_static/stStaticCall/test_static_callcodecall_10_suicide_end2.py index 8fc977c4056..92fe9bf3b88 100644 --- a/tests/ported_static/stStaticCall/test_static_callcodecall_10_suicide_end2.py +++ b/tests/ported_static/stStaticCall/test_static_callcodecall_10_suicide_end2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -59,9 +58,7 @@ def test_static_callcodecall_10_suicide_end2( ) -> None: """Test_static_callcodecall_10_suicide_end2.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -72,6 +69,14 @@ def test_static_callcodecall_10_suicide_end2( gas_limit=30000000, ) + # Source: lll + # { (MSTORE 2 1) } + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x2, value=0x1) + Op.STOP, + balance=0x2540BE400, + nonce=0, + address=Address(0xCFB5784A5E49924BECC2D5C5D2EE0A9B141E6216), # noqa: E501 + ) # Source: lll # { [[ 0 ]] (CALLCODE 150000 (CALLVALUE) 0 64 0 64 ) [[ 1 ]] (GAS) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -112,15 +117,6 @@ def test_static_callcodecall_10_suicide_end2( nonce=0, address=Address(0xB60789F240AC9F12FCDE1E4BBD5042A7F30932D4), # noqa: E501 ) - # Source: lll - # { (MSTORE 2 1) } - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x2, value=0x1) + Op.STOP, - balance=0x2540BE400, - nonce=0, - address=Address(0xCFB5784A5E49924BECC2D5C5D2EE0A9B141E6216), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stStaticCall/test_static_callcodecallcall_100.py b/tests/ported_static/stStaticCall/test_static_callcodecallcall_100.py index 466ffeabecb..9a4881aff50 100644 --- a/tests/ported_static/stStaticCall/test_static_callcodecallcall_100.py +++ b/tests/ported_static/stStaticCall/test_static_callcodecallcall_100.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,9 +33,7 @@ def test_static_callcodecallcall_100( ) -> None: """Test_static_callcodecallcall_100.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -48,24 +45,25 @@ def test_static_callcodecallcall_100( ) # Source: lll - # { [[ 0 ]] (DELEGATECALL 350000 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.DELEGATECALL( - gas=0x55730, - address=0x37BEB0DDA966430210BAED14C311DB5B8237B9E7, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ), + # { (MSTORE 1 1)} + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x1, value=0x1) + Op.STOP, + nonce=0, + ) + # Source: lll + # { (STATICCALL 250000 0 64 0 64 ) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.STATICCALL( + gas=0x3D090, + address=addr_3, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, ) - + Op.SSTORE(key=0x1, value=0x1) + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x4BE61408125D759DFF8CAEAE4704D8C7ACA6099A), # noqa: E501 ) # Source: lll # { (STATICCALL 300000 0 64 0 64 ) (MSTORE 5 (CALLER))} # noqa: E501 @@ -73,7 +71,7 @@ def test_static_callcodecallcall_100( code=Op.POP( Op.STATICCALL( gas=0x493E0, - address=0xEF859513AE36C397C43170A2980741575916167B, + address=addr_2, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -84,32 +82,26 @@ def test_static_callcodecallcall_100( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x37BEB0DDA966430210BAED14C311DB5B8237B9E7), # noqa: E501 ) # Source: lll - # { (STATICCALL 250000 0 64 0 64 ) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.STATICCALL( - gas=0x3D090, - address=0x7E3FA59AE6C821631A70F75A54FBE9A1085102C7, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, + # { [[ 0 ]] (DELEGATECALL 350000 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.DELEGATECALL( + gas=0x55730, + address=addr, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ), ) + + Op.SSTORE(key=0x1, value=0x1) + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xEF859513AE36C397C43170A2980741575916167B), # noqa: E501 - ) - # Source: lll - # { (MSTORE 1 1)} - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x1, value=0x1) + Op.STOP, - nonce=0, - address=Address(0x7E3FA59AE6C821631A70F75A54FBE9A1085102C7), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_callcodecallcall_100_2.py b/tests/ported_static/stStaticCall/test_static_callcodecallcall_100_2.py index fc1eee3d52b..6c9a236711a 100644 --- a/tests/ported_static/stStaticCall/test_static_callcodecallcall_100_2.py +++ b/tests/ported_static/stStaticCall/test_static_callcodecallcall_100_2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -56,9 +55,7 @@ def test_static_callcodecallcall_100_2( ) -> None: """Test_static_callcodecallcall_100_2.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -70,32 +67,17 @@ def test_static_callcodecallcall_100_2( ) # Source: lll - # { [[ 0 ]] (CALLCODE 350000 (CALLVALUE) 0 64 0 64 ) [[ 1 ]] 1} # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.CALLCODE( - gas=0x55730, - address=0x47F2744D161ACE12CC52A51922D3CEE2E8AB3B89, - value=Op.CALLVALUE, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ), - ) - + Op.SSTORE(key=0x1, value=0x1) - + Op.STOP, - balance=0xDE0B6B3A7640000, + # { (MSTORE 1 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x1, value=0x1) + Op.STOP, nonce=0, - address=Address(0x9F233647D252A405337C598A262F95052C23F7EE), # noqa: E501 ) # Source: lll - # { (STATICCALL 300000 0 64 0 64 ) } # noqa: E501 - addr = pre.deploy_contract( # noqa: F841 + # { (STATICCALL 250000 0 64 0 64 ) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 code=Op.STATICCALL( - gas=0x493E0, - address=0xEF859513AE36C397C43170A2980741575916167B, + gas=0x3D090, + address=addr_3, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -104,14 +86,13 @@ def test_static_callcodecallcall_100_2( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x47F2744D161ACE12CC52A51922D3CEE2E8AB3B89), # noqa: E501 ) # Source: lll - # { (STATICCALL 250000 0 64 0 64 ) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 + # { (STATICCALL 300000 0 64 0 64 ) } # noqa: E501 + addr = pre.deploy_contract( # noqa: F841 code=Op.STATICCALL( - gas=0x3D090, - address=0x2A142C79A9B097C111CE945214226126B75E332C, + gas=0x493E0, + address=addr_2, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -120,16 +101,27 @@ def test_static_callcodecallcall_100_2( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xEF859513AE36C397C43170A2980741575916167B), # noqa: E501 ) # Source: lll - # { (MSTORE 1 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x1, value=0x1) + Op.STOP, + # { [[ 0 ]] (CALLCODE 350000 (CALLVALUE) 0 64 0 64 ) [[ 1 ]] 1} # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.CALLCODE( + gas=0x55730, + address=addr, + value=Op.CALLVALUE, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ), + ) + + Op.SSTORE(key=0x1, value=0x1) + + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x2A142C79A9B097C111CE945214226126B75E332C), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx_data = [ Bytes(""), diff --git a/tests/ported_static/stStaticCall/test_static_callcodecallcall_100_ooge.py b/tests/ported_static/stStaticCall/test_static_callcodecallcall_100_ooge.py index 71ccf237f91..2a349847b34 100644 --- a/tests/ported_static/stStaticCall/test_static_callcodecallcall_100_ooge.py +++ b/tests/ported_static/stStaticCall/test_static_callcodecallcall_100_ooge.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -56,9 +55,7 @@ def test_static_callcodecallcall_100_ooge( ) -> None: """Test_static_callcodecallcall_100_ooge.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -69,46 +66,6 @@ def test_static_callcodecallcall_100_ooge( gas_limit=30000000, ) - # Source: lll - # { (MSTORE 0 (CALLDATALOAD 0)) [[ 0 ]] (DELEGATECALL 150000 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x0, value=Op.CALLDATALOAD(offset=0x0)) - + Op.SSTORE( - key=0x0, - value=Op.DELEGATECALL( - gas=0x249F0, - address=0xC4961FC5BDC17DA68E909D07947A5E030952891E, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ), - ) - + Op.SSTORE(key=0x1, value=0x1) - + Op.STOP, - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0xDCFF1EF291EC7B6A606AC4284680DB5A06F33054), # noqa: E501 - ) - # Source: lll - # { (MSTORE 32 (CALLDATALOAD 0)) (STATICCALL 100000 0 64 0 64 ) (MSTORE 3 1) } # noqa: E501 - addr = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x20, value=Op.CALLDATALOAD(offset=0x0)) - + Op.POP( - Op.STATICCALL( - gas=0x186A0, - address=0x5AC4EE179ABD5EA5F60962E651DED51161A55B6E, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ) - ) - + Op.MSTORE(offset=0x3, value=0x1) - + Op.STOP, - nonce=0, - address=Address(0xC4961FC5BDC17DA68E909D07947A5E030952891E), # noqa: E501 - ) # Source: lll # { (STATICCALL 20020 (CALLDATALOAD 32) 0 64 0 64 ) (MSTORE 3 1) } addr_2 = pre.deploy_contract( # noqa: F841 @@ -149,7 +106,46 @@ def test_static_callcodecallcall_100_ooge( nonce=0, address=Address(0xFBEF21C5A6C2ADCF3D769F085E0CC9FE9A8DF954), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: lll + # { (MSTORE 32 (CALLDATALOAD 0)) (STATICCALL 100000 0 64 0 64 ) (MSTORE 3 1) } # noqa: E501 + addr = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x20, value=Op.CALLDATALOAD(offset=0x0)) + + Op.POP( + Op.STATICCALL( + gas=0x186A0, + address=0x5AC4EE179ABD5EA5F60962E651DED51161A55B6E, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ) + ) + + Op.MSTORE(offset=0x3, value=0x1) + + Op.STOP, + nonce=0, + address=Address(0xC4961FC5BDC17DA68E909D07947A5E030952891E), # noqa: E501 + ) + # Source: lll + # { (MSTORE 0 (CALLDATALOAD 0)) [[ 0 ]] (DELEGATECALL 150000 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x0, value=Op.CALLDATALOAD(offset=0x0)) + + Op.SSTORE( + key=0x0, + value=Op.DELEGATECALL( + gas=0x249F0, + address=0xC4961FC5BDC17DA68E909D07947A5E030952891E, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ), + ) + + Op.SSTORE(key=0x1, value=0x1) + + Op.STOP, + balance=0xDE0B6B3A7640000, + nonce=0, + address=Address(0xDCFF1EF291EC7B6A606AC4284680DB5A06F33054), # noqa: E501 + ) tx_data = [ Hash(addr_3, left_padding=True), diff --git a/tests/ported_static/stStaticCall/test_static_callcodecallcall_100_ooge2.py b/tests/ported_static/stStaticCall/test_static_callcodecallcall_100_ooge2.py index 9476ab23f76..ddc828b6da4 100644 --- a/tests/ported_static/stStaticCall/test_static_callcodecallcall_100_ooge2.py +++ b/tests/ported_static/stStaticCall/test_static_callcodecallcall_100_ooge2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -56,9 +55,7 @@ def test_static_callcodecallcall_100_ooge2( ) -> None: """Test_static_callcodecallcall_100_ooge2.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -69,44 +66,6 @@ def test_static_callcodecallcall_100_ooge2( gas_limit=30000000, ) - # Source: lll - # { (MSTORE 0 (CALLDATALOAD 0)) [[ 0 ]] (CALLCODE 150000 (CALLVALUE) 0 64 0 64 ) [[ 1 ]] 1} # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x0, value=Op.CALLDATALOAD(offset=0x0)) - + Op.SSTORE( - key=0x0, - value=Op.CALLCODE( - gas=0x249F0, - address=0x3C7AEF27501FCE796222312BCD7A4546DD60637, - value=Op.CALLVALUE, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ), - ) - + Op.SSTORE(key=0x1, value=0x1) - + Op.STOP, - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0xBA1D112A3EA7A5149E304FCEA53D3F6A76BD4CB9), # noqa: E501 - ) - # Source: lll - # { (MSTORE 0 (CALLDATALOAD 0)) (STATICCALL 100000 0 64 0 64 ) } # noqa: E501 - addr = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x0, value=Op.CALLDATALOAD(offset=0x0)) - + Op.STATICCALL( - gas=0x186A0, - address=0x33E1AD2A3AE944798E9ED4689B85D9136B59EBD2, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ) - + Op.STOP, - nonce=0, - address=Address(0x03C7AEF27501FCE796222312BCD7A4546DD60637), # noqa: E501 - ) # Source: lll # { (STATICCALL 20020 (CALLDATALOAD 0) 0 64 0 64 ) } addr_2 = pre.deploy_contract( # noqa: F841 @@ -144,7 +103,44 @@ def test_static_callcodecallcall_100_ooge2( nonce=0, address=Address(0xFBEF21C5A6C2ADCF3D769F085E0CC9FE9A8DF954), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: lll + # { (MSTORE 0 (CALLDATALOAD 0)) (STATICCALL 100000 0 64 0 64 ) } # noqa: E501 + addr = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x0, value=Op.CALLDATALOAD(offset=0x0)) + + Op.STATICCALL( + gas=0x186A0, + address=0x33E1AD2A3AE944798E9ED4689B85D9136B59EBD2, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ) + + Op.STOP, + nonce=0, + address=Address(0x03C7AEF27501FCE796222312BCD7A4546DD60637), # noqa: E501 + ) + # Source: lll + # { (MSTORE 0 (CALLDATALOAD 0)) [[ 0 ]] (CALLCODE 150000 (CALLVALUE) 0 64 0 64 ) [[ 1 ]] 1} # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x0, value=Op.CALLDATALOAD(offset=0x0)) + + Op.SSTORE( + key=0x0, + value=Op.CALLCODE( + gas=0x249F0, + address=0x3C7AEF27501FCE796222312BCD7A4546DD60637, + value=Op.CALLVALUE, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ), + ) + + Op.SSTORE(key=0x1, value=0x1) + + Op.STOP, + balance=0xDE0B6B3A7640000, + nonce=0, + address=Address(0xBA1D112A3EA7A5149E304FCEA53D3F6A76BD4CB9), # noqa: E501 + ) tx_data = [ Hash(addr_3, left_padding=True), diff --git a/tests/ported_static/stStaticCall/test_static_callcodecallcall_100_oogm_after.py b/tests/ported_static/stStaticCall/test_static_callcodecallcall_100_oogm_after.py index 3cdcb06e481..aa3f374072f 100644 --- a/tests/ported_static/stStaticCall/test_static_callcodecallcall_100_oogm_after.py +++ b/tests/ported_static/stStaticCall/test_static_callcodecallcall_100_oogm_after.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -36,9 +35,7 @@ def test_static_callcodecallcall_100_oogm_after( ) -> None: """Test_static_callcodecallcall_100_oogm_after.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -50,24 +47,28 @@ def test_static_callcodecallcall_100_oogm_after( ) # Source: lll - # { [[ 0 ]] (DELEGATECALL 60150 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.DELEGATECALL( - gas=0xEAF6, - address=0x2865FD3572B0B77173E5ED91E968ACAD55701151, + # { (MSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, + nonce=0, + ) + # Source: lll + # { (MSTORE 3 1) (STATICCALL 20020 0 64 0 64 ) (MSTORE 32 1) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + + Op.POP( + Op.STATICCALL( + gas=0x4E34, + address=addr_3, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, - ), + ) ) - + Op.SSTORE(key=0x1, value=0x1) + + Op.MSTORE(offset=0x20, value=0x1) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xE79AEE563C83547F229D955ECDCCA0F01FED9AA9), # noqa: E501 ) # Source: lll # { (MSTORE 3 1) (STATICCALL 40080 0 64 0 64 ) (def 'i 0x80) (for {} (< @i 50000) [i](+ @i 1) (EXTCODESIZE 1)) } # noqa: E501 @@ -76,7 +77,7 @@ def test_static_callcodecallcall_100_oogm_after( + Op.POP( Op.STATICCALL( gas=0x9C90, - address=0x694B007C276285E1A2424A78288ABF42FDDA6E71, + address=addr_2, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -93,35 +94,26 @@ def test_static_callcodecallcall_100_oogm_after( + Op.JUMPDEST + Op.STOP, nonce=0, - address=Address(0x2865FD3572B0B77173E5ED91E968ACAD55701151), # noqa: E501 ) # Source: lll - # { (MSTORE 3 1) (STATICCALL 20020 0 64 0 64 ) (MSTORE 32 1) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) - + Op.POP( - Op.STATICCALL( - gas=0x4E34, - address=0x335C5531B84765A7626E6E76688F18B81BE5259C, + # { [[ 0 ]] (DELEGATECALL 60150 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.DELEGATECALL( + gas=0xEAF6, + address=addr, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, - ) + ), ) - + Op.MSTORE(offset=0x20, value=0x1) + + Op.SSTORE(key=0x1, value=0x1) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x694B007C276285E1A2424A78288ABF42FDDA6E71), # noqa: E501 - ) - # Source: lll - # { (MSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, - nonce=0, - address=Address(0x335C5531B84765A7626E6E76688F18B81BE5259C), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_callcodecallcall_100_oogm_after2.py b/tests/ported_static/stStaticCall/test_static_callcodecallcall_100_oogm_after2.py index 40d80114a76..655f6dd9441 100644 --- a/tests/ported_static/stStaticCall/test_static_callcodecallcall_100_oogm_after2.py +++ b/tests/ported_static/stStaticCall/test_static_callcodecallcall_100_oogm_after2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -58,9 +57,7 @@ def test_static_callcodecallcall_100_oogm_after2( ) -> None: """Test_static_callcodecallcall_100_oogm_after2.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -93,6 +90,28 @@ def test_static_callcodecallcall_100_oogm_after2( address=Address(0x8B3623C74BBF83102ADC34299D32B5CD0E7D8CB9), # noqa: E501 ) # Source: lll + # { (MSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, + nonce=0, + address=Address(0x335C5531B84765A7626E6E76688F18B81BE5259C), # noqa: E501 + ) + # Source: lll + # { (STATICCALL 120020 0 64 0 64 ) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.STATICCALL( + gas=0x1D4D4, + address=0x335C5531B84765A7626E6E76688F18B81BE5259C, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ) + + Op.STOP, + nonce=0, + address=Address(0x444DF104EA3853BFEAA91A755136F33385D12EEA), # noqa: E501 + ) + # Source: lll # { (STATICCALL 400080 0 64 0 64 ) (def 'i 0x80) (for {} (< @i 50000) [i](+ @i 1) (EXTCODESIZE 1)) } # noqa: E501 addr = pre.deploy_contract( # noqa: F841 code=Op.POP( @@ -117,29 +136,6 @@ def test_static_callcodecallcall_100_oogm_after2( nonce=0, address=Address(0xF4645C150A8060778AD94DFFE302081FC222DEDB), # noqa: E501 ) - # Source: lll - # { (STATICCALL 120020 0 64 0 64 ) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.STATICCALL( - gas=0x1D4D4, - address=0x335C5531B84765A7626E6E76688F18B81BE5259C, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ) - + Op.STOP, - nonce=0, - address=Address(0x444DF104EA3853BFEAA91A755136F33385D12EEA), # noqa: E501 - ) - # Source: lll - # { (MSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, - nonce=0, - address=Address(0x335C5531B84765A7626E6E76688F18B81BE5259C), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx_data = [ Hash(addr, left_padding=True), diff --git a/tests/ported_static/stStaticCall/test_static_callcodecallcall_100_oogm_after_2.py b/tests/ported_static/stStaticCall/test_static_callcodecallcall_100_oogm_after_2.py index 925ac1cbddf..d3288a69630 100644 --- a/tests/ported_static/stStaticCall/test_static_callcodecallcall_100_oogm_after_2.py +++ b/tests/ported_static/stStaticCall/test_static_callcodecallcall_100_oogm_after_2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -36,9 +35,7 @@ def test_static_callcodecallcall_100_oogm_after_2( ) -> None: """Test_static_callcodecallcall_100_oogm_after_2.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -50,24 +47,28 @@ def test_static_callcodecallcall_100_oogm_after_2( ) # Source: lll - # { [[ 0 ]] (DELEGATECALL 601500 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.DELEGATECALL( - gas=0x92D9C, - address=0xA4306100C983E6928DEBC547240D7FE9DEDF2EF8, + # { (MSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, + nonce=0, + ) + # Source: lll + # { (MSTORE 3 1) (STATICCALL 120020 0 64 0 64 ) (MSTORE 3 1) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + + Op.POP( + Op.STATICCALL( + gas=0x1D4D4, + address=addr_3, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, - ), + ) ) - + Op.SSTORE(key=0x1, value=0x1) + + Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x0BC6FE23B1C8D7E29532373698CDF5BA4A4E7B88), # noqa: E501 ) # Source: lll # { (MSTORE 3 1) (STATICCALL 400080 0 64 0 64 ) (def 'i 0x80) (for {} (< @i 50000) [i](+ @i 1) (EXTCODESIZE 1)) } # noqa: E501 @@ -76,7 +77,7 @@ def test_static_callcodecallcall_100_oogm_after_2( + Op.POP( Op.STATICCALL( gas=0x61AD0, - address=0x12C33B5028F0A7D7777501A5E899D92B2EC75B9A, + address=addr_2, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -93,35 +94,26 @@ def test_static_callcodecallcall_100_oogm_after_2( + Op.JUMPDEST + Op.STOP, nonce=0, - address=Address(0xA4306100C983E6928DEBC547240D7FE9DEDF2EF8), # noqa: E501 ) # Source: lll - # { (MSTORE 3 1) (STATICCALL 120020 0 64 0 64 ) (MSTORE 3 1) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) - + Op.POP( - Op.STATICCALL( - gas=0x1D4D4, - address=0x335C5531B84765A7626E6E76688F18B81BE5259C, + # { [[ 0 ]] (DELEGATECALL 601500 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.DELEGATECALL( + gas=0x92D9C, + address=addr, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, - ) + ), ) - + Op.MSTORE(offset=0x3, value=0x1) + + Op.SSTORE(key=0x1, value=0x1) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x12C33B5028F0A7D7777501A5E899D92B2EC75B9A), # noqa: E501 - ) - # Source: lll - # { (MSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, - nonce=0, - address=Address(0x335C5531B84765A7626E6E76688F18B81BE5259C), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_callcodecallcall_100_oogm_after_3.py b/tests/ported_static/stStaticCall/test_static_callcodecallcall_100_oogm_after_3.py index 981570ea381..c4003605e60 100644 --- a/tests/ported_static/stStaticCall/test_static_callcodecallcall_100_oogm_after_3.py +++ b/tests/ported_static/stStaticCall/test_static_callcodecallcall_100_oogm_after_3.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -61,9 +60,7 @@ def test_static_callcodecallcall_100_oogm_after_3( ) -> None: """Test_static_callcodecallcall_100_oogm_after_3.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -75,25 +72,28 @@ def test_static_callcodecallcall_100_oogm_after_3( ) # Source: lll - # { [[ 0 ]] (CALLCODE 60150 (CALLVALUE) 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.CALLCODE( - gas=0xEAF6, - address=0x2865FD3572B0B77173E5ED91E968ACAD55701151, - value=Op.CALLVALUE, + # { (MSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, + nonce=0, + ) + # Source: lll + # { (MSTORE 3 1) (STATICCALL 20020 0 64 0 64 ) (MSTORE 32 1) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + + Op.POP( + Op.STATICCALL( + gas=0x4E34, + address=addr_3, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, - ), + ) ) - + Op.SSTORE(key=0x1, value=0x1) + + Op.MSTORE(offset=0x20, value=0x1) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x62B278A07428F1FF97EE7C884B711F6DF3340707), # noqa: E501 ) # Source: lll # { (MSTORE 3 1) (STATICCALL 40080 0 64 0 64 ) (def 'i 0x80) (for {} (< @i 50000) [i](+ @i 1) (EXTCODESIZE 1)) } # noqa: E501 @@ -102,7 +102,7 @@ def test_static_callcodecallcall_100_oogm_after_3( + Op.POP( Op.STATICCALL( gas=0x9C90, - address=0x694B007C276285E1A2424A78288ABF42FDDA6E71, + address=addr_2, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -119,35 +119,27 @@ def test_static_callcodecallcall_100_oogm_after_3( + Op.JUMPDEST + Op.STOP, nonce=0, - address=Address(0x2865FD3572B0B77173E5ED91E968ACAD55701151), # noqa: E501 ) # Source: lll - # { (MSTORE 3 1) (STATICCALL 20020 0 64 0 64 ) (MSTORE 32 1) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) - + Op.POP( - Op.STATICCALL( - gas=0x4E34, - address=0x335C5531B84765A7626E6E76688F18B81BE5259C, + # { [[ 0 ]] (CALLCODE 60150 (CALLVALUE) 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.CALLCODE( + gas=0xEAF6, + address=addr, + value=Op.CALLVALUE, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, - ) + ), ) - + Op.MSTORE(offset=0x20, value=0x1) + + Op.SSTORE(key=0x1, value=0x1) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x694B007C276285E1A2424A78288ABF42FDDA6E71), # noqa: E501 - ) - # Source: lll - # { (MSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, - nonce=0, - address=Address(0x335C5531B84765A7626E6E76688F18B81BE5259C), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stStaticCall/test_static_callcodecallcall_100_oogm_before.py b/tests/ported_static/stStaticCall/test_static_callcodecallcall_100_oogm_before.py index 3a95de7f19b..894c008a900 100644 --- a/tests/ported_static/stStaticCall/test_static_callcodecallcall_100_oogm_before.py +++ b/tests/ported_static/stStaticCall/test_static_callcodecallcall_100_oogm_before.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -58,9 +57,7 @@ def test_static_callcodecallcall_100_oogm_before( ) -> None: """Test_static_callcodecallcall_100_oogm_before.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -71,6 +68,31 @@ def test_static_callcodecallcall_100_oogm_before( gas_limit=30000000, ) + # Source: lll + # { (STATICCALL 40080 (CALLDATALOAD 0) 0 64 0 64 ) (MSTORE 3 1) } + addr = pre.deploy_contract( # noqa: F841 + code=Op.POP( + Op.STATICCALL( + gas=0x9C90, + address=Op.CALLDATALOAD(offset=0x0), + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ) + ) + + Op.MSTORE(offset=0x3, value=0x1) + + Op.STOP, + nonce=0, + address=Address(0x570B7A7EB7D0539D77442B6262127229B9B6C19F), # noqa: E501 + ) + # Source: lll + # { (MSTORE 3 1) } + addr_4 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, + nonce=0, + address=Address(0x335C5531B84765A7626E6E76688F18B81BE5259C), # noqa: E501 + ) # Source: lll # { (MSTORE 0 (CALLDATALOAD 0)) [[ 0 ]] (DELEGATECALL 150000 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -93,24 +115,6 @@ def test_static_callcodecallcall_100_oogm_before( address=Address(0xB1DDDCE88104538F48811F8E62AF99666E0C3A4E), # noqa: E501 ) # Source: lll - # { (STATICCALL 40080 (CALLDATALOAD 0) 0 64 0 64 ) (MSTORE 3 1) } - addr = pre.deploy_contract( # noqa: F841 - code=Op.POP( - Op.STATICCALL( - gas=0x9C90, - address=Op.CALLDATALOAD(offset=0x0), - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ) - ) - + Op.MSTORE(offset=0x3, value=0x1) - + Op.STOP, - nonce=0, - address=Address(0x570B7A7EB7D0539D77442B6262127229B9B6C19F), # noqa: E501 - ) - # Source: lll # { (def 'i 0x80) (for {} (< @i 50000) [i](+ @i 1) (EXTCODESIZE 1)) (STATICCALL 20020 0 64 0 64 ) } # noqa: E501 addr_2 = pre.deploy_contract( # noqa: F841 code=Op.JUMPDEST @@ -152,14 +156,6 @@ def test_static_callcodecallcall_100_oogm_before( nonce=0, address=Address(0x4670334E92C4D14771FAADB3C90C987CB337ACCA), # noqa: E501 ) - # Source: lll - # { (MSTORE 3 1) } - addr_4 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, - nonce=0, - address=Address(0x335C5531B84765A7626E6E76688F18B81BE5259C), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx_data = [ Hash(addr_2, left_padding=True), diff --git a/tests/ported_static/stStaticCall/test_static_callcodecallcall_100_oogm_before2.py b/tests/ported_static/stStaticCall/test_static_callcodecallcall_100_oogm_before2.py index 0f513f095fb..791b780df05 100644 --- a/tests/ported_static/stStaticCall/test_static_callcodecallcall_100_oogm_before2.py +++ b/tests/ported_static/stStaticCall/test_static_callcodecallcall_100_oogm_before2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -70,9 +69,7 @@ def test_static_callcodecallcall_100_oogm_before2( ) -> None: """Test_static_callcodecallcall_100_oogm_before2.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -83,6 +80,29 @@ def test_static_callcodecallcall_100_oogm_before2( gas_limit=30000000, ) + # Source: lll + # { (MSTORE 3 1) (STATICCALL 40080 (CALLDATALOAD 0) 0 64 0 64 ) } + addr = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + + Op.STATICCALL( + gas=0x9C90, + address=Op.CALLDATALOAD(offset=0x0), + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ) + + Op.STOP, + nonce=0, + address=Address(0x99FE987D98B818ED5AF6AE7B1A91A3BE35956195), # noqa: E501 + ) + # Source: lll + # { (MSTORE 3 1) } + addr_4 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, + nonce=0, + address=Address(0x335C5531B84765A7626E6E76688F18B81BE5259C), # noqa: E501 + ) # Source: lll # { (MSTORE 0 (CALLDATALOAD 0)) [[ 0 ]] (CALLCODE 150000 (CALLVALUE) 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -106,12 +126,12 @@ def test_static_callcodecallcall_100_oogm_before2( address=Address(0xF7520E9898ED4E699844182C95EFECAB5D06AD13), # noqa: E501 ) # Source: lll - # { (MSTORE 3 1) (STATICCALL 40080 (CALLDATALOAD 0) 0 64 0 64 ) } - addr = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) + # { (SSTORE 3 1) (STATICCALL 20020 0 64 0 64 ) } # noqa: E501 + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STATICCALL( - gas=0x9C90, - address=Op.CALLDATALOAD(offset=0x0), + gas=0x4E34, + address=0x335C5531B84765A7626E6E76688F18B81BE5259C, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -119,7 +139,7 @@ def test_static_callcodecallcall_100_oogm_before2( ) + Op.STOP, nonce=0, - address=Address(0x99FE987D98B818ED5AF6AE7B1A91A3BE35956195), # noqa: E501 + address=Address(0x28124C297E97622ED1D89A53F804C178AEAF3BBF), # noqa: E501 ) # Source: lll # { (def 'i 0x80) (for {} (< @i 50000) [i](+ @i 1) (EXTCODESIZE 1)) (STATICCALL 20020 0 64 0 64 ) } # noqa: E501 @@ -144,30 +164,6 @@ def test_static_callcodecallcall_100_oogm_before2( nonce=0, address=Address(0x6224E12321037BF1B980D03FDC3E8AFB95E9E794), # noqa: E501 ) - # Source: lll - # { (SSTORE 3 1) (STATICCALL 20020 0 64 0 64 ) } # noqa: E501 - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) - + Op.STATICCALL( - gas=0x4E34, - address=0x335C5531B84765A7626E6E76688F18B81BE5259C, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ) - + Op.STOP, - nonce=0, - address=Address(0x28124C297E97622ED1D89A53F804C178AEAF3BBF), # noqa: E501 - ) - # Source: lll - # { (MSTORE 3 1) } - addr_4 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, - nonce=0, - address=Address(0x335C5531B84765A7626E6E76688F18B81BE5259C), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx_data = [ Hash(addr_2, left_padding=True), diff --git a/tests/ported_static/stStaticCall/test_static_callcodecallcall_100_suicide_end.py b/tests/ported_static/stStaticCall/test_static_callcodecallcall_100_suicide_end.py index 07557a7944b..3afb781fa8b 100644 --- a/tests/ported_static/stStaticCall/test_static_callcodecallcall_100_suicide_end.py +++ b/tests/ported_static/stStaticCall/test_static_callcodecallcall_100_suicide_end.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -36,9 +35,7 @@ def test_static_callcodecallcall_100_suicide_end( ) -> None: """Test_static_callcodecallcall_100_suicide_end.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,6 +46,14 @@ def test_static_callcodecallcall_100_suicide_end( gas_limit=30000000, ) + # Source: lll + # { (MSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, + balance=0x2540BE400, + nonce=0, + address=Address(0x48E2D4C0B593BFEBE5DDB4F13AA355B8BD83DDD3), # noqa: E501 + ) # Source: lll # { [[ 0 ]] (DELEGATECALL 150000 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -109,15 +114,6 @@ def test_static_callcodecallcall_100_suicide_end( nonce=0, address=Address(0x8C800ABF2A49CA6FFAC93555AF4B5C7F9A3A8186), # noqa: E501 ) - # Source: lll - # { (MSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, - balance=0x2540BE400, - nonce=0, - address=Address(0x48E2D4C0B593BFEBE5DDB4F13AA355B8BD83DDD3), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_callcodecallcall_100_suicide_end2.py b/tests/ported_static/stStaticCall/test_static_callcodecallcall_100_suicide_end2.py index f48c9e87062..0752d84ae55 100644 --- a/tests/ported_static/stStaticCall/test_static_callcodecallcall_100_suicide_end2.py +++ b/tests/ported_static/stStaticCall/test_static_callcodecallcall_100_suicide_end2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -36,9 +35,7 @@ def test_static_callcodecallcall_100_suicide_end2( ) -> None: """Test_static_callcodecallcall_100_suicide_end2.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,6 +46,14 @@ def test_static_callcodecallcall_100_suicide_end2( gas_limit=30000000, ) + # Source: lll + # { (MSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, + balance=0x2540BE400, + nonce=0, + address=Address(0x48E2D4C0B593BFEBE5DDB4F13AA355B8BD83DDD3), # noqa: E501 + ) # Source: lll # { [[ 0 ]] (CALLCODE 150000 0 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -110,15 +115,6 @@ def test_static_callcodecallcall_100_suicide_end2( nonce=0, address=Address(0x8C800ABF2A49CA6FFAC93555AF4B5C7F9A3A8186), # noqa: E501 ) - # Source: lll - # { (MSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, - balance=0x2540BE400, - nonce=0, - address=Address(0x48E2D4C0B593BFEBE5DDB4F13AA355B8BD83DDD3), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_callcodecallcall_100_suicide_middle.py b/tests/ported_static/stStaticCall/test_static_callcodecallcall_100_suicide_middle.py index 580cac95a91..59fae6d7aa5 100644 --- a/tests/ported_static/stStaticCall/test_static_callcodecallcall_100_suicide_middle.py +++ b/tests/ported_static/stStaticCall/test_static_callcodecallcall_100_suicide_middle.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -36,9 +35,7 @@ def test_static_callcodecallcall_100_suicide_middle( ) -> None: """Test_static_callcodecallcall_100_suicide_middle.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,6 +46,14 @@ def test_static_callcodecallcall_100_suicide_middle( gas_limit=30000000, ) + # Source: lll + # { (MSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, + balance=0x2540BE400, + nonce=0, + address=Address(0x48E2D4C0B593BFEBE5DDB4F13AA355B8BD83DDD3), # noqa: E501 + ) # Source: lll # { [[ 0 ]] (DELEGATECALL 150000 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -108,15 +113,6 @@ def test_static_callcodecallcall_100_suicide_middle( nonce=0, address=Address(0x408F1ACEFFEC7BDAA35D77006CDCAEAD563BB694), # noqa: E501 ) - # Source: lll - # { (MSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, - balance=0x2540BE400, - nonce=0, - address=Address(0x48E2D4C0B593BFEBE5DDB4F13AA355B8BD83DDD3), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_callcodecallcall_100_suicide_middle2.py b/tests/ported_static/stStaticCall/test_static_callcodecallcall_100_suicide_middle2.py index 0a5324c482b..909f0b2e455 100644 --- a/tests/ported_static/stStaticCall/test_static_callcodecallcall_100_suicide_middle2.py +++ b/tests/ported_static/stStaticCall/test_static_callcodecallcall_100_suicide_middle2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -58,9 +57,7 @@ def test_static_callcodecallcall_100_suicide_middle2( ) -> None: """Test_static_callcodecallcall_100_suicide_middle2.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -71,6 +68,14 @@ def test_static_callcodecallcall_100_suicide_middle2( gas_limit=30000000, ) + # Source: lll + # { (MSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, + balance=0x2540BE400, + nonce=0, + address=Address(0x48E2D4C0B593BFEBE5DDB4F13AA355B8BD83DDD3), # noqa: E501 + ) # Source: lll # { [[ 0 ]] (CALLCODE 150000 (CALLVALUE) 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -125,15 +130,6 @@ def test_static_callcodecallcall_100_suicide_middle2( nonce=0, address=Address(0x408F1ACEFFEC7BDAA35D77006CDCAEAD563BB694), # noqa: E501 ) - # Source: lll - # { (MSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, - balance=0x2540BE400, - nonce=0, - address=Address(0x48E2D4C0B593BFEBE5DDB4F13AA355B8BD83DDD3), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx_data = [ Bytes(""), diff --git a/tests/ported_static/stStaticCall/test_static_callcodecallcallcode_101.py b/tests/ported_static/stStaticCall/test_static_callcodecallcallcode_101.py index ae839ce0b2d..d15dada4249 100644 --- a/tests/ported_static/stStaticCall/test_static_callcodecallcallcode_101.py +++ b/tests/ported_static/stStaticCall/test_static_callcodecallcallcode_101.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,9 +33,7 @@ def test_static_callcodecallcallcode_101( ) -> None: """Test_static_callcodecallcallcode_101.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -48,24 +45,29 @@ def test_static_callcodecallcallcode_101( ) # Source: lll - # { [[ 0 ]] (DELEGATECALL 350000 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.DELEGATECALL( - gas=0x55730, - address=0xF553D6B8627C39028BD1E05A4F55E2A4B3042A1D, + # { (MSTORE 1 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x1, value=0x1) + Op.STOP, + nonce=0, + ) + # Source: lll + # { (MSTORE 1 1) (DELEGATECALL 250000 0 64 0 64 ) (MSTORE 31 1) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x1, value=0x1) + + Op.POP( + Op.DELEGATECALL( + gas=0x3D090, + address=addr_3, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, - ), + ) ) - + Op.SSTORE(key=0x1, value=0x1) + + Op.MSTORE(offset=0x1F, value=0x1) + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x4EEF7E2B5AE9BE0FC5B43DC4FE39195A1AE10FC4), # noqa: E501 ) # Source: lll # { (MSTORE 1 1) (STATICCALL 300000 0 64 0 64 ) (MSTORE 31 1) } # noqa: E501 @@ -74,7 +76,7 @@ def test_static_callcodecallcallcode_101( + Op.POP( Op.STATICCALL( gas=0x493E0, - address=0x999E3C988E5FDF24ADF774E3502F0095E6530B72, + address=addr_2, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -85,36 +87,26 @@ def test_static_callcodecallcallcode_101( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xF553D6B8627C39028BD1E05A4F55E2A4B3042A1D), # noqa: E501 ) # Source: lll - # { (MSTORE 1 1) (DELEGATECALL 250000 0 64 0 64 ) (MSTORE 31 1) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x1, value=0x1) - + Op.POP( - Op.DELEGATECALL( - gas=0x3D090, - address=0x2A142C79A9B097C111CE945214226126B75E332C, + # { [[ 0 ]] (DELEGATECALL 350000 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.DELEGATECALL( + gas=0x55730, + address=addr, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, - ) + ), ) - + Op.MSTORE(offset=0x1F, value=0x1) + + Op.SSTORE(key=0x1, value=0x1) + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x999E3C988E5FDF24ADF774E3502F0095E6530B72), # noqa: E501 - ) - # Source: lll - # { (MSTORE 1 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x1, value=0x1) + Op.STOP, - nonce=0, - address=Address(0x2A142C79A9B097C111CE945214226126B75E332C), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_callcodecallcallcode_101_2.py b/tests/ported_static/stStaticCall/test_static_callcodecallcallcode_101_2.py index 30d73188050..e8cb16990aa 100644 --- a/tests/ported_static/stStaticCall/test_static_callcodecallcallcode_101_2.py +++ b/tests/ported_static/stStaticCall/test_static_callcodecallcallcode_101_2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -56,9 +55,7 @@ def test_static_callcodecallcallcode_101_2( ) -> None: """Test_static_callcodecallcallcode_101_2.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -69,6 +66,29 @@ def test_static_callcodecallcallcode_101_2( gas_limit=30000000, ) + # Source: lll + # { (STATICCALL 300000 (CALLDATALOAD 0) 0 64 0 64 ) } + addr = pre.deploy_contract( # noqa: F841 + code=Op.STATICCALL( + gas=0x493E0, + address=Op.CALLDATALOAD(offset=0x0), + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ) + + Op.STOP, + balance=0xDE0B6B3A7640000, + nonce=0, + address=Address(0x1B78AFBE56D4678CFA8DC79DF079BAD5585B8D3A), # noqa: E501 + ) + # Source: lll + # { (MSTORE 1 1) } + addr_4 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x1, value=0x1) + Op.STOP, + nonce=0, + address=Address(0x2A142C79A9B097C111CE945214226126B75E332C), # noqa: E501 + ) # Source: lll # { (MSTORE 0 (CALLDATALOAD 0)) [[ 0 ]] (CALLCODE 350000 (CALLVALUE) 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -92,22 +112,6 @@ def test_static_callcodecallcallcode_101_2( address=Address(0x3F13B55C156D810BC161E971891180011E088E6F), # noqa: E501 ) # Source: lll - # { (STATICCALL 300000 (CALLDATALOAD 0) 0 64 0 64 ) } - addr = pre.deploy_contract( # noqa: F841 - code=Op.STATICCALL( - gas=0x493E0, - address=Op.CALLDATALOAD(offset=0x0), - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ) - + Op.STOP, - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0x1B78AFBE56D4678CFA8DC79DF079BAD5585B8D3A), # noqa: E501 - ) - # Source: lll # { (CALLCODE 250000 0 0 64 0 64 ) } # noqa: E501 addr_2 = pre.deploy_contract( # noqa: F841 code=Op.CALLCODE( @@ -141,14 +145,6 @@ def test_static_callcodecallcallcode_101_2( nonce=0, address=Address(0x3CEA889FD03A922CC673D25E5DB4E72743AA4878), # noqa: E501 ) - # Source: lll - # { (MSTORE 1 1) } - addr_4 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x1, value=0x1) + Op.STOP, - nonce=0, - address=Address(0x2A142C79A9B097C111CE945214226126B75E332C), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx_data = [ Hash(addr_2, left_padding=True), diff --git a/tests/ported_static/stStaticCall/test_static_callcodecallcallcode_101_ooge.py b/tests/ported_static/stStaticCall/test_static_callcodecallcallcode_101_ooge.py index 9634a7bc2ac..68174dec990 100644 --- a/tests/ported_static/stStaticCall/test_static_callcodecallcallcode_101_ooge.py +++ b/tests/ported_static/stStaticCall/test_static_callcodecallcallcode_101_ooge.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -36,9 +35,7 @@ def test_static_callcodecallcallcode_101_ooge( ) -> None: """Test_static_callcodecallcallcode_101_ooge.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -50,31 +47,25 @@ def test_static_callcodecallcallcode_101_ooge( ) # Source: lll - # { [[ 0 ]] (DELEGATECALL 350000 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.DELEGATECALL( - gas=0x55730, - address=0xAF91DF7B32C8778F1428F893F7356F90CFC2CBB7, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ), + # { (def 'i 0x80) (for {} (< @i 50000) [i](+ @i 1) (EXTCODESIZE 1)) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.JUMPDEST + + Op.JUMPI( + pc=0x1C, condition=Op.ISZERO(Op.LT(Op.MLOAD(offset=0x80), 0xC350)) ) - + Op.SSTORE(key=0x1, value=0x1) + + Op.POP(Op.EXTCODESIZE(address=0x1)) + + Op.MSTORE(offset=0x80, value=Op.ADD(Op.MLOAD(offset=0x80), 0x1)) + + Op.JUMP(pc=0x0) + + Op.JUMPDEST + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x4EEF7E2B5AE9BE0FC5B43DC4FE39195A1AE10FC4), # noqa: E501 ) # Source: lll - # { (STATICCALL 200000 0 64 0 64 ) } # noqa: E501 - addr = pre.deploy_contract( # noqa: F841 - code=Op.STATICCALL( - gas=0x30D40, - address=0x9126E4F25CC411A2D9D393AFEDB321EEF8A5AC94, + # { (DELEGATECALL 120020 0 64 0 64 ) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.DELEGATECALL( + gas=0x1D4D4, + address=addr_3, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -82,14 +73,13 @@ def test_static_callcodecallcallcode_101_ooge( ) + Op.STOP, nonce=0, - address=Address(0xAF91DF7B32C8778F1428F893F7356F90CFC2CBB7), # noqa: E501 ) # Source: lll - # { (DELEGATECALL 120020 0 64 0 64 ) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.DELEGATECALL( - gas=0x1D4D4, - address=0xFBEF21C5A6C2ADCF3D769F085E0CC9FE9A8DF954, + # { (STATICCALL 200000 0 64 0 64 ) } # noqa: E501 + addr = pre.deploy_contract( # noqa: F841 + code=Op.STATICCALL( + gas=0x30D40, + address=addr_2, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -97,24 +87,26 @@ def test_static_callcodecallcallcode_101_ooge( ) + Op.STOP, nonce=0, - address=Address(0x9126E4F25CC411A2D9D393AFEDB321EEF8A5AC94), # noqa: E501 ) # Source: lll - # { (def 'i 0x80) (for {} (< @i 50000) [i](+ @i 1) (EXTCODESIZE 1)) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.JUMPDEST - + Op.JUMPI( - pc=0x1C, condition=Op.ISZERO(Op.LT(Op.MLOAD(offset=0x80), 0xC350)) + # { [[ 0 ]] (DELEGATECALL 350000 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.DELEGATECALL( + gas=0x55730, + address=addr, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ), ) - + Op.POP(Op.EXTCODESIZE(address=0x1)) - + Op.MSTORE(offset=0x80, value=Op.ADD(Op.MLOAD(offset=0x80), 0x1)) - + Op.JUMP(pc=0x0) - + Op.JUMPDEST + + Op.SSTORE(key=0x1, value=0x1) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xFBEF21C5A6C2ADCF3D769F085E0CC9FE9A8DF954), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_callcodecallcallcode_101_ooge_2.py b/tests/ported_static/stStaticCall/test_static_callcodecallcallcode_101_ooge_2.py index 237eb4aae76..bd879aec938 100644 --- a/tests/ported_static/stStaticCall/test_static_callcodecallcallcode_101_ooge_2.py +++ b/tests/ported_static/stStaticCall/test_static_callcodecallcallcode_101_ooge_2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -36,9 +35,7 @@ def test_static_callcodecallcallcode_101_ooge_2( ) -> None: """Test_static_callcodecallcallcode_101_ooge_2.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -50,32 +47,26 @@ def test_static_callcodecallcallcode_101_ooge_2( ) # Source: lll - # { [[ 0 ]] (CALLCODE 150000 0 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.CALLCODE( - gas=0x249F0, - address=0x13DDAC4297B5C0FB95BBC6D982184549393A980D, - value=0x0, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ), + # { (def 'i 0x80) (for {} (< @i 50000) [i](+ @i 1) (EXTCODESIZE 1)) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.JUMPDEST + + Op.JUMPI( + pc=0x1C, condition=Op.ISZERO(Op.LT(Op.MLOAD(offset=0x80), 0xC350)) ) - + Op.SSTORE(key=0x1, value=0x1) + + Op.POP(Op.EXTCODESIZE(address=0x1)) + + Op.MSTORE(offset=0x80, value=Op.ADD(Op.MLOAD(offset=0x80), 0x1)) + + Op.JUMP(pc=0x0) + + Op.JUMPDEST + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x66227CF0A560E1F6F9E94345DD1B5C6758923BA6), # noqa: E501 ) # Source: lll - # { (STATICCALL 100000 0 64 0 64 ) } # noqa: E501 - addr = pre.deploy_contract( # noqa: F841 - code=Op.STATICCALL( - gas=0x186A0, - address=0x25D69E6A677BD6D872F436BAD807C3244A268673, + # { (CALLCODE 20020 0 0 64 0 64 ) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.CALLCODE( + gas=0x4E34, + address=addr_3, + value=0x0, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -83,15 +74,13 @@ def test_static_callcodecallcallcode_101_ooge_2( ) + Op.STOP, nonce=0, - address=Address(0x13DDAC4297B5C0FB95BBC6D982184549393A980D), # noqa: E501 ) # Source: lll - # { (CALLCODE 20020 0 0 64 0 64 ) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.CALLCODE( - gas=0x4E34, - address=0xFBEF21C5A6C2ADCF3D769F085E0CC9FE9A8DF954, - value=0x0, + # { (STATICCALL 100000 0 64 0 64 ) } # noqa: E501 + addr = pre.deploy_contract( # noqa: F841 + code=Op.STATICCALL( + gas=0x186A0, + address=addr_2, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -99,24 +88,27 @@ def test_static_callcodecallcallcode_101_ooge_2( ) + Op.STOP, nonce=0, - address=Address(0x25D69E6A677BD6D872F436BAD807C3244A268673), # noqa: E501 ) # Source: lll - # { (def 'i 0x80) (for {} (< @i 50000) [i](+ @i 1) (EXTCODESIZE 1)) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.JUMPDEST - + Op.JUMPI( - pc=0x1C, condition=Op.ISZERO(Op.LT(Op.MLOAD(offset=0x80), 0xC350)) + # { [[ 0 ]] (CALLCODE 150000 0 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.CALLCODE( + gas=0x249F0, + address=addr, + value=0x0, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ), ) - + Op.POP(Op.EXTCODESIZE(address=0x1)) - + Op.MSTORE(offset=0x80, value=Op.ADD(Op.MLOAD(offset=0x80), 0x1)) - + Op.JUMP(pc=0x0) - + Op.JUMPDEST + + Op.SSTORE(key=0x1, value=0x1) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xFBEF21C5A6C2ADCF3D769F085E0CC9FE9A8DF954), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_callcodecallcallcode_101_oogm_after.py b/tests/ported_static/stStaticCall/test_static_callcodecallcallcode_101_oogm_after.py index 8d4da18661a..80bbe4d391a 100644 --- a/tests/ported_static/stStaticCall/test_static_callcodecallcallcode_101_oogm_after.py +++ b/tests/ported_static/stStaticCall/test_static_callcodecallcallcode_101_oogm_after.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -36,9 +35,7 @@ def test_static_callcodecallcallcode_101_oogm_after( ) -> None: """Test_static_callcodecallcallcode_101_oogm_after.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -50,24 +47,28 @@ def test_static_callcodecallcallcode_101_oogm_after( ) # Source: lll - # { [[ 0 ]] (DELEGATECALL 60150 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.DELEGATECALL( - gas=0xEAF6, - address=0x2865FD3572B0B77173E5ED91E968ACAD55701151, + # { (MSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, + nonce=0, + ) + # Source: lll + # { (MSTORE 3 1) (DELEGATECALL 20020 0 64 0 64 ) (MSTORE 3 1) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + + Op.POP( + Op.DELEGATECALL( + gas=0x4E34, + address=addr_3, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, - ), + ) ) - + Op.SSTORE(key=0x1, value=0x1) + + Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xE79AEE563C83547F229D955ECDCCA0F01FED9AA9), # noqa: E501 ) # Source: lll # { (MSTORE 3 1) (STATICCALL 40080 0 64 0 64 ) (def 'i 0x80) (for {} (< @i 50000) [i](+ @i 1) (EXTCODESIZE 1)) } # noqa: E501 @@ -76,7 +77,7 @@ def test_static_callcodecallcallcode_101_oogm_after( + Op.POP( Op.STATICCALL( gas=0x9C90, - address=0x2C0BFFB833F0BD1BDCB227A4FE215CF640316BB, + address=addr_2, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -93,35 +94,26 @@ def test_static_callcodecallcallcode_101_oogm_after( + Op.JUMPDEST + Op.STOP, nonce=0, - address=Address(0x2865FD3572B0B77173E5ED91E968ACAD55701151), # noqa: E501 ) # Source: lll - # { (MSTORE 3 1) (DELEGATECALL 20020 0 64 0 64 ) (MSTORE 3 1) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) - + Op.POP( - Op.DELEGATECALL( - gas=0x4E34, - address=0x335C5531B84765A7626E6E76688F18B81BE5259C, + # { [[ 0 ]] (DELEGATECALL 60150 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.DELEGATECALL( + gas=0xEAF6, + address=addr, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, - ) + ), ) - + Op.MSTORE(offset=0x3, value=0x1) + + Op.SSTORE(key=0x1, value=0x1) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x02C0BFFB833F0BD1BDCB227A4FE215CF640316BB), # noqa: E501 - ) - # Source: lll - # { (MSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, - nonce=0, - address=Address(0x335C5531B84765A7626E6E76688F18B81BE5259C), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_callcodecallcallcode_101_oogm_after2.py b/tests/ported_static/stStaticCall/test_static_callcodecallcallcode_101_oogm_after2.py index 6a290e5d3fa..22aa6944777 100644 --- a/tests/ported_static/stStaticCall/test_static_callcodecallcallcode_101_oogm_after2.py +++ b/tests/ported_static/stStaticCall/test_static_callcodecallcallcode_101_oogm_after2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -62,9 +61,7 @@ def test_static_callcodecallcallcode_101_oogm_after2( contract_1 = Address(0x1000000000000000000000000000000000000001) contract_2 = Address(0x1000000000000000000000000000000000000002) contract_3 = Address(0x1000000000000000000000000000000000000003) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -76,25 +73,26 @@ def test_static_callcodecallcallcode_101_oogm_after2( ) # Source: lll - # { [[ 0 ]] (CALLCODE 60150 0x1000000000000000000000000000000000000001 (CALLVALUE) 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 - contract_0 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.CALLCODE( - gas=0xEAF6, - address=0x1000000000000000000000000000000000000001, - value=Op.CALLVALUE, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ), + # { (MSTORE 3 1) } + contract_3 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, + nonce=0, + ) + # Source: lll + # { (MSTORE 3 1) (CALLCODE 20020 0x1000000000000000000000000000000000000003 0 0 64 0 64 ) } # noqa: E501 + contract_2 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + + Op.CALLCODE( + gas=0x4E34, + address=contract_3, + value=0x0, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, ) - + Op.SSTORE(key=0x1, value=0x1) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x1000000000000000000000000000000000000000), # noqa: E501 ) # Source: lll # { (MSTORE 3 1) (STATICCALL 40080 0x1000000000000000000000000000000000000002 0 64 0 64 ) (def 'i 0x80) (for {} (< @i 50000) [i](+ @i 1) (EXTCODESIZE 1)) } # noqa: E501 @@ -103,7 +101,7 @@ def test_static_callcodecallcallcode_101_oogm_after2( + Op.POP( Op.STATICCALL( gas=0x9C90, - address=0x1000000000000000000000000000000000000002, + address=contract_2, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -120,33 +118,27 @@ def test_static_callcodecallcallcode_101_oogm_after2( + Op.JUMPDEST + Op.STOP, nonce=0, - address=Address(0x1000000000000000000000000000000000000001), # noqa: E501 ) # Source: lll - # { (MSTORE 3 1) (CALLCODE 20020 0x1000000000000000000000000000000000000003 0 0 64 0 64 ) } # noqa: E501 - contract_2 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) - + Op.CALLCODE( - gas=0x4E34, - address=0x1000000000000000000000000000000000000003, - value=0x0, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, + # { [[ 0 ]] (CALLCODE 60150 0x1000000000000000000000000000000000000001 (CALLVALUE) 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 + contract_0 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.CALLCODE( + gas=0xEAF6, + address=contract_1, + value=Op.CALLVALUE, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ), ) + + Op.SSTORE(key=0x1, value=0x1) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x1000000000000000000000000000000000000002), # noqa: E501 - ) - # Source: lll - # { (MSTORE 3 1) } - contract_3 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, - nonce=0, - address=Address(0x1000000000000000000000000000000000000003), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx_data = [ Bytes(""), diff --git a/tests/ported_static/stStaticCall/test_static_callcodecallcallcode_101_oogm_after_1.py b/tests/ported_static/stStaticCall/test_static_callcodecallcallcode_101_oogm_after_1.py index 874506f1f4e..6822affea21 100644 --- a/tests/ported_static/stStaticCall/test_static_callcodecallcallcode_101_oogm_after_1.py +++ b/tests/ported_static/stStaticCall/test_static_callcodecallcallcode_101_oogm_after_1.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -58,9 +57,7 @@ def test_static_callcodecallcallcode_101_oogm_after_1( ) -> None: """Test_static_callcodecallcallcode_101_oogm_after_1.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -93,12 +90,26 @@ def test_static_callcodecallcallcode_101_oogm_after_1( address=Address(0xAAB59F13D96113334FAB5C68E4E62B61F6CBF647), # noqa: E501 ) # Source: lll - # { (CALLCODE 700150 0 0 64 0 64 ) (MSTORE 3 1) } # noqa: E501 - addr = pre.deploy_contract( # noqa: F841 + # { (MSTORE 3 1) } + addr_4 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, + nonce=0, + address=Address(0x335C5531B84765A7626E6E76688F18B81BE5259C), # noqa: E501 + ) + # Source: lll + # { (SSTORE 3 1) } + addr_8 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + nonce=0, + address=Address(0xB126C622075B1189FB6C45E851641CFADDF65B36), # noqa: E501 + ) + # Source: lll + # { (CALLCODE 120020 0 0 64 0 64 ) (MSTORE 3 1) } # noqa: E501 + addr_3 = pre.deploy_contract( # noqa: F841 code=Op.POP( Op.CALLCODE( - gas=0xAAEF6, - address=0xF4645C150A8060778AD94DFFE302081FC222DEDB, + gas=0x1D4D4, + address=0x335C5531B84765A7626E6E76688F18B81BE5259C, value=0x0, args_offset=0x0, args_size=0x40, @@ -108,9 +119,27 @@ def test_static_callcodecallcallcode_101_oogm_after_1( ) + Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xB9ABD0EF44AE2DF9F408D150C5B6FB6A181BE9CF), # noqa: E501 + address=Address(0x858DB7418C9E1C32811E5BC39366BDF6E2ED2492), # noqa: E501 + ) + # Source: lll + # { (CALLCODE 120020 0 0 64 0 64 ) (MSTORE 3 1) } # noqa: E501 + addr_7 = pre.deploy_contract( # noqa: F841 + code=Op.POP( + Op.CALLCODE( + gas=0x1D4D4, + address=0xB126C622075B1189FB6C45E851641CFADDF65B36, + value=0x0, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ) + ) + + Op.MSTORE(offset=0x3, value=0x1) + + Op.STOP, + nonce=0, + address=Address(0x677DB155FAB75972F19732AFB328A0EA6472A6AB), # noqa: E501 ) # Source: lll # { (STATICCALL 400080 0 64 0 64 ) (def 'i 0x80) (for {} (< @i 50000) [i](+ @i 1) (EXTCODESIZE 1)) } # noqa: E501 @@ -138,13 +167,12 @@ def test_static_callcodecallcallcode_101_oogm_after_1( address=Address(0xF4645C150A8060778AD94DFFE302081FC222DEDB), # noqa: E501 ) # Source: lll - # { (CALLCODE 120020 0 0 64 0 64 ) (MSTORE 3 1) } # noqa: E501 - addr_3 = pre.deploy_contract( # noqa: F841 + # { (STATICCALL 400080 0 64 0 64 ) (MSTORE 3 1) } # noqa: E501 + addr_6 = pre.deploy_contract( # noqa: F841 code=Op.POP( - Op.CALLCODE( - gas=0x1D4D4, - address=0x335C5531B84765A7626E6E76688F18B81BE5259C, - value=0x0, + Op.STATICCALL( + gas=0x61AD0, + address=0x677DB155FAB75972F19732AFB328A0EA6472A6AB, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -154,22 +182,15 @@ def test_static_callcodecallcallcode_101_oogm_after_1( + Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, nonce=0, - address=Address(0x858DB7418C9E1C32811E5BC39366BDF6E2ED2492), # noqa: E501 - ) - # Source: lll - # { (MSTORE 3 1) } - addr_4 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, - nonce=0, - address=Address(0x335C5531B84765A7626E6E76688F18B81BE5259C), # noqa: E501 + address=Address(0x18DC408F6983F318529A93583EE12F590C537820), # noqa: E501 ) # Source: lll - # { (CALLCODE 700150 0 0 64 0 64 ) (MSTORE 3 1)} # noqa: E501 - addr_5 = pre.deploy_contract( # noqa: F841 + # { (CALLCODE 700150 0 0 64 0 64 ) (MSTORE 3 1) } # noqa: E501 + addr = pre.deploy_contract( # noqa: F841 code=Op.POP( Op.CALLCODE( gas=0xAAEF6, - address=0x18DC408F6983F318529A93583EE12F590C537820, + address=0xF4645C150A8060778AD94DFFE302081FC222DEDB, value=0x0, args_offset=0x0, args_size=0x40, @@ -181,33 +202,15 @@ def test_static_callcodecallcallcode_101_oogm_after_1( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x6486B0CD8779006E5CD706484B0D890B9A220805), # noqa: E501 - ) - # Source: lll - # { (STATICCALL 400080 0 64 0 64 ) (MSTORE 3 1) } # noqa: E501 - addr_6 = pre.deploy_contract( # noqa: F841 - code=Op.POP( - Op.STATICCALL( - gas=0x61AD0, - address=0x677DB155FAB75972F19732AFB328A0EA6472A6AB, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ) - ) - + Op.MSTORE(offset=0x3, value=0x1) - + Op.STOP, - nonce=0, - address=Address(0x18DC408F6983F318529A93583EE12F590C537820), # noqa: E501 + address=Address(0xB9ABD0EF44AE2DF9F408D150C5B6FB6A181BE9CF), # noqa: E501 ) # Source: lll - # { (CALLCODE 120020 0 0 64 0 64 ) (MSTORE 3 1) } # noqa: E501 - addr_7 = pre.deploy_contract( # noqa: F841 + # { (CALLCODE 700150 0 0 64 0 64 ) (MSTORE 3 1)} # noqa: E501 + addr_5 = pre.deploy_contract( # noqa: F841 code=Op.POP( Op.CALLCODE( - gas=0x1D4D4, - address=0xB126C622075B1189FB6C45E851641CFADDF65B36, + gas=0xAAEF6, + address=0x18DC408F6983F318529A93583EE12F590C537820, value=0x0, args_offset=0x0, args_size=0x40, @@ -217,17 +220,10 @@ def test_static_callcodecallcallcode_101_oogm_after_1( ) + Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x677DB155FAB75972F19732AFB328A0EA6472A6AB), # noqa: E501 - ) - # Source: lll - # { (SSTORE 3 1) } - addr_8 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, - nonce=0, - address=Address(0xB126C622075B1189FB6C45E851641CFADDF65B36), # noqa: E501 + address=Address(0x6486B0CD8779006E5CD706484B0D890B9A220805), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx_data = [ Hash(addr, left_padding=True), diff --git a/tests/ported_static/stStaticCall/test_static_callcodecallcallcode_101_oogm_after_3.py b/tests/ported_static/stStaticCall/test_static_callcodecallcallcode_101_oogm_after_3.py index 05d104dd747..7b3110cfe17 100644 --- a/tests/ported_static/stStaticCall/test_static_callcodecallcallcode_101_oogm_after_3.py +++ b/tests/ported_static/stStaticCall/test_static_callcodecallcallcode_101_oogm_after_3.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -61,9 +60,7 @@ def test_static_callcodecallcallcode_101_oogm_after_3( ) -> None: """Test_static_callcodecallcallcode_101_oogm_after_3.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -96,57 +93,44 @@ def test_static_callcodecallcallcode_101_oogm_after_3( address=Address(0xAAB59F13D96113334FAB5C68E4E62B61F6CBF647), # noqa: E501 ) # Source: lll - # { [[ 0 ]] (DELEGATECALL 60150 0 64 0 64 ) [[ 1 ]] (GAS) } # noqa: E501 - addr = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.DELEGATECALL( - gas=0xEAF6, - address=0xB867C4BF480D6DCD06716BCDB0F9BCF3BB5710BF, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ), - ) - + Op.SSTORE(key=0x1, value=Op.GAS) - + Op.STOP, - balance=0xDE0B6B3A7640000, + # { (MSTORE 3 1) } + addr_4 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, nonce=0, - address=Address(0x77D2ECB3F4D887934C7C8F304831EA89E08CB30D), # noqa: E501 + address=Address(0x335C5531B84765A7626E6E76688F18B81BE5259C), # noqa: E501 ) # Source: lll - # { (STATICCALL 40080 0 64 0 64 ) (def 'i 0x80) (for {} (< @i 50000) [i](+ @i 1) (EXTCODESIZE 1)) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 + # { (SSTORE 3 1) } + addr_8 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + nonce=0, + address=Address(0xB126C622075B1189FB6C45E851641CFADDF65B36), # noqa: E501 + ) + # Source: lll + # { (DELEGATECALL 20020 0 64 0 64 ) (MSTORE 3 1) } # noqa: E501 + addr_3 = pre.deploy_contract( # noqa: F841 code=Op.POP( - Op.STATICCALL( - gas=0x9C90, - address=0x96BBA71C203B7339624A350FE004F71C3D669AEE, + Op.DELEGATECALL( + gas=0x4E34, + address=0x335C5531B84765A7626E6E76688F18B81BE5259C, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, ) ) - + Op.JUMPDEST - + Op.JUMPI( - pc=0x3E, condition=Op.ISZERO(Op.LT(Op.MLOAD(offset=0x80), 0xC350)) - ) - + Op.POP(Op.EXTCODESIZE(address=0x1)) - + Op.MSTORE(offset=0x80, value=Op.ADD(Op.MLOAD(offset=0x80), 0x1)) - + Op.JUMP(pc=0x22) - + Op.JUMPDEST + + Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, nonce=0, - address=Address(0xB867C4BF480D6DCD06716BCDB0F9BCF3BB5710BF), # noqa: E501 + address=Address(0x96BBA71C203B7339624A350FE004F71C3D669AEE), # noqa: E501 ) # Source: lll - # { (DELEGATECALL 20020 0 64 0 64 ) (MSTORE 3 1) } # noqa: E501 - addr_3 = pre.deploy_contract( # noqa: F841 + # { (DELEGATECALL 20020 0 64 0 64 ) (MSTORE 3 1) } # noqa: E501 + addr_7 = pre.deploy_contract( # noqa: F841 code=Op.POP( Op.DELEGATECALL( gas=0x4E34, - address=0x335C5531B84765A7626E6E76688F18B81BE5259C, + address=0xB126C622075B1189FB6C45E851641CFADDF65B36, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -156,34 +140,32 @@ def test_static_callcodecallcallcode_101_oogm_after_3( + Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, nonce=0, - address=Address(0x96BBA71C203B7339624A350FE004F71C3D669AEE), # noqa: E501 - ) - # Source: lll - # { (MSTORE 3 1) } - addr_4 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, - nonce=0, - address=Address(0x335C5531B84765A7626E6E76688F18B81BE5259C), # noqa: E501 + address=Address(0x65BE40505E6165809F16BFC5CDBA14169BC97614), # noqa: E501 ) # Source: lll - # { [[ 0 ]] (DELEGATECALL 60150 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 - addr_5 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.DELEGATECALL( - gas=0xEAF6, - address=0x2ABA60E14F876DAC315953942316A9A2F80C3AD5, + # { (STATICCALL 40080 0 64 0 64 ) (def 'i 0x80) (for {} (< @i 50000) [i](+ @i 1) (EXTCODESIZE 1)) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.POP( + Op.STATICCALL( + gas=0x9C90, + address=0x96BBA71C203B7339624A350FE004F71C3D669AEE, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, - ), + ) ) - + Op.SSTORE(key=0x1, value=0x1) + + Op.JUMPDEST + + Op.JUMPI( + pc=0x3E, condition=Op.ISZERO(Op.LT(Op.MLOAD(offset=0x80), 0xC350)) + ) + + Op.POP(Op.EXTCODESIZE(address=0x1)) + + Op.MSTORE(offset=0x80, value=Op.ADD(Op.MLOAD(offset=0x80), 0x1)) + + Op.JUMP(pc=0x22) + + Op.JUMPDEST + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xE2FA228586F5C62A6728D17728F4622D05D84E45), # noqa: E501 + address=Address(0xB867C4BF480D6DCD06716BCDB0F9BCF3BB5710BF), # noqa: E501 ) # Source: lll # { (STATICCALL 40080 0 64 0 64 ) } # noqa: E501 @@ -201,31 +183,45 @@ def test_static_callcodecallcallcode_101_oogm_after_3( address=Address(0x2ABA60E14F876DAC315953942316A9A2F80C3AD5), # noqa: E501 ) # Source: lll - # { (DELEGATECALL 20020 0 64 0 64 ) (MSTORE 3 1) } # noqa: E501 - addr_7 = pre.deploy_contract( # noqa: F841 - code=Op.POP( - Op.DELEGATECALL( - gas=0x4E34, - address=0xB126C622075B1189FB6C45E851641CFADDF65B36, + # { [[ 0 ]] (DELEGATECALL 60150 0 64 0 64 ) [[ 1 ]] (GAS) } # noqa: E501 + addr = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.DELEGATECALL( + gas=0xEAF6, + address=0xB867C4BF480D6DCD06716BCDB0F9BCF3BB5710BF, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, - ) + ), ) - + Op.MSTORE(offset=0x3, value=0x1) + + Op.SSTORE(key=0x1, value=Op.GAS) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x65BE40505E6165809F16BFC5CDBA14169BC97614), # noqa: E501 + address=Address(0x77D2ECB3F4D887934C7C8F304831EA89E08CB30D), # noqa: E501 ) # Source: lll - # { (SSTORE 3 1) } - addr_8 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x3, value=0x1) + Op.STOP, + # { [[ 0 ]] (DELEGATECALL 60150 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 + addr_5 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.DELEGATECALL( + gas=0xEAF6, + address=0x2ABA60E14F876DAC315953942316A9A2F80C3AD5, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ), + ) + + Op.SSTORE(key=0x1, value=0x1) + + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xB126C622075B1189FB6C45E851641CFADDF65B36), # noqa: E501 + address=Address(0xE2FA228586F5C62A6728D17728F4622D05D84E45), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stStaticCall/test_static_callcodecallcallcode_101_oogm_before.py b/tests/ported_static/stStaticCall/test_static_callcodecallcallcode_101_oogm_before.py index c0d22633ed3..5360979ac9c 100644 --- a/tests/ported_static/stStaticCall/test_static_callcodecallcallcode_101_oogm_before.py +++ b/tests/ported_static/stStaticCall/test_static_callcodecallcallcode_101_oogm_before.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -36,9 +35,7 @@ def test_static_callcodecallcallcode_101_oogm_before( ) -> None: """Test_static_callcodecallcallcode_101_oogm_before.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -50,43 +47,10 @@ def test_static_callcodecallcallcode_101_oogm_before( ) # Source: lll - # { [[ 0 ]] (DELEGATECALL 150000 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.DELEGATECALL( - gas=0x249F0, - address=0xEE49CA410D3886CC84D3177A1E14451F0669852F, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ), - ) - + Op.SSTORE(key=0x1, value=0x1) - + Op.STOP, - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0x31D06FAD70E2A598413824A9BC68D80A5D2B194E), # noqa: E501 - ) - # Source: lll - # { (MSTORE 3 1) (STATICCALL 40080 0 64 0 64 ) (MSTORE 3 1) } # noqa: E501 - addr = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) - + Op.POP( - Op.STATICCALL( - gas=0x9C90, - address=0x76C6DC23A4F29A65309C67CE40F50A05ED3409DA, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ) - ) - + Op.MSTORE(offset=0x3, value=0x1) - + Op.STOP, + # { (MSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, nonce=0, - address=Address(0xEE49CA410D3886CC84D3177A1E14451F0669852F), # noqa: E501 ) # Source: lll # { (def 'i 0x80) (for {} (< @i 50000) [i](+ @i 1) (EXTCODESIZE 1)) (DELEGATECALL 20020 0 64 0 64 ) } # noqa: E501 @@ -101,7 +65,7 @@ def test_static_callcodecallcallcode_101_oogm_before( + Op.JUMPDEST + Op.DELEGATECALL( gas=0x4E34, - address=0x335C5531B84765A7626E6E76688F18B81BE5259C, + address=addr_3, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -109,16 +73,44 @@ def test_static_callcodecallcallcode_101_oogm_before( ) + Op.STOP, nonce=0, - address=Address(0x76C6DC23A4F29A65309C67CE40F50A05ED3409DA), # noqa: E501 ) # Source: lll - # { (MSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, + # { (MSTORE 3 1) (STATICCALL 40080 0 64 0 64 ) (MSTORE 3 1) } # noqa: E501 + addr = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + + Op.POP( + Op.STATICCALL( + gas=0x9C90, + address=addr_2, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ) + ) + + Op.MSTORE(offset=0x3, value=0x1) + + Op.STOP, + nonce=0, + ) + # Source: lll + # { [[ 0 ]] (DELEGATECALL 150000 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.DELEGATECALL( + gas=0x249F0, + address=addr, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ), + ) + + Op.SSTORE(key=0x1, value=0x1) + + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x335C5531B84765A7626E6E76688F18B81BE5259C), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_callcodecallcallcode_101_oogm_before2.py b/tests/ported_static/stStaticCall/test_static_callcodecallcallcode_101_oogm_before2.py index fc000496a57..ec321a4558a 100644 --- a/tests/ported_static/stStaticCall/test_static_callcodecallcallcode_101_oogm_before2.py +++ b/tests/ported_static/stStaticCall/test_static_callcodecallcallcode_101_oogm_before2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -58,9 +57,7 @@ def test_static_callcodecallcallcode_101_oogm_before2( ) -> None: """Test_static_callcodecallcallcode_101_oogm_before2.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -72,44 +69,10 @@ def test_static_callcodecallcallcode_101_oogm_before2( ) # Source: lll - # { [[ 0 ]] (CALLCODE 150000 (CALLVALUE) 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.CALLCODE( - gas=0x249F0, - address=0xEE49CA410D3886CC84D3177A1E14451F0669852F, - value=Op.CALLVALUE, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ), - ) - + Op.SSTORE(key=0x1, value=0x1) - + Op.STOP, - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0xCC7B2C7C17E1DD7940B1AA2F4B3E55D7BD662608), # noqa: E501 - ) - # Source: lll - # { (MSTORE 3 1) (STATICCALL 40080 0 64 0 64 ) (MSTORE 3 1) } # noqa: E501 - addr = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) - + Op.POP( - Op.STATICCALL( - gas=0x9C90, - address=0xAC5AD3041E8D622A1F089496E5EE81C4F6F80471, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ) - ) - + Op.MSTORE(offset=0x3, value=0x1) - + Op.STOP, + # { (MSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, nonce=0, - address=Address(0xEE49CA410D3886CC84D3177A1E14451F0669852F), # noqa: E501 ) # Source: lll # { (def 'i 0x80) (for {} (< @i 50000) [i](+ @i 1) (EXTCODESIZE 1)) (CALLCODE 20020 0 0 64 0 64 ) } # noqa: E501 @@ -124,7 +87,7 @@ def test_static_callcodecallcallcode_101_oogm_before2( + Op.JUMPDEST + Op.CALLCODE( gas=0x4E34, - address=0x335C5531B84765A7626E6E76688F18B81BE5259C, + address=addr_3, value=0x0, args_offset=0x0, args_size=0x40, @@ -133,16 +96,45 @@ def test_static_callcodecallcallcode_101_oogm_before2( ) + Op.STOP, nonce=0, - address=Address(0xAC5AD3041E8D622A1F089496E5EE81C4F6F80471), # noqa: E501 ) # Source: lll - # { (MSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, + # { (MSTORE 3 1) (STATICCALL 40080 0 64 0 64 ) (MSTORE 3 1) } # noqa: E501 + addr = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + + Op.POP( + Op.STATICCALL( + gas=0x9C90, + address=addr_2, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ) + ) + + Op.MSTORE(offset=0x3, value=0x1) + + Op.STOP, + nonce=0, + ) + # Source: lll + # { [[ 0 ]] (CALLCODE 150000 (CALLVALUE) 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.CALLCODE( + gas=0x249F0, + address=addr, + value=Op.CALLVALUE, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ), + ) + + Op.SSTORE(key=0x1, value=0x1) + + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x335C5531B84765A7626E6E76688F18B81BE5259C), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx_data = [ Bytes(""), diff --git a/tests/ported_static/stStaticCall/test_static_callcodecallcallcode_101_suicide_end.py b/tests/ported_static/stStaticCall/test_static_callcodecallcallcode_101_suicide_end.py index abd75d74a5f..6317c9fed48 100644 --- a/tests/ported_static/stStaticCall/test_static_callcodecallcallcode_101_suicide_end.py +++ b/tests/ported_static/stStaticCall/test_static_callcodecallcallcode_101_suicide_end.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -36,9 +35,7 @@ def test_static_callcodecallcallcode_101_suicide_end( ) -> None: """Test_static_callcodecallcallcode_101_suicide_end.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,6 +46,14 @@ def test_static_callcodecallcallcode_101_suicide_end( gas_limit=30000000, ) + # Source: lll + # { (MSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, + balance=0x2540BE400, + nonce=0, + address=Address(0x48E2D4C0B593BFEBE5DDB4F13AA355B8BD83DDD3), # noqa: E501 + ) # Source: lll # { [[ 0 ]] (DELEGATECALL 150000 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -108,15 +113,6 @@ def test_static_callcodecallcallcode_101_suicide_end( nonce=0, address=Address(0x4A31DD3A8C3C9A793AC0B3C234A4DBAC2F201404), # noqa: E501 ) - # Source: lll - # { (MSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, - balance=0x2540BE400, - nonce=0, - address=Address(0x48E2D4C0B593BFEBE5DDB4F13AA355B8BD83DDD3), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_callcodecallcallcode_101_suicide_end2.py b/tests/ported_static/stStaticCall/test_static_callcodecallcallcode_101_suicide_end2.py index 8ace7a8f459..c447ee9219f 100644 --- a/tests/ported_static/stStaticCall/test_static_callcodecallcallcode_101_suicide_end2.py +++ b/tests/ported_static/stStaticCall/test_static_callcodecallcallcode_101_suicide_end2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -58,9 +57,7 @@ def test_static_callcodecallcallcode_101_suicide_end2( ) -> None: """Test_static_callcodecallcallcode_101_suicide_end2.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -71,6 +68,14 @@ def test_static_callcodecallcallcode_101_suicide_end2( gas_limit=30000000, ) + # Source: lll + # { (MSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, + balance=0x2540BE400, + nonce=0, + address=Address(0x48E2D4C0B593BFEBE5DDB4F13AA355B8BD83DDD3), # noqa: E501 + ) # Source: lll # { [[ 0 ]] (CALLCODE 150000 (CALLVALUE) 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -132,15 +137,6 @@ def test_static_callcodecallcallcode_101_suicide_end2( nonce=0, address=Address(0x90E9B92C59A0E93D8AB0B7AFBC945D6999A50A9B), # noqa: E501 ) - # Source: lll - # { (MSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, - balance=0x2540BE400, - nonce=0, - address=Address(0x48E2D4C0B593BFEBE5DDB4F13AA355B8BD83DDD3), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx_data = [ Bytes(""), diff --git a/tests/ported_static/stStaticCall/test_static_callcodecallcallcode_101_suicide_middle.py b/tests/ported_static/stStaticCall/test_static_callcodecallcallcode_101_suicide_middle.py index b659a53f210..b931e88c7ee 100644 --- a/tests/ported_static/stStaticCall/test_static_callcodecallcallcode_101_suicide_middle.py +++ b/tests/ported_static/stStaticCall/test_static_callcodecallcallcode_101_suicide_middle.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -40,9 +39,7 @@ def test_static_callcodecallcallcode_101_suicide_middle( contract_1 = Address(0x1000000000000000000000000000000000000001) contract_2 = Address(0x1000000000000000000000000000000000000002) contract_3 = Address(0x1000000000000000000000000000000000000003) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -53,6 +50,14 @@ def test_static_callcodecallcallcode_101_suicide_middle( gas_limit=30000000, ) + # Source: lll + # { (MSTORE 3 1) } + contract_3 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, + balance=0x2540BE400, + nonce=0, + address=Address(0x1000000000000000000000000000000000000003), # noqa: E501 + ) # Source: lll # { [[ 0 ]] (DELEGATECALL 150000 0x1000000000000000000000000000000000000001 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 contract_0 = pre.deploy_contract( # noqa: F841 @@ -112,15 +117,6 @@ def test_static_callcodecallcallcode_101_suicide_middle( nonce=0, address=Address(0x1000000000000000000000000000000000000002), # noqa: E501 ) - # Source: lll - # { (MSTORE 3 1) } - contract_3 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, - balance=0x2540BE400, - nonce=0, - address=Address(0x1000000000000000000000000000000000000003), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_callcodecallcallcode_101_suicide_middle2.py b/tests/ported_static/stStaticCall/test_static_callcodecallcallcode_101_suicide_middle2.py index 6795cba2172..058d6ddc641 100644 --- a/tests/ported_static/stStaticCall/test_static_callcodecallcallcode_101_suicide_middle2.py +++ b/tests/ported_static/stStaticCall/test_static_callcodecallcallcode_101_suicide_middle2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -58,9 +57,7 @@ def test_static_callcodecallcallcode_101_suicide_middle2( ) -> None: """Test_static_callcodecallcallcode_101_suicide_middle2.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -71,6 +68,14 @@ def test_static_callcodecallcallcode_101_suicide_middle2( gas_limit=30000000, ) + # Source: lll + # { (MSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, + balance=0x2540BE400, + nonce=0, + address=Address(0x48E2D4C0B593BFEBE5DDB4F13AA355B8BD83DDD3), # noqa: E501 + ) # Source: lll # { [[ 0 ]] (CALLCODE 150000 (CALLVALUE) 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -132,15 +137,6 @@ def test_static_callcodecallcallcode_101_suicide_middle2( nonce=0, address=Address(0x3A5852E2F86BAE6627A307298C4BF906ADA12419), # noqa: E501 ) - # Source: lll - # { (MSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, - balance=0x2540BE400, - nonce=0, - address=Address(0x48E2D4C0B593BFEBE5DDB4F13AA355B8BD83DDD3), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx_data = [ Bytes(""), diff --git a/tests/ported_static/stStaticCall/test_static_callcodecallcodecall_110.py b/tests/ported_static/stStaticCall/test_static_callcodecallcodecall_110.py index fb4d9a18a63..3d41086e8cb 100644 --- a/tests/ported_static/stStaticCall/test_static_callcodecallcodecall_110.py +++ b/tests/ported_static/stStaticCall/test_static_callcodecallcodecall_110.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,9 +33,7 @@ def test_static_callcodecallcodecall_110( ) -> None: """Test_static_callcodecallcodecall_110.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -48,24 +45,29 @@ def test_static_callcodecallcodecall_110( ) # Source: lll - # { [[ 0 ]] (DELEGATECALL 350000 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.DELEGATECALL( - gas=0x55730, - address=0x2BF6D23C6CDD3A7712AD150DFA2680ADABDA8B82, + # { (MSTORE 1 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x1, value=0x1) + Op.STOP, + nonce=0, + ) + # Source: lll + # { (MSTORE 1 1) (STATICCALL 250000 0 64 0 64 ) (MSTORE 1 1)} # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x1, value=0x1) + + Op.POP( + Op.STATICCALL( + gas=0x3D090, + address=addr_3, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, - ), + ) ) - + Op.SSTORE(key=0x1, value=0x1) + + Op.MSTORE(offset=0x1, value=0x1) + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x4EEF7E2B5AE9BE0FC5B43DC4FE39195A1AE10FC4), # noqa: E501 ) # Source: lll # { (MSTORE 1 1) (DELEGATECALL 300000 0 64 0 64 ) (MSTORE 1 1) } # noqa: E501 @@ -74,7 +76,7 @@ def test_static_callcodecallcodecall_110( + Op.POP( Op.DELEGATECALL( gas=0x493E0, - address=0xB10C519306D4D2ACCE66BE84C0EA086D816BA77C, + address=addr_2, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -85,36 +87,26 @@ def test_static_callcodecallcodecall_110( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x2BF6D23C6CDD3A7712AD150DFA2680ADABDA8B82), # noqa: E501 ) # Source: lll - # { (MSTORE 1 1) (STATICCALL 250000 0 64 0 64 ) (MSTORE 1 1)} # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x1, value=0x1) - + Op.POP( - Op.STATICCALL( - gas=0x3D090, - address=0x2A142C79A9B097C111CE945214226126B75E332C, + # { [[ 0 ]] (DELEGATECALL 350000 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.DELEGATECALL( + gas=0x55730, + address=addr, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, - ) + ), ) - + Op.MSTORE(offset=0x1, value=0x1) + + Op.SSTORE(key=0x1, value=0x1) + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xB10C519306D4D2ACCE66BE84C0EA086D816BA77C), # noqa: E501 - ) - # Source: lll - # { (MSTORE 1 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x1, value=0x1) + Op.STOP, - nonce=0, - address=Address(0x2A142C79A9B097C111CE945214226126B75E332C), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_callcodecallcodecall_1102.py b/tests/ported_static/stStaticCall/test_static_callcodecallcodecall_1102.py index d5fe4512c38..ce9f6e6b395 100644 --- a/tests/ported_static/stStaticCall/test_static_callcodecallcodecall_1102.py +++ b/tests/ported_static/stStaticCall/test_static_callcodecallcodecall_1102.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -62,9 +61,7 @@ def test_static_callcodecallcodecall_1102( ) -> None: """Test_static_callcodecallcodecall_1102.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -76,32 +73,32 @@ def test_static_callcodecallcodecall_1102( ) # Source: lll - # { [[ 0 ]] (CALLCODE 350000 (CALLVALUE) 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.CALLCODE( - gas=0x55730, - address=0x91645BC90F22C32A683BB049DCE8BCC61C541D82, - value=Op.CALLVALUE, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ), + # { (MSTORE 1 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x1, value=0x1) + Op.STOP, + nonce=0, + ) + # Source: lll + # { (STATICCALL 250000 0 64 0 64 ) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.STATICCALL( + gas=0x3D090, + address=addr_3, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, ) - + Op.SSTORE(key=0x1, value=0x1) + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x4BE1B24080B17ED1F5F4C0FF9CD820D764A32620), # noqa: E501 ) # Source: lll # { (CALLCODE 300000 (- (CALLVALUE) 1) 0 64 0 64 ) } # noqa: E501 addr = pre.deploy_contract( # noqa: F841 code=Op.CALLCODE( gas=0x493E0, - address=0xEF859513AE36C397C43170A2980741575916167B, + address=addr_2, value=Op.SUB(Op.CALLVALUE, 0x1), args_offset=0x0, args_size=0x40, @@ -111,32 +108,27 @@ def test_static_callcodecallcodecall_1102( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x91645BC90F22C32A683BB049DCE8BCC61C541D82), # noqa: E501 ) # Source: lll - # { (STATICCALL 250000 0 64 0 64 ) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.STATICCALL( - gas=0x3D090, - address=0x2A142C79A9B097C111CE945214226126B75E332C, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, + # { [[ 0 ]] (CALLCODE 350000 (CALLVALUE) 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.CALLCODE( + gas=0x55730, + address=addr, + value=Op.CALLVALUE, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ), ) + + Op.SSTORE(key=0x1, value=0x1) + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xEF859513AE36C397C43170A2980741575916167B), # noqa: E501 - ) - # Source: lll - # { (MSTORE 1 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x1, value=0x1) + Op.STOP, - nonce=0, - address=Address(0x2A142C79A9B097C111CE945214226126B75E332C), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx_data = [ Bytes(""), diff --git a/tests/ported_static/stStaticCall/test_static_callcodecallcodecall_110_2.py b/tests/ported_static/stStaticCall/test_static_callcodecallcodecall_110_2.py index a8ca706bfe7..e35bbea0fb4 100644 --- a/tests/ported_static/stStaticCall/test_static_callcodecallcodecall_110_2.py +++ b/tests/ported_static/stStaticCall/test_static_callcodecallcodecall_110_2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -62,9 +61,7 @@ def test_static_callcodecallcodecall_110_2( ) -> None: """Test_static_callcodecallcodecall_110_2.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -76,25 +73,29 @@ def test_static_callcodecallcodecall_110_2( ) # Source: lll - # { [[ 0 ]] (CALLCODE 350000 (CALLVALUE) 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.CALLCODE( - gas=0x55730, - address=0x611CB29449C75E44440DB4985DBB84732BC18342, - value=Op.CALLVALUE, + # { (MSTORE 1 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x1, value=0x1) + Op.STOP, + nonce=0, + ) + # Source: lll + # { (MSTORE 1 1) (STATICCALL 250000 0 64 0 64 ) (MSTORE 31 1) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x1, value=0x1) + + Op.POP( + Op.STATICCALL( + gas=0x3D090, + address=addr_3, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, - ), + ) ) - + Op.SSTORE(key=0x1, value=0x1) + + Op.MSTORE(offset=0x1F, value=0x1) + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x4BE1B24080B17ED1F5F4C0FF9CD820D764A32620), # noqa: E501 ) # Source: lll # { (MSTORE 1 1) (CALLCODE 300000 ( - (CALLVALUE) 1) 0 64 0 64 ) (MSTORE 31 1) } # noqa: E501 @@ -103,7 +104,7 @@ def test_static_callcodecallcodecall_110_2( + Op.POP( Op.CALLCODE( gas=0x493E0, - address=0xB1927ADAFCD3B2ECEF7B7508CB3A8D7B41FCAE73, + address=addr_2, value=Op.SUB(Op.CALLVALUE, 0x1), args_offset=0x0, args_size=0x40, @@ -115,36 +116,27 @@ def test_static_callcodecallcodecall_110_2( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x611CB29449C75E44440DB4985DBB84732BC18342), # noqa: E501 ) # Source: lll - # { (MSTORE 1 1) (STATICCALL 250000 0 64 0 64 ) (MSTORE 31 1) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x1, value=0x1) - + Op.POP( - Op.STATICCALL( - gas=0x3D090, - address=0x2A142C79A9B097C111CE945214226126B75E332C, + # { [[ 0 ]] (CALLCODE 350000 (CALLVALUE) 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.CALLCODE( + gas=0x55730, + address=addr, + value=Op.CALLVALUE, args_offset=0x0, args_size=0x40, ret_offset=0x0, ret_size=0x40, - ) + ), ) - + Op.MSTORE(offset=0x1F, value=0x1) + + Op.SSTORE(key=0x1, value=0x1) + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xB1927ADAFCD3B2ECEF7B7508CB3A8D7B41FCAE73), # noqa: E501 - ) - # Source: lll - # { (MSTORE 1 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x1, value=0x1) + Op.STOP, - nonce=0, - address=Address(0x2A142C79A9B097C111CE945214226126B75E332C), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx_data = [ Bytes(""), diff --git a/tests/ported_static/stStaticCall/test_static_callcodecallcodecall_110_ooge.py b/tests/ported_static/stStaticCall/test_static_callcodecallcodecall_110_ooge.py index 98c955a94f2..fb9b691d681 100644 --- a/tests/ported_static/stStaticCall/test_static_callcodecallcodecall_110_ooge.py +++ b/tests/ported_static/stStaticCall/test_static_callcodecallcodecall_110_ooge.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -36,9 +35,7 @@ def test_static_callcodecallcodecall_110_ooge( ) -> None: """Test_static_callcodecallcodecall_110_ooge.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -50,31 +47,25 @@ def test_static_callcodecallcodecall_110_ooge( ) # Source: lll - # { [[ 0 ]] (DELEGATECALL 150000 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.DELEGATECALL( - gas=0x249F0, - address=0x7125DDB5E66B6BAB62B228F9D01C2F3AAA1BEF28, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ), + # { (def 'i 0x80) (for {} (< @i 50000) [i](+ @i 1) (EXTCODESIZE 1)) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.JUMPDEST + + Op.JUMPI( + pc=0x1C, condition=Op.ISZERO(Op.LT(Op.MLOAD(offset=0x80), 0xC350)) ) - + Op.SSTORE(key=0x1, value=0x1) + + Op.POP(Op.EXTCODESIZE(address=0x1)) + + Op.MSTORE(offset=0x80, value=Op.ADD(Op.MLOAD(offset=0x80), 0x1)) + + Op.JUMP(pc=0x0) + + Op.JUMPDEST + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x31D06FAD70E2A598413824A9BC68D80A5D2B194E), # noqa: E501 ) # Source: lll - # { (DELEGATECALL 100000 0 64 0 64 ) } # noqa: E501 - addr = pre.deploy_contract( # noqa: F841 - code=Op.DELEGATECALL( - gas=0x186A0, - address=0xEEDCBAC77FBD73BF2D0D7FEDD710D089B466138D, + # { (STATICCALL 20020 0 64 0 64 ) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.STATICCALL( + gas=0x4E34, + address=addr_3, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -82,14 +73,13 @@ def test_static_callcodecallcodecall_110_ooge( ) + Op.STOP, nonce=0, - address=Address(0x7125DDB5E66B6BAB62B228F9D01C2F3AAA1BEF28), # noqa: E501 ) # Source: lll - # { (STATICCALL 20020 0 64 0 64 ) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.STATICCALL( - gas=0x4E34, - address=0xFBEF21C5A6C2ADCF3D769F085E0CC9FE9A8DF954, + # { (DELEGATECALL 100000 0 64 0 64 ) } # noqa: E501 + addr = pre.deploy_contract( # noqa: F841 + code=Op.DELEGATECALL( + gas=0x186A0, + address=addr_2, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -97,24 +87,26 @@ def test_static_callcodecallcodecall_110_ooge( ) + Op.STOP, nonce=0, - address=Address(0xEEDCBAC77FBD73BF2D0D7FEDD710D089B466138D), # noqa: E501 ) # Source: lll - # { (def 'i 0x80) (for {} (< @i 50000) [i](+ @i 1) (EXTCODESIZE 1)) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.JUMPDEST - + Op.JUMPI( - pc=0x1C, condition=Op.ISZERO(Op.LT(Op.MLOAD(offset=0x80), 0xC350)) + # { [[ 0 ]] (DELEGATECALL 150000 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.DELEGATECALL( + gas=0x249F0, + address=addr, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ), ) - + Op.POP(Op.EXTCODESIZE(address=0x1)) - + Op.MSTORE(offset=0x80, value=Op.ADD(Op.MLOAD(offset=0x80), 0x1)) - + Op.JUMP(pc=0x0) - + Op.JUMPDEST + + Op.SSTORE(key=0x1, value=0x1) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xFBEF21C5A6C2ADCF3D769F085E0CC9FE9A8DF954), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_callcodecallcodecall_110_ooge2.py b/tests/ported_static/stStaticCall/test_static_callcodecallcodecall_110_ooge2.py index 8c0b2e3f125..7c371ac945e 100644 --- a/tests/ported_static/stStaticCall/test_static_callcodecallcodecall_110_ooge2.py +++ b/tests/ported_static/stStaticCall/test_static_callcodecallcodecall_110_ooge2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -64,9 +63,7 @@ def test_static_callcodecallcodecall_110_ooge2( ) -> None: """Test_static_callcodecallcodecall_110_ooge2.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -78,33 +75,25 @@ def test_static_callcodecallcodecall_110_ooge2( ) # Source: lll - # { [[ 0 ]] (CALLCODE 150000 (CALLVALUE) 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.CALLCODE( - gas=0x249F0, - address=0x90390F435B22C948FBEA0C86C37ECBFEC700CF9D, - value=Op.CALLVALUE, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ), + # { (def 'i 0x80) (for {} (< @i 50000) [i](+ @i 1) (EXTCODESIZE 1)) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.JUMPDEST + + Op.JUMPI( + pc=0x1C, condition=Op.ISZERO(Op.LT(Op.MLOAD(offset=0x80), 0xC350)) ) - + Op.SSTORE(key=0x1, value=0x1) + + Op.POP(Op.EXTCODESIZE(address=0x1)) + + Op.MSTORE(offset=0x80, value=Op.ADD(Op.MLOAD(offset=0x80), 0x1)) + + Op.JUMP(pc=0x0) + + Op.JUMPDEST + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xCC7B2C7C17E1DD7940B1AA2F4B3E55D7BD662608), # noqa: E501 ) # Source: lll - # { (CALLCODE 100000 (- (CALLVALUE) 1) 0 64 0 64 ) } # noqa: E501 - addr = pre.deploy_contract( # noqa: F841 - code=Op.CALLCODE( - gas=0x186A0, - address=0xEEDCBAC77FBD73BF2D0D7FEDD710D089B466138D, - value=Op.SUB(Op.CALLVALUE, 0x1), + # { (STATICCALL 20020 0 64 0 64 ) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.STATICCALL( + gas=0x4E34, + address=addr_3, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -112,14 +101,14 @@ def test_static_callcodecallcodecall_110_ooge2( ) + Op.STOP, nonce=0, - address=Address(0x90390F435B22C948FBEA0C86C37ECBFEC700CF9D), # noqa: E501 ) # Source: lll - # { (STATICCALL 20020 0 64 0 64 ) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.STATICCALL( - gas=0x4E34, - address=0xFBEF21C5A6C2ADCF3D769F085E0CC9FE9A8DF954, + # { (CALLCODE 100000 (- (CALLVALUE) 1) 0 64 0 64 ) } # noqa: E501 + addr = pre.deploy_contract( # noqa: F841 + code=Op.CALLCODE( + gas=0x186A0, + address=addr_2, + value=Op.SUB(Op.CALLVALUE, 0x1), args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -127,24 +116,27 @@ def test_static_callcodecallcodecall_110_ooge2( ) + Op.STOP, nonce=0, - address=Address(0xEEDCBAC77FBD73BF2D0D7FEDD710D089B466138D), # noqa: E501 ) # Source: lll - # { (def 'i 0x80) (for {} (< @i 50000) [i](+ @i 1) (EXTCODESIZE 1)) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.JUMPDEST - + Op.JUMPI( - pc=0x1C, condition=Op.ISZERO(Op.LT(Op.MLOAD(offset=0x80), 0xC350)) + # { [[ 0 ]] (CALLCODE 150000 (CALLVALUE) 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.CALLCODE( + gas=0x249F0, + address=addr, + value=Op.CALLVALUE, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ), ) - + Op.POP(Op.EXTCODESIZE(address=0x1)) - + Op.MSTORE(offset=0x80, value=Op.ADD(Op.MLOAD(offset=0x80), 0x1)) - + Op.JUMP(pc=0x0) - + Op.JUMPDEST + + Op.SSTORE(key=0x1, value=0x1) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xFBEF21C5A6C2ADCF3D769F085E0CC9FE9A8DF954), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx_data = [ Bytes(""), diff --git a/tests/ported_static/stStaticCall/test_static_callcodecallcodecall_110_oogm_after.py b/tests/ported_static/stStaticCall/test_static_callcodecallcodecall_110_oogm_after.py index 4e0bc6ef511..b121cac4afb 100644 --- a/tests/ported_static/stStaticCall/test_static_callcodecallcodecall_110_oogm_after.py +++ b/tests/ported_static/stStaticCall/test_static_callcodecallcodecall_110_oogm_after.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -36,9 +35,7 @@ def test_static_callcodecallcodecall_110_oogm_after( ) -> None: """Test_static_callcodecallcodecall_110_oogm_after.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -50,24 +47,24 @@ def test_static_callcodecallcodecall_110_oogm_after( ) # Source: lll - # { [[ 0 ]] (DELEGATECALL 60150 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.DELEGATECALL( - gas=0xEAF6, - address=0x669F2CA35C01EE9379D6003704074AC1EEAA914D, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ), + # { (MSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, + nonce=0, + ) + # Source: lll + # { (STATICCALL 20020 0 64 0 64 ) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.STATICCALL( + gas=0x4E34, + address=addr_3, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, ) - + Op.SSTORE(key=0x1, value=0x1) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xE79AEE563C83547F229D955ECDCCA0F01FED9AA9), # noqa: E501 ) # Source: lll # { (DELEGATECALL 40080 0 64 0 64 ) (def 'i 0x80) (for {} (< @i 50000) [i](+ @i 1) (EXTCODESIZE 1)) } # noqa: E501 @@ -75,7 +72,7 @@ def test_static_callcodecallcodecall_110_oogm_after( code=Op.POP( Op.DELEGATECALL( gas=0x9C90, - address=0x1BDD0B2B81CB603F436225D2B20054C3D0593DE3, + address=addr_2, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -92,31 +89,26 @@ def test_static_callcodecallcodecall_110_oogm_after( + Op.JUMPDEST + Op.STOP, nonce=0, - address=Address(0x669F2CA35C01EE9379D6003704074AC1EEAA914D), # noqa: E501 ) # Source: lll - # { (STATICCALL 20020 0 64 0 64 ) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.STATICCALL( - gas=0x4E34, - address=0x335C5531B84765A7626E6E76688F18B81BE5259C, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, + # { [[ 0 ]] (DELEGATECALL 60150 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.DELEGATECALL( + gas=0xEAF6, + address=addr, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ), ) + + Op.SSTORE(key=0x1, value=0x1) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x1BDD0B2B81CB603F436225D2B20054C3D0593DE3), # noqa: E501 - ) - # Source: lll - # { (MSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, - nonce=0, - address=Address(0x335C5531B84765A7626E6E76688F18B81BE5259C), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_callcodecallcodecall_110_oogm_after2.py b/tests/ported_static/stStaticCall/test_static_callcodecallcodecall_110_oogm_after2.py index d752a818b29..6bfd84549df 100644 --- a/tests/ported_static/stStaticCall/test_static_callcodecallcodecall_110_oogm_after2.py +++ b/tests/ported_static/stStaticCall/test_static_callcodecallcodecall_110_oogm_after2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -64,9 +63,7 @@ def test_static_callcodecallcodecall_110_oogm_after2( ) -> None: """Test_static_callcodecallcodecall_110_oogm_after2.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -78,25 +75,24 @@ def test_static_callcodecallcodecall_110_oogm_after2( ) # Source: lll - # { [[ 0 ]] (CALLCODE 60150 (CALLVALUE) 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.CALLCODE( - gas=0xEAF6, - address=0x5132347436F7BD136E83BF55270D821E276C2E51, - value=Op.CALLVALUE, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ), + # { (MSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, + nonce=0, + ) + # Source: lll + # { (STATICCALL 20020 0 64 0 64 ) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.STATICCALL( + gas=0x4E34, + address=addr_3, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, ) - + Op.SSTORE(key=0x1, value=0x1) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x62B278A07428F1FF97EE7C884B711F6DF3340707), # noqa: E501 ) # Source: lll # { (CALLCODE 40080 ( - (CALLVALUE) 1) 0 64 0 64 ) (def 'i 0x80) (for {} (< @i 50000) [i](+ @i 1) (EXTCODESIZE 1)) } # noqa: E501 @@ -104,7 +100,7 @@ def test_static_callcodecallcodecall_110_oogm_after2( code=Op.POP( Op.CALLCODE( gas=0x9C90, - address=0xEEDCBAC77FBD73BF2D0D7FEDD710D089B466138D, + address=addr_2, value=Op.SUB(Op.CALLVALUE, 0x1), args_offset=0x0, args_size=0x40, @@ -122,31 +118,27 @@ def test_static_callcodecallcodecall_110_oogm_after2( + Op.JUMPDEST + Op.STOP, nonce=0, - address=Address(0x5132347436F7BD136E83BF55270D821E276C2E51), # noqa: E501 ) # Source: lll - # { (STATICCALL 20020 0 64 0 64 ) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.STATICCALL( - gas=0x4E34, - address=0x335C5531B84765A7626E6E76688F18B81BE5259C, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, + # { [[ 0 ]] (CALLCODE 60150 (CALLVALUE) 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.CALLCODE( + gas=0xEAF6, + address=addr, + value=Op.CALLVALUE, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ), ) + + Op.SSTORE(key=0x1, value=0x1) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xEEDCBAC77FBD73BF2D0D7FEDD710D089B466138D), # noqa: E501 - ) - # Source: lll - # { (MSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, - nonce=0, - address=Address(0x335C5531B84765A7626E6E76688F18B81BE5259C), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx_data = [ Bytes(""), diff --git a/tests/ported_static/stStaticCall/test_static_callcodecallcodecall_110_oogm_after_2.py b/tests/ported_static/stStaticCall/test_static_callcodecallcodecall_110_oogm_after_2.py index 453a65a45d6..90496314497 100644 --- a/tests/ported_static/stStaticCall/test_static_callcodecallcodecall_110_oogm_after_2.py +++ b/tests/ported_static/stStaticCall/test_static_callcodecallcodecall_110_oogm_after_2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -36,9 +35,7 @@ def test_static_callcodecallcodecall_110_oogm_after_2( ) -> None: """Test_static_callcodecallcodecall_110_oogm_after_2.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -50,24 +47,24 @@ def test_static_callcodecallcodecall_110_oogm_after_2( ) # Source: lll - # { [[ 0 ]] (DELEGATECALL 60150 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.DELEGATECALL( - gas=0xEAF6, - address=0x669F2CA35C01EE9379D6003704074AC1EEAA914D, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ), + # { (MSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, + nonce=0, + ) + # Source: lll + # { (STATICCALL 20020 0 64 0 64 ) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.STATICCALL( + gas=0x4E34, + address=addr_3, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, ) - + Op.SSTORE(key=0x1, value=0x1) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xE79AEE563C83547F229D955ECDCCA0F01FED9AA9), # noqa: E501 ) # Source: lll # { (DELEGATECALL 40080 0 64 0 64 ) (def 'i 0x80) (for {} (< @i 50000) [i](+ @i 1) (EXTCODESIZE 1)) } # noqa: E501 @@ -75,7 +72,7 @@ def test_static_callcodecallcodecall_110_oogm_after_2( code=Op.POP( Op.DELEGATECALL( gas=0x9C90, - address=0x1BDD0B2B81CB603F436225D2B20054C3D0593DE3, + address=addr_2, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -92,31 +89,26 @@ def test_static_callcodecallcodecall_110_oogm_after_2( + Op.JUMPDEST + Op.STOP, nonce=0, - address=Address(0x669F2CA35C01EE9379D6003704074AC1EEAA914D), # noqa: E501 ) # Source: lll - # { (STATICCALL 20020 0 64 0 64 ) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.STATICCALL( - gas=0x4E34, - address=0x335C5531B84765A7626E6E76688F18B81BE5259C, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, + # { [[ 0 ]] (DELEGATECALL 60150 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.DELEGATECALL( + gas=0xEAF6, + address=addr, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ), ) + + Op.SSTORE(key=0x1, value=0x1) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x1BDD0B2B81CB603F436225D2B20054C3D0593DE3), # noqa: E501 - ) - # Source: lll - # { (MSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, - nonce=0, - address=Address(0x335C5531B84765A7626E6E76688F18B81BE5259C), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_callcodecallcodecall_110_oogm_after_3.py b/tests/ported_static/stStaticCall/test_static_callcodecallcodecall_110_oogm_after_3.py index 86c330ff9cd..cbc5beb1ba3 100644 --- a/tests/ported_static/stStaticCall/test_static_callcodecallcodecall_110_oogm_after_3.py +++ b/tests/ported_static/stStaticCall/test_static_callcodecallcodecall_110_oogm_after_3.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -36,9 +35,7 @@ def test_static_callcodecallcodecall_110_oogm_after_3( ) -> None: """Test_static_callcodecallcodecall_110_oogm_after_3.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -50,25 +47,24 @@ def test_static_callcodecallcodecall_110_oogm_after_3( ) # Source: lll - # { [[ 0 ]] (CALLCODE 60150 (CALLVALUE) 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.CALLCODE( - gas=0xEAF6, - address=0xDF60CB36BCF8892D8A68903B2D2E455037149E48, - value=Op.CALLVALUE, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ), + # { (MSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, + nonce=0, + ) + # Source: lll + # { (STATICCALL 20020 0 64 0 64 ) } # noqa: E501 + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.STATICCALL( + gas=0x4E34, + address=addr_3, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, ) - + Op.SSTORE(key=0x1, value=0x1) + Op.STOP, - balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x81450E6893351D2C0C43648338C0F2AE8D435BC1), # noqa: E501 ) # Source: lll # { (CALLCODE 40080 (- (CALLVALUE) 1) 0 64 0 64 ) (def 'i 0x80) (for {} (< @i 50000) [i](+ @i 1) (EXTCODESIZE 1)) } # noqa: E501 @@ -76,7 +72,7 @@ def test_static_callcodecallcodecall_110_oogm_after_3( code=Op.POP( Op.CALLCODE( gas=0x9C90, - address=0xEEDCBAC77FBD73BF2D0D7FEDD710D089B466138D, + address=addr_2, value=Op.SUB(Op.CALLVALUE, 0x1), args_offset=0x0, args_size=0x40, @@ -94,31 +90,27 @@ def test_static_callcodecallcodecall_110_oogm_after_3( + Op.JUMPDEST + Op.STOP, nonce=0, - address=Address(0xDF60CB36BCF8892D8A68903B2D2E455037149E48), # noqa: E501 ) # Source: lll - # { (STATICCALL 20020 0 64 0 64 ) } # noqa: E501 - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.STATICCALL( - gas=0x4E34, - address=0x335C5531B84765A7626E6E76688F18B81BE5259C, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, + # { [[ 0 ]] (CALLCODE 60150 (CALLVALUE) 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.CALLCODE( + gas=0xEAF6, + address=addr, + value=Op.CALLVALUE, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ), ) + + Op.SSTORE(key=0x1, value=0x1) + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xEEDCBAC77FBD73BF2D0D7FEDD710D089B466138D), # noqa: E501 - ) - # Source: lll - # { (MSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, - nonce=0, - address=Address(0x335C5531B84765A7626E6E76688F18B81BE5259C), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_callcodecallcodecall_110_oogm_before.py b/tests/ported_static/stStaticCall/test_static_callcodecallcodecall_110_oogm_before.py index d56a43447ba..139114b474a 100644 --- a/tests/ported_static/stStaticCall/test_static_callcodecallcodecall_110_oogm_before.py +++ b/tests/ported_static/stStaticCall/test_static_callcodecallcodecall_110_oogm_before.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -36,9 +35,7 @@ def test_static_callcodecallcodecall_110_oogm_before( ) -> None: """Test_static_callcodecallcodecall_110_oogm_before.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -50,39 +47,10 @@ def test_static_callcodecallcodecall_110_oogm_before( ) # Source: lll - # { [[ 0 ]] (DELEGATECALL 150000 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.DELEGATECALL( - gas=0x249F0, - address=0x401580462C2CA97FC4F16B066D6249250A227AFB, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ), - ) - + Op.SSTORE(key=0x1, value=0x1) - + Op.STOP, - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0x31D06FAD70E2A598413824A9BC68D80A5D2B194E), # noqa: E501 - ) - # Source: lll - # { (DELEGATECALL 40080 0 64 0 64 ) } # noqa: E501 - addr = pre.deploy_contract( # noqa: F841 - code=Op.DELEGATECALL( - gas=0x9C90, - address=0xF32619344056AD22A07F10433F70165CE82D9273, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ) - + Op.STOP, + # { (MSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, nonce=0, - address=Address(0x401580462C2CA97FC4F16B066D6249250A227AFB), # noqa: E501 ) # Source: lll # { (def 'i 0x80) (for {} (< @i 50000) [i](+ @i 1) (EXTCODESIZE 1)) (STATICCALL 20020 0 64 0 64 ) } # noqa: E501 @@ -97,7 +65,7 @@ def test_static_callcodecallcodecall_110_oogm_before( + Op.JUMPDEST + Op.STATICCALL( gas=0x4E34, - address=0x335C5531B84765A7626E6E76688F18B81BE5259C, + address=addr_3, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -105,16 +73,40 @@ def test_static_callcodecallcodecall_110_oogm_before( ) + Op.STOP, nonce=0, - address=Address(0xF32619344056AD22A07F10433F70165CE82D9273), # noqa: E501 ) # Source: lll - # { (MSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, + # { (DELEGATECALL 40080 0 64 0 64 ) } # noqa: E501 + addr = pre.deploy_contract( # noqa: F841 + code=Op.DELEGATECALL( + gas=0x9C90, + address=addr_2, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ) + + Op.STOP, + nonce=0, + ) + # Source: lll + # { [[ 0 ]] (DELEGATECALL 150000 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.DELEGATECALL( + gas=0x249F0, + address=addr, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ), + ) + + Op.SSTORE(key=0x1, value=0x1) + + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x335C5531B84765A7626E6E76688F18B81BE5259C), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_callcodecallcodecall_110_oogm_before2.py b/tests/ported_static/stStaticCall/test_static_callcodecallcodecall_110_oogm_before2.py index c4bd259ef6a..972eaf216e2 100644 --- a/tests/ported_static/stStaticCall/test_static_callcodecallcodecall_110_oogm_before2.py +++ b/tests/ported_static/stStaticCall/test_static_callcodecallcodecall_110_oogm_before2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -64,9 +63,7 @@ def test_static_callcodecallcodecall_110_oogm_before2( ) -> None: """Test_static_callcodecallcodecall_110_oogm_before2.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -78,41 +75,10 @@ def test_static_callcodecallcodecall_110_oogm_before2( ) # Source: lll - # { [[ 0 ]] (CALLCODE 150000 (CALLVALUE) 0 64 0 64 ) [[ 1 ]] 1} # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.CALLCODE( - gas=0x249F0, - address=0x861E86C681836FF531A2F84C5CDDE43E28E1D234, - value=Op.CALLVALUE, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ), - ) - + Op.SSTORE(key=0x1, value=0x1) - + Op.STOP, - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0x45F35E7E68477A74B163DD6E4EB2833FB1979873), # noqa: E501 - ) - # Source: lll - # { (CALLCODE 40080 (- (CALLVALUE) 1) 0 64 0 64 ) } # noqa: E501 - addr = pre.deploy_contract( # noqa: F841 - code=Op.CALLCODE( - gas=0x9C90, - address=0xF32619344056AD22A07F10433F70165CE82D9273, - value=Op.SUB(Op.CALLVALUE, 0x1), - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ) - + Op.STOP, + # { (MSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, nonce=0, - address=Address(0x861E86C681836FF531A2F84C5CDDE43E28E1D234), # noqa: E501 ) # Source: lll # { (def 'i 0x80) (for {} (< @i 50000) [i](+ @i 1) (EXTCODESIZE 1)) (STATICCALL 20020 0 64 0 64 ) } # noqa: E501 @@ -127,7 +93,7 @@ def test_static_callcodecallcodecall_110_oogm_before2( + Op.JUMPDEST + Op.STATICCALL( gas=0x4E34, - address=0x335C5531B84765A7626E6E76688F18B81BE5259C, + address=addr_3, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -135,16 +101,42 @@ def test_static_callcodecallcodecall_110_oogm_before2( ) + Op.STOP, nonce=0, - address=Address(0xF32619344056AD22A07F10433F70165CE82D9273), # noqa: E501 ) # Source: lll - # { (MSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, + # { (CALLCODE 40080 (- (CALLVALUE) 1) 0 64 0 64 ) } # noqa: E501 + addr = pre.deploy_contract( # noqa: F841 + code=Op.CALLCODE( + gas=0x9C90, + address=addr_2, + value=Op.SUB(Op.CALLVALUE, 0x1), + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ) + + Op.STOP, + nonce=0, + ) + # Source: lll + # { [[ 0 ]] (CALLCODE 150000 (CALLVALUE) 0 64 0 64 ) [[ 1 ]] 1} # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.CALLCODE( + gas=0x249F0, + address=addr, + value=Op.CALLVALUE, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ), + ) + + Op.SSTORE(key=0x1, value=0x1) + + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x335C5531B84765A7626E6E76688F18B81BE5259C), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx_data = [ Bytes(""), diff --git a/tests/ported_static/stStaticCall/test_static_callcodecallcodecall_110_suicide_end.py b/tests/ported_static/stStaticCall/test_static_callcodecallcodecall_110_suicide_end.py index 7f87f8c354c..773ac82c6cf 100644 --- a/tests/ported_static/stStaticCall/test_static_callcodecallcodecall_110_suicide_end.py +++ b/tests/ported_static/stStaticCall/test_static_callcodecallcodecall_110_suicide_end.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -58,9 +57,7 @@ def test_static_callcodecallcodecall_110_suicide_end( ) -> None: """Test_static_callcodecallcodecall_110_suicide_end.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -71,6 +68,14 @@ def test_static_callcodecallcodecall_110_suicide_end( gas_limit=30000000, ) + # Source: lll + # { (MSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, + balance=0x2540BE400, + nonce=0, + address=Address(0x48E2D4C0B593BFEBE5DDB4F13AA355B8BD83DDD3), # noqa: E501 + ) # Source: lll # { [[ 0 ]] (DELEGATECALL 150000 0 64 0 64 ) [[ 1 ]] (GAS) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -126,15 +131,6 @@ def test_static_callcodecallcodecall_110_suicide_end( nonce=0, address=Address(0xB7770360E0B87603E3D9C87C866451760C95ABCA), # noqa: E501 ) - # Source: lll - # { (MSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, - balance=0x2540BE400, - nonce=0, - address=Address(0x48E2D4C0B593BFEBE5DDB4F13AA355B8BD83DDD3), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx_data = [ Bytes(""), diff --git a/tests/ported_static/stStaticCall/test_static_callcodecallcodecall_110_suicide_end2.py b/tests/ported_static/stStaticCall/test_static_callcodecallcodecall_110_suicide_end2.py index 4d3c9663fab..6843361d732 100644 --- a/tests/ported_static/stStaticCall/test_static_callcodecallcodecall_110_suicide_end2.py +++ b/tests/ported_static/stStaticCall/test_static_callcodecallcodecall_110_suicide_end2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -61,9 +60,7 @@ def test_static_callcodecallcodecall_110_suicide_end2( ) -> None: """Test_static_callcodecallcodecall_110_suicide_end2.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -74,6 +71,14 @@ def test_static_callcodecallcodecall_110_suicide_end2( gas_limit=30000000, ) + # Source: lll + # { (MSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, + balance=0x2540BE400, + nonce=0, + address=Address(0x48E2D4C0B593BFEBE5DDB4F13AA355B8BD83DDD3), # noqa: E501 + ) # Source: lll # { [[ 0 ]] (CALLCODE 150000 (CALLVALUE) 0 64 0 64 ) [[ 1 ]] (GAS) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -131,15 +136,6 @@ def test_static_callcodecallcodecall_110_suicide_end2( nonce=0, address=Address(0xB7770360E0B87603E3D9C87C866451760C95ABCA), # noqa: E501 ) - # Source: lll - # { (MSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, - balance=0x2540BE400, - nonce=0, - address=Address(0x48E2D4C0B593BFEBE5DDB4F13AA355B8BD83DDD3), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stStaticCall/test_static_callcodecallcodecall_110_suicide_middle.py b/tests/ported_static/stStaticCall/test_static_callcodecallcodecall_110_suicide_middle.py index eec16c708e9..f8b3e2afe93 100644 --- a/tests/ported_static/stStaticCall/test_static_callcodecallcodecall_110_suicide_middle.py +++ b/tests/ported_static/stStaticCall/test_static_callcodecallcodecall_110_suicide_middle.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -36,9 +35,7 @@ def test_static_callcodecallcodecall_110_suicide_middle( ) -> None: """Test_static_callcodecallcodecall_110_suicide_middle.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,6 +46,14 @@ def test_static_callcodecallcodecall_110_suicide_middle( gas_limit=30000000, ) + # Source: lll + # { (MSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, + balance=0x2540BE400, + nonce=0, + address=Address(0x48E2D4C0B593BFEBE5DDB4F13AA355B8BD83DDD3), # noqa: E501 + ) # Source: lll # { [[ 0 ]] (DELEGATECALL 150000 0 64 0 64 ) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -103,15 +108,6 @@ def test_static_callcodecallcodecall_110_suicide_middle( nonce=0, address=Address(0x408F1ACEFFEC7BDAA35D77006CDCAEAD563BB694), # noqa: E501 ) - # Source: lll - # { (MSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, - balance=0x2540BE400, - nonce=0, - address=Address(0x48E2D4C0B593BFEBE5DDB4F13AA355B8BD83DDD3), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_callcodecallcodecall_110_suicide_middle2.py b/tests/ported_static/stStaticCall/test_static_callcodecallcodecall_110_suicide_middle2.py index d1375ae7e56..99e37c0ec3a 100644 --- a/tests/ported_static/stStaticCall/test_static_callcodecallcodecall_110_suicide_middle2.py +++ b/tests/ported_static/stStaticCall/test_static_callcodecallcodecall_110_suicide_middle2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -36,9 +35,7 @@ def test_static_callcodecallcodecall_110_suicide_middle2( ) -> None: """Test_static_callcodecallcodecall_110_suicide_middle2.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,6 +46,14 @@ def test_static_callcodecallcodecall_110_suicide_middle2( gas_limit=30000000, ) + # Source: lll + # { (MSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, + balance=0x2540BE400, + nonce=0, + address=Address(0x48E2D4C0B593BFEBE5DDB4F13AA355B8BD83DDD3), # noqa: E501 + ) # Source: lll # { [[ 0 ]] (CALLCODE 150000 (CALLVALUE) 0 64 0 64 ) [[ 1 ]] (GAS) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -106,15 +111,6 @@ def test_static_callcodecallcodecall_110_suicide_middle2( nonce=0, address=Address(0x408F1ACEFFEC7BDAA35D77006CDCAEAD563BB694), # noqa: E501 ) - # Source: lll - # { (MSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, - balance=0x2540BE400, - nonce=0, - address=Address(0x48E2D4C0B593BFEBE5DDB4F13AA355B8BD83DDD3), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_callcodecallcodecallcode_111_suicide_end.py b/tests/ported_static/stStaticCall/test_static_callcodecallcodecallcode_111_suicide_end.py index 69f709b8cf2..c01d8f5be61 100644 --- a/tests/ported_static/stStaticCall/test_static_callcodecallcodecallcode_111_suicide_end.py +++ b/tests/ported_static/stStaticCall/test_static_callcodecallcodecallcode_111_suicide_end.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -36,9 +35,7 @@ def test_static_callcodecallcodecallcode_111_suicide_end( ) -> None: """Test_static_callcodecallcodecallcode_111_suicide_end.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,6 +46,14 @@ def test_static_callcodecallcodecallcode_111_suicide_end( gas_limit=30000000, ) + # Source: lll + # { (MSTORE 3 1) } + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, + balance=0x2540BE400, + nonce=0, + address=Address(0x48E2D4C0B593BFEBE5DDB4F13AA355B8BD83DDD3), # noqa: E501 + ) # Source: lll # { [[ 0 ]] (DELEGATECALL 150000 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -105,15 +110,6 @@ def test_static_callcodecallcodecallcode_111_suicide_end( nonce=0, address=Address(0x90E9B92C59A0E93D8AB0B7AFBC945D6999A50A9B), # noqa: E501 ) - # Source: lll - # { (MSTORE 3 1) } - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x3, value=0x1) + Op.STOP, - balance=0x2540BE400, - nonce=0, - address=Address(0x48E2D4C0B593BFEBE5DDB4F13AA355B8BD83DDD3), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_calldelcode_01.py b/tests/ported_static/stStaticCall/test_static_calldelcode_01.py index 369bf95275f..d25b603853a 100644 --- a/tests/ported_static/stStaticCall/test_static_calldelcode_01.py +++ b/tests/ported_static/stStaticCall/test_static_calldelcode_01.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,9 +33,7 @@ def test_static_calldelcode_01( ) -> None: """Test_static_calldelcode_01.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -48,31 +45,17 @@ def test_static_calldelcode_01( ) # Source: lll - # { [[ 0 ]] (STATICCALL 350000 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.STATICCALL( - gas=0x55730, - address=0x91836819E5DD0646F8619EB31C67258FA7CA0A32, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ), - ) - + Op.SSTORE(key=0x1, value=0x1) - + Op.STOP, - balance=0xDE0B6B3A7640000, + # { (MSTORE 1 0x11223344) } + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x1, value=0x11223344) + Op.STOP, nonce=0, - address=Address(0x46DF4A924470CB27A2F8700239656C40DD4794C8), # noqa: E501 ) # Source: lll # { (DELEGATECALL 250000 0 64 0 64 ) } # noqa: E501 addr = pre.deploy_contract( # noqa: F841 code=Op.DELEGATECALL( gas=0x3D090, - address=0x2881A083EA775F78057A93F73110241FDB7398A9, + address=addr_2, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -80,16 +63,26 @@ def test_static_calldelcode_01( ) + Op.STOP, nonce=0, - address=Address(0x91836819E5DD0646F8619EB31C67258FA7CA0A32), # noqa: E501 ) # Source: lll - # { (MSTORE 1 0x11223344) } - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x1, value=0x11223344) + Op.STOP, + # { [[ 0 ]] (STATICCALL 350000 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.STATICCALL( + gas=0x55730, + address=addr, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ), + ) + + Op.SSTORE(key=0x1, value=0x1) + + Op.STOP, + balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x2881A083EA775F78057A93F73110241FDB7398A9), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_calldelcode_01_ooge.py b/tests/ported_static/stStaticCall/test_static_calldelcode_01_ooge.py index c96224c66d6..5e85db2b185 100644 --- a/tests/ported_static/stStaticCall/test_static_calldelcode_01_ooge.py +++ b/tests/ported_static/stStaticCall/test_static_calldelcode_01_ooge.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -56,9 +55,7 @@ def test_static_calldelcode_01_ooge( ) -> None: """Test_static_calldelcode_01_ooge.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -69,27 +66,6 @@ def test_static_calldelcode_01_ooge( gas_limit=30000000, ) - # Source: lll - # { (MSTORE 0 (CALLDATALOAD 0)) [[ 0 ]] (STATICCALL 150000 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x0, value=Op.CALLDATALOAD(offset=0x0)) - + Op.SSTORE( - key=0x0, - value=Op.STATICCALL( - gas=0x249F0, - address=0x77612608C7A22F8929F6F1C9462A9954621AEEFD, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ), - ) - + Op.SSTORE(key=0x1, value=0x1) - + Op.STOP, - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0x6E143211E9D36EAEEBE65F6ED69D6C28500040D6), # noqa: E501 - ) # Source: lll # { (DELEGATECALL 20020 (CALLDATALOAD 0) 0 64 0 64 ) } addr = pre.deploy_contract( # noqa: F841 @@ -129,7 +105,27 @@ def test_static_calldelcode_01_ooge( nonce=0, address=Address(0xFBEF21C5A6C2ADCF3D769F085E0CC9FE9A8DF954), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: lll + # { (MSTORE 0 (CALLDATALOAD 0)) [[ 0 ]] (STATICCALL 150000 0 64 0 64 ) [[ 1 ]] 1 } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x0, value=Op.CALLDATALOAD(offset=0x0)) + + Op.SSTORE( + key=0x0, + value=Op.STATICCALL( + gas=0x249F0, + address=0x77612608C7A22F8929F6F1C9462A9954621AEEFD, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ), + ) + + Op.SSTORE(key=0x1, value=0x1) + + Op.STOP, + balance=0xDE0B6B3A7640000, + nonce=0, + address=Address(0x6E143211E9D36EAEEBE65F6ED69D6C28500040D6), # noqa: E501 + ) tx_data = [ Hash(addr_2, left_padding=True), diff --git a/tests/ported_static/stStaticCall/test_static_callto_return2.py b/tests/ported_static/stStaticCall/test_static_callto_return2.py index 301d52de5d0..409bd9e2136 100644 --- a/tests/ported_static/stStaticCall/test_static_callto_return2.py +++ b/tests/ported_static/stStaticCall/test_static_callto_return2.py @@ -47,6 +47,16 @@ def test_static_callto_return2( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: raw + # 0x603760005360026000f3 + addr = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE8(offset=0x0, value=0x37) + + Op.RETURN(offset=0x0, size=0x2), + balance=23, + nonce=0, + address=Address(0xD5D9E9E0158920B17B6DF82FAC474B3E2691EE99), # noqa: E501 + ) # Source: lll # { (MSTORE 0 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) (MSTORE 32 0xaaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa ) [[ 0 ]] (STATICCALL 5000 0 64 0 2 ) [[ 1 ]] (MLOAD 0) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -62,7 +72,7 @@ def test_static_callto_return2( key=0x0, value=Op.STATICCALL( gas=0x1388, - address=0xD5D9E9E0158920B17B6DF82FAC474B3E2691EE99, + address=addr, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -75,16 +85,6 @@ def test_static_callto_return2( nonce=0, address=Address(0x547D0A349CCAB317152D172E2F2AE7556C334CF3), # noqa: E501 ) - # Source: raw - # 0x603760005360026000f3 - addr = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE8(offset=0x0, value=0x37) - + Op.RETURN(offset=0x0, size=0x2), - balance=23, - nonce=0, - address=Address(0xD5D9E9E0158920B17B6DF82FAC474B3E2691EE99), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_check_call_cost_oog.py b/tests/ported_static/stStaticCall/test_static_check_call_cost_oog.py index ccc8541f5ec..9514f5b8828 100644 --- a/tests/ported_static/stStaticCall/test_static_check_call_cost_oog.py +++ b/tests/ported_static/stStaticCall/test_static_check_call_cost_oog.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -56,9 +55,7 @@ def test_static_check_call_cost_oog( ) -> None: """Check balance in blackbox, just fill the balance consumed.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x3327048BBC0B8C348A6352BE62994144E64B8FF2CEC68D9FF4CA4E911ECD5D22 - ) + sender = pre.fund_eoa(amount=0x5AF3107A4000) env = Environment( fee_recipient=coinbase, @@ -69,13 +66,20 @@ def test_static_check_call_cost_oog( gas_limit=10000000, ) - pre[sender] = Account(balance=0x5AF3107A4000) + # Source: lll + # { (MSTORE 1 1) (KECCAK256 0x00 0x2fffff) } + addr = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x1, value=0x1) + + Op.SHA3(offset=0x0, size=0x2FFFFF) + + Op.STOP, + nonce=0, + ) # Source: lll # { (STATICCALL 100 0 0 0 0) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 code=Op.STATICCALL( gas=0x64, - address=0xEBE7ED7A6E995C9843A6DF04E332981EBB2772E0, + address=addr, args_offset=0x0, args_size=0x0, ret_offset=0x0, @@ -83,16 +87,6 @@ def test_static_check_call_cost_oog( ) + Op.STOP, nonce=0, - address=Address(0xB59292B3A630476ADBC4A3643C0815B682A5009A), # noqa: E501 - ) - # Source: lll - # { (MSTORE 1 1) (KECCAK256 0x00 0x2fffff) } - addr = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x1, value=0x1) - + Op.SHA3(offset=0x0, size=0x2FFFFF) - + Op.STOP, - nonce=0, - address=Address(0xEBE7ED7A6E995C9843A6DF04E332981EBB2772E0), # noqa: E501 ) tx_data = [ diff --git a/tests/ported_static/stStaticCall/test_static_check_opcodes3.py b/tests/ported_static/stStaticCall/test_static_check_opcodes3.py index f57c2b4f594..67c36145697 100644 --- a/tests/ported_static/stStaticCall/test_static_check_opcodes3.py +++ b/tests/ported_static/stStaticCall/test_static_check_opcodes3.py @@ -140,6 +140,30 @@ def test_static_check_opcodes3( address=Address(0x50F628D871A69F2DB31E98D7FBF8AE6F1FC0D55C), # noqa: E501 ) # Source: lll + # { (MSTORE 0 (STATICCALL 100000 (CALLDATALOAD 0) 0 0 0 0)) (if (= 1 (MLOAD 0)) (MSTORE 1 1) (SSTORE 1 2)) } # noqa: E501 + addr_6 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE( + offset=0x0, + value=Op.STATICCALL( + gas=0x186A0, + address=Op.CALLDATALOAD(offset=0x0), + args_offset=0x0, + args_size=0x0, + ret_offset=0x0, + ret_size=0x0, + ), + ) + + Op.JUMPI(pc=0x24, condition=Op.EQ(0x1, Op.MLOAD(offset=0x0))) + + Op.SSTORE(key=0x1, value=0x2) + + Op.JUMP(pc=0x2A) + + Op.JUMPDEST + + Op.MSTORE(offset=0x1, value=0x1) + + Op.JUMPDEST + + Op.STOP, + nonce=0, + address=Address(0x2E5DC1C94AF89D7C115126FCEBAD7A5C50F5FE35), # noqa: E501 + ) + # Source: lll # { (MSTORE 0 ) (MSTORE 0 (CALL 100000 0 0 32 0 0)) (if (= 1 (MLOAD 0)) (MSTORE 1 1) (SSTORE 1 2) ) } # noqa: E501 addr = pre.deploy_contract( # noqa: F841 code=Op.MSTORE( @@ -280,30 +304,6 @@ def test_static_check_opcodes3( address=Address(0x8113F9FC0868700534ECBECF1120A812CB1AF0AC), # noqa: E501 ) # Source: lll - # { (MSTORE 0 (STATICCALL 100000 (CALLDATALOAD 0) 0 0 0 0)) (if (= 1 (MLOAD 0)) (MSTORE 1 1) (SSTORE 1 2)) } # noqa: E501 - addr_6 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE( - offset=0x0, - value=Op.STATICCALL( - gas=0x186A0, - address=Op.CALLDATALOAD(offset=0x0), - args_offset=0x0, - args_size=0x0, - ret_offset=0x0, - ret_size=0x0, - ), - ) - + Op.JUMPI(pc=0x24, condition=Op.EQ(0x1, Op.MLOAD(offset=0x0))) - + Op.SSTORE(key=0x1, value=0x2) - + Op.JUMP(pc=0x2A) - + Op.JUMPDEST - + Op.MSTORE(offset=0x1, value=0x1) - + Op.JUMPDEST - + Op.STOP, - nonce=0, - address=Address(0x2E5DC1C94AF89D7C115126FCEBAD7A5C50F5FE35), # noqa: E501 - ) - # Source: lll # { (if (= (ORIGIN)) (MSTORE 1 1) (SSTORE 1 2) ) (if (= (CALLER)) (MSTORE 1 1) (SSTORE 1 2) ) (if (= (ADDRESS)) (MSTORE 1 1) (SSTORE 1 2) ) (if (= 0 (CALLVALUE)) (MSTORE 1 1) (SSTORE 1 2) ) } # noqa: E501 addr_7 = pre.deploy_contract( # noqa: F841 code=Op.JUMPI( diff --git a/tests/ported_static/stStaticCall/test_static_check_opcodes4.py b/tests/ported_static/stStaticCall/test_static_check_opcodes4.py index 251fd1ea1bf..d212aec2a60 100644 --- a/tests/ported_static/stStaticCall/test_static_check_opcodes4.py +++ b/tests/ported_static/stStaticCall/test_static_check_opcodes4.py @@ -218,13 +218,7 @@ def test_static_check_opcodes4( "result": { sender: Account(nonce=1), target: Account( - storage={ - 1: 1, - 2: 1, - 3: 0xFAA10B404AB607779993C016CD5DA73AE1F29D7E, - 5: 0xFAA10B404AB607779993C016CD5DA73AE1F29D7E, - 6: 0x3350A62DDDDD0FF0E39CD82E2D185FE06B5FCF49, - }, + storage={1: 1, 2: 1, 3: sender, 5: sender, 6: target}, ), }, }, @@ -245,10 +239,10 @@ def test_static_check_opcodes4( storage={ 1: 1, 2: 1, - 3: 0xFAA10B404AB607779993C016CD5DA73AE1F29D7E, + 3: sender, 4: 100, - 5: 0xFAA10B404AB607779993C016CD5DA73AE1F29D7E, - 6: 0x3350A62DDDDD0FF0E39CD82E2D185FE06B5FCF49, + 5: sender, + 6: target, }, ), }, diff --git a/tests/ported_static/stStaticCall/test_static_contract_creation_make_call_that_ask_more_gas_then_transaction_provided.py b/tests/ported_static/stStaticCall/test_static_contract_creation_make_call_that_ask_more_gas_then_transaction_provided.py index b8498d6f638..82b1fe9027c 100644 --- a/tests/ported_static/stStaticCall/test_static_contract_creation_make_call_that_ask_more_gas_then_transaction_provided.py +++ b/tests/ported_static/stStaticCall/test_static_contract_creation_make_call_that_ask_more_gas_then_transaction_provided.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -80,9 +79,7 @@ def test_static_contract_creation_make_call_that_ask_more_gas_then_transaction_p contract_4 = Address(0x4000000000000000000000000000000000000001) contract_5 = Address(0x5000000000000000000000000000000000000001) contract_6 = Address(0x4000000000000000000000000000000000000004) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0x10C8E0) env = Environment( fee_recipient=coinbase, @@ -93,30 +90,12 @@ def test_static_contract_creation_make_call_that_ask_more_gas_then_transaction_p gas_limit=100000000, ) - pre[sender] = Account(balance=0x10C8E0) - # Source: lll - # {(STATICCALL 50000 0x1000000000000000000000000000000000000001 0 64 0 64)} - contract_0 = pre.deploy_contract( # noqa: F841 - code=Op.STATICCALL( - gas=0xC350, - address=0x1000000000000000000000000000000000000001, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ) - + Op.STOP, - balance=0x186A0, - nonce=0, - address=Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B), # noqa: E501 - ) # Source: lll # {(SSTORE 1 1)} contract_1 = pre.deploy_contract( # noqa: F841 code=Op.SSTORE(key=0x1, value=0x1) + Op.STOP, balance=0x186A0, nonce=0, - address=Address(0x1000000000000000000000000000000000000001), # noqa: E501 ) # Source: lll # {(MSTORE 1 1)} @@ -124,7 +103,6 @@ def test_static_contract_creation_make_call_that_ask_more_gas_then_transaction_p code=Op.MSTORE(offset=0x1, value=0x1) + Op.STOP, balance=0x186A0, nonce=0, - address=Address(0x2000000000000000000000000000000000000001), # noqa: E501 ) # Source: lll # { (def 'i 0x80) (for {} (< @i 50000) [i](+ @i 1) (EXTCODESIZE 1)) } @@ -140,31 +118,35 @@ def test_static_contract_creation_make_call_that_ask_more_gas_then_transaction_p + Op.STOP, balance=0x186A0, nonce=0, - address=Address(0x3000000000000000000000000000000000000001), # noqa: E501 ) # Source: lll - # { (CALLCODE 1000 0x4000000000000000000000000000000000000004 0 0 0 0 0) } - contract_4 = pre.deploy_contract( # noqa: F841 - code=Op.CALLCODE( - gas=0x3E8, - address=0x4000000000000000000000000000000000000004, - value=0x0, + # { (MSTORE 1 1) } + contract_6 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x1, value=0x1) + Op.STOP, + balance=0x186A0, + nonce=0, + ) + # Source: lll + # {(STATICCALL 50000 0x1000000000000000000000000000000000000001 0 64 0 64)} + contract_0 = pre.deploy_contract( # noqa: F841 + code=Op.STATICCALL( + gas=0xC350, + address=contract_1, args_offset=0x0, - args_size=0x0, + args_size=0x40, ret_offset=0x0, - ret_size=0x0, + ret_size=0x40, ) + Op.STOP, balance=0x186A0, nonce=0, - address=Address(0x4000000000000000000000000000000000000001), # noqa: E501 ) # Source: lll # { (CALLCODE 1000000 0x4000000000000000000000000000000000000004 0 0 0 0 0) } # noqa: E501 contract_5 = pre.deploy_contract( # noqa: F841 code=Op.CALLCODE( gas=0xF4240, - address=0x4000000000000000000000000000000000000004, + address=contract_6, value=0x0, args_offset=0x0, args_size=0x0, @@ -174,15 +156,22 @@ def test_static_contract_creation_make_call_that_ask_more_gas_then_transaction_p + Op.STOP, balance=0x186A0, nonce=0, - address=Address(0x5000000000000000000000000000000000000001), # noqa: E501 ) # Source: lll - # { (MSTORE 1 1) } - contract_6 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x1, value=0x1) + Op.STOP, + # { (CALLCODE 1000 0x4000000000000000000000000000000000000004 0 0 0 0 0) } + contract_4 = pre.deploy_contract( # noqa: F841 + code=Op.CALLCODE( + gas=0x3E8, + address=contract_6, + value=0x0, + args_offset=0x0, + args_size=0x0, + ret_offset=0x0, + ret_size=0x0, + ) + + Op.STOP, balance=0x186A0, nonce=0, - address=Address(0x4000000000000000000000000000000000000004), # noqa: E501 ) expect_entries_: list[dict] = [ diff --git a/tests/ported_static/stStaticCall/test_static_contract_creation_oo_gdont_leave_empty_contract_via_transaction.py b/tests/ported_static/stStaticCall/test_static_contract_creation_oo_gdont_leave_empty_contract_via_transaction.py index 3e735f9db5c..eb6c5fd6f03 100644 --- a/tests/ported_static/stStaticCall/test_static_contract_creation_oo_gdont_leave_empty_contract_via_transaction.py +++ b/tests/ported_static/stStaticCall/test_static_contract_creation_oo_gdont_leave_empty_contract_via_transaction.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -39,9 +38,7 @@ def test_static_contract_creation_oo_gdont_leave_empty_contract_via_transaction( contract_0 = Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) contract_1 = Address(0x1000000000000000000000000000000000000001) contract_2 = Address(0x2000000000000000000000000000000000000001) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0x10C8E0) env = Environment( fee_recipient=coinbase, @@ -52,29 +49,11 @@ def test_static_contract_creation_oo_gdont_leave_empty_contract_via_transaction( gas_limit=1000000, ) - pre[sender] = Account(balance=0x10C8E0) - # Source: lll - # {(STATICCALL 50000 0x1000000000000000000000000000000000000001 0 64 0 64)} - contract_0 = pre.deploy_contract( # noqa: F841 - code=Op.STATICCALL( - gas=0xC350, - address=0x1000000000000000000000000000000000000001, - args_offset=0x0, - args_size=0x40, - ret_offset=0x0, - ret_size=0x40, - ) - + Op.STOP, - balance=0x186A0, - nonce=0, - address=Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B), # noqa: E501 - ) # Source: lll # {(MSTORE 1 1)} contract_1 = pre.deploy_contract( # noqa: F841 code=Op.MSTORE(offset=0x1, value=0x1) + Op.STOP, nonce=0, - address=Address(0x1000000000000000000000000000000000000001), # noqa: E501 ) # Source: lll # { (def 'i 0x80) (for {} (< @i 50000) [i](+ @i 1) (EXTCODESIZE 1)) } @@ -89,7 +68,21 @@ def test_static_contract_creation_oo_gdont_leave_empty_contract_via_transaction( + Op.JUMPDEST + Op.STOP, nonce=0, - address=Address(0x2000000000000000000000000000000000000001), # noqa: E501 + ) + # Source: lll + # {(STATICCALL 50000 0x1000000000000000000000000000000000000001 0 64 0 64)} + contract_0 = pre.deploy_contract( # noqa: F841 + code=Op.STATICCALL( + gas=0xC350, + address=contract_1, + args_offset=0x0, + args_size=0x40, + ret_offset=0x0, + ret_size=0x40, + ) + + Op.STOP, + balance=0x186A0, + nonce=0, ) tx = Transaction( diff --git a/tests/ported_static/stStaticCall/test_static_create_contract_suicide_during_init.py b/tests/ported_static/stStaticCall/test_static_create_contract_suicide_during_init.py index 1090a23cfaa..abdb26f1df3 100644 --- a/tests/ported_static/stStaticCall/test_static_create_contract_suicide_during_init.py +++ b/tests/ported_static/stStaticCall/test_static_create_contract_suicide_during_init.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -74,9 +73,7 @@ def test_static_create_contract_suicide_during_init( contract_1 = Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) contract_2 = Address(0xD94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) contract_3 = Address(0xE94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -87,13 +84,11 @@ def test_static_create_contract_suicide_during_init( gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) # Source: lll # { (MSTORE 1 1) } contract_0 = pre.deploy_contract( # noqa: F841 code=Op.MSTORE(offset=0x1, value=0x1) + Op.STOP, nonce=0, - address=Address(0xC94F5374FCE5EDBC8E2A8697C15331677E6EBF0B), # noqa: E501 ) # Source: lll # { (def 'i 0x80) (for {} (< @i 50000) [i](+ @i 1) (EXTCODESIZE 1)) } @@ -109,7 +104,6 @@ def test_static_create_contract_suicide_during_init( + Op.STOP, balance=11, nonce=0, - address=Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B), # noqa: E501 ) # Source: lll # { (SSTORE 1 1) } @@ -117,14 +111,13 @@ def test_static_create_contract_suicide_during_init( code=Op.SSTORE(key=0x1, value=0x1) + Op.STOP, balance=11, nonce=0, - address=Address(0xD94F5374FCE5EDBC8E2A8697C15331677E6EBF0B), # noqa: E501 ) # Source: lll # { (CALL 100 0xc94f5374fce5edbc8e2a8697c15331677e6ebf0b 1 0 0 0 0) } contract_3 = pre.deploy_contract( # noqa: F841 code=Op.CALL( gas=0x64, - address=0xC94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, + address=contract_0, value=0x1, args_offset=0x0, args_size=0x0, @@ -134,7 +127,6 @@ def test_static_create_contract_suicide_during_init( + Op.STOP, balance=11, nonce=0, - address=Address(0xE94F5374FCE5EDBC8E2A8697C15331677E6EBF0B), # noqa: E501 ) tx_data = [ diff --git a/tests/ported_static/stStaticCall/test_static_create_contract_suicide_during_init_then_store_then_return.py b/tests/ported_static/stStaticCall/test_static_create_contract_suicide_during_init_then_store_then_return.py index e167563d30c..c6915b5ce3a 100644 --- a/tests/ported_static/stStaticCall/test_static_create_contract_suicide_during_init_then_store_then_return.py +++ b/tests/ported_static/stStaticCall/test_static_create_contract_suicide_during_init_then_store_then_return.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -62,9 +61,7 @@ def test_static_create_contract_suicide_during_init_then_store_then_return( contract_1 = Address(0xD94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) contract_2 = Address(0x094F5374FCE5EDBC8E2A8697C15331677E6EBF0B) contract_3 = Address(0x194F5374FCE5EDBC8E2A8697C15331677E6EBF0B) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -75,34 +72,29 @@ def test_static_create_contract_suicide_during_init_then_store_then_return( gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) # Source: lll # {[[1]]12} contract_0 = pre.deploy_contract( # noqa: F841 code=Op.SSTORE(key=0x1, value=0xC) + Op.STOP, nonce=0, - address=Address(0xC94F5374FCE5EDBC8E2A8697C15331677E6EBF0B), # noqa: E501 ) # Source: lll # {[[1]]12} contract_1 = pre.deploy_contract( # noqa: F841 code=Op.SSTORE(key=0x1, value=0xC) + Op.STOP, nonce=0, - address=Address(0xD94F5374FCE5EDBC8E2A8697C15331677E6EBF0B), # noqa: E501 ) # Source: lll # { (MSTORE 1 1) } contract_2 = pre.deploy_contract( # noqa: F841 code=Op.MSTORE(offset=0x1, value=0x1) + Op.STOP, nonce=0, - address=Address(0x094F5374FCE5EDBC8E2A8697C15331677E6EBF0B), # noqa: E501 ) # Source: lll # {(MSTORE 1 1) } contract_3 = pre.deploy_contract( # noqa: F841 code=Op.MSTORE(offset=0x1, value=0x1) + Op.STOP, nonce=0, - address=Address(0x194F5374FCE5EDBC8E2A8697C15331677E6EBF0B), # noqa: E501 ) tx_data = [ diff --git a/tests/ported_static/stStaticCall/test_static_create_contract_suicide_during_init_with_value.py b/tests/ported_static/stStaticCall/test_static_create_contract_suicide_during_init_with_value.py index 4192b76403e..a094c7576c5 100644 --- a/tests/ported_static/stStaticCall/test_static_create_contract_suicide_during_init_with_value.py +++ b/tests/ported_static/stStaticCall/test_static_create_contract_suicide_during_init_with_value.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -60,9 +59,7 @@ def test_static_create_contract_suicide_during_init_with_value( coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) contract_0 = Address(0xC94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) contract_1 = Address(0xD94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -73,20 +70,17 @@ def test_static_create_contract_suicide_during_init_with_value( gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) # Source: lll # {[[1]]12} contract_0 = pre.deploy_contract( # noqa: F841 code=Op.SSTORE(key=0x1, value=0xC) + Op.STOP, nonce=0, - address=Address(0xC94F5374FCE5EDBC8E2A8697C15331677E6EBF0B), # noqa: E501 ) # Source: lll # { (MSTORE 1 1) } contract_1 = pre.deploy_contract( # noqa: F841 code=Op.MSTORE(offset=0x1, value=0x1) + Op.STOP, nonce=0, - address=Address(0xD94F5374FCE5EDBC8E2A8697C15331677E6EBF0B), # noqa: E501 ) tx_data = [ diff --git a/tests/ported_static/stStaticCall/test_static_create_empty_contract_and_call_it_0wei.py b/tests/ported_static/stStaticCall/test_static_create_empty_contract_and_call_it_0wei.py index e0447f422ca..06c2269aa0d 100644 --- a/tests/ported_static/stStaticCall/test_static_create_empty_contract_and_call_it_0wei.py +++ b/tests/ported_static/stStaticCall/test_static_create_empty_contract_and_call_it_0wei.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -38,9 +37,7 @@ def test_static_create_empty_contract_and_call_it_0wei( """Test_static_create_empty_contract_and_call_it_0wei.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) contract_0 = Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -51,7 +48,6 @@ def test_static_create_empty_contract_and_call_it_0wei( gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) # Source: lll # { [[0]](GAS) [[1]] (CREATE 0 0 32) [[2]](GAS) [[3]] (STATICCALL 60000 (SLOAD 1) 0 0 0 0) [[100]] (GAS) } # noqa: E501 contract_0 = pre.deploy_contract( # noqa: F841 @@ -86,7 +82,7 @@ def test_static_create_empty_contract_and_call_it_0wei( contract_0: Account( storage={ 0: 0x8D5B6, - 1: 0xF1ECF98489FA9ED60A664FC4998DB699CFA39D40, + 1: compute_create_address(address=contract_0, nonce=0), 2: 0x7ABF8, 3: 1, 100: 0x6FE6E, diff --git a/tests/ported_static/stStaticCall/test_static_create_empty_contract_with_storage_and_call_it_0wei.py b/tests/ported_static/stStaticCall/test_static_create_empty_contract_with_storage_and_call_it_0wei.py index 0773334b4eb..42399b955b1 100644 --- a/tests/ported_static/stStaticCall/test_static_create_empty_contract_with_storage_and_call_it_0wei.py +++ b/tests/ported_static/stStaticCall/test_static_create_empty_contract_with_storage_and_call_it_0wei.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -39,9 +38,7 @@ def test_static_create_empty_contract_with_storage_and_call_it_0wei( coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) contract_0 = Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) contract_1 = Address(0xC94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -52,7 +49,6 @@ def test_static_create_empty_contract_with_storage_and_call_it_0wei( gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) # Source: lll # { [[0]](GAS) (MSTORE 0 0x600c6000556000600060006000600073c94f5374fce5edbc8e2a8697c1533167) (MSTORE 32 0x7e6ebf0b61ea60f1000000000000000000000000000000000000000000000000) [[1]] (CREATE 0 0 64) [[2]] (GAS) [[3]] (STATICCALL 60000 (SLOAD 1) 0 0 0 0) [[100]] (GAS) } # noqa: E501 contract_0 = pre.deploy_contract( # noqa: F841 @@ -103,7 +99,7 @@ def test_static_create_empty_contract_with_storage_and_call_it_0wei( contract_0: Account( storage={ 0: 0x8D5B6, - 1: 0xF1ECF98489FA9ED60A664FC4998DB699CFA39D40, + 1: compute_create_address(address=contract_0, nonce=0), 2: 0x6F4F0, 3: 1, 100: 0x64766, diff --git a/tests/ported_static/stStaticCall/test_static_execute_call_that_ask_fore_gas_then_trabsaction_has.py b/tests/ported_static/stStaticCall/test_static_execute_call_that_ask_fore_gas_then_trabsaction_has.py index c6d266f8f0a..c48d9cfe3d4 100644 --- a/tests/ported_static/stStaticCall/test_static_execute_call_that_ask_fore_gas_then_trabsaction_has.py +++ b/tests/ported_static/stStaticCall/test_static_execute_call_that_ask_fore_gas_then_trabsaction_has.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -67,9 +66,7 @@ def test_static_execute_call_that_ask_fore_gas_then_trabsaction_has( ) -> None: """Test_static_execute_call_that_ask_fore_gas_then_trabsaction_has.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xDC4EFA209AECDD4C2D5201A419EA27506151B4EC687F14A613229E310932491B - ) + sender = pre.fund_eoa(amount=0x989680) env = Environment( fee_recipient=coinbase, @@ -80,7 +77,6 @@ def test_static_execute_call_that_ask_fore_gas_then_trabsaction_has( gas_limit=10000000, ) - pre[sender] = Account(balance=0x989680) # Source: lll # { [[1]] (STATICCALL 600000 (CALLDATALOAD 0) 0 0 0 0) } target = pre.deploy_contract( # noqa: F841 diff --git a/tests/ported_static/stStaticCall/test_static_internal_call_hitting_gas_limit.py b/tests/ported_static/stStaticCall/test_static_internal_call_hitting_gas_limit.py index 7ade131bec4..fa551114028 100644 --- a/tests/ported_static/stStaticCall/test_static_internal_call_hitting_gas_limit.py +++ b/tests/ported_static/stStaticCall/test_static_internal_call_hitting_gas_limit.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,9 +33,7 @@ def test_static_internal_call_hitting_gas_limit( ) -> None: """Test_static_internal_call_hitting_gas_limit.""" coinbase = Address(0x2ADF5374FCE5EDBC8E2A8697C15331677E6EBF0B) - sender = EOA( - key=0x7C857D62C76CE09F2E8EC3FA9277578C67B69C6547364568FDDB841071E5BD7 - ) + sender = pre.fund_eoa(amount=0xF4240) env = Environment( fee_recipient=coinbase, @@ -47,23 +44,6 @@ def test_static_internal_call_hitting_gas_limit( gas_limit=100000, ) - pre[sender] = Account(balance=0xF4240) - # Source: lll - # { (STATICCALL 5000 0 0 0 0) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.STATICCALL( - gas=0x1388, - address=0x285BB5C8A71646AB9A5796D4A718CC4826AF8D06, - args_offset=0x0, - args_size=0x0, - ret_offset=0x0, - ret_size=0x0, - ) - + Op.STOP, - balance=0xF4240, - nonce=0, - address=Address(0x5A755EAD8F1201283F750B2F77AF7D03399D5FEB), # noqa: E501 - ) # Source: lll # { (def 'i 0x80) (for {} (< @i 50000) [i](+ @i 1) (EXTCODESIZE 1)) } addr = pre.deploy_contract( # noqa: F841 @@ -77,7 +57,21 @@ def test_static_internal_call_hitting_gas_limit( + Op.JUMPDEST + Op.STOP, nonce=0, - address=Address(0x285BB5C8A71646AB9A5796D4A718CC4826AF8D06), # noqa: E501 + ) + # Source: lll + # { (STATICCALL 5000 0 0 0 0) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.STATICCALL( + gas=0x1388, + address=addr, + args_offset=0x0, + args_size=0x0, + ret_offset=0x0, + ret_size=0x0, + ) + + Op.STOP, + balance=0xF4240, + nonce=0, ) tx = Transaction( diff --git a/tests/ported_static/stStaticCall/test_static_internal_call_hitting_gas_limit2.py b/tests/ported_static/stStaticCall/test_static_internal_call_hitting_gas_limit2.py index 72adc72d954..420d8654ec1 100644 --- a/tests/ported_static/stStaticCall/test_static_internal_call_hitting_gas_limit2.py +++ b/tests/ported_static/stStaticCall/test_static_internal_call_hitting_gas_limit2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -36,9 +35,7 @@ def test_static_internal_call_hitting_gas_limit2( ) -> None: """Test_static_internal_call_hitting_gas_limit2.""" coinbase = Address(0x2ADF5374FCE5EDBC8E2A8697C15331677E6EBF0B) - sender = EOA( - key=0x7C857D62C76CE09F2E8EC3FA9277578C67B69C6547364568FDDB841071E5BD7 - ) + sender = pre.fund_eoa(amount=0xF4240) env = Environment( fee_recipient=coinbase, @@ -49,7 +46,20 @@ def test_static_internal_call_hitting_gas_limit2( gas_limit=47766, ) - pre[sender] = Account(balance=0xF4240) + # Source: lll + # { (def 'i 0x80) (for {} (< @i 50000) [i](+ @i 1) (EXTCODESIZE 1)) } + addr = pre.deploy_contract( # noqa: F841 + code=Op.JUMPDEST + + Op.JUMPI( + pc=0x1C, condition=Op.ISZERO(Op.LT(Op.MLOAD(offset=0x80), 0xC350)) + ) + + Op.POP(Op.EXTCODESIZE(address=0x1)) + + Op.MSTORE(offset=0x80, value=Op.ADD(Op.MLOAD(offset=0x80), 0x1)) + + Op.JUMP(pc=0x0) + + Op.JUMPDEST + + Op.STOP, + nonce=0, + ) # Source: lll # { [[ 1 ]] (STATICCALL 25000 0 0 0 0) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -57,7 +67,7 @@ def test_static_internal_call_hitting_gas_limit2( key=0x1, value=Op.STATICCALL( gas=0x61A8, - address=0x285BB5C8A71646AB9A5796D4A718CC4826AF8D06, + address=addr, args_offset=0x0, args_size=0x0, ret_offset=0x0, @@ -66,22 +76,6 @@ def test_static_internal_call_hitting_gas_limit2( ) + Op.STOP, nonce=0, - address=Address(0xF0801B78978104BAE7D7D679F8E3990492825C3E), # noqa: E501 - ) - # Source: lll - # { (def 'i 0x80) (for {} (< @i 50000) [i](+ @i 1) (EXTCODESIZE 1)) } - addr = pre.deploy_contract( # noqa: F841 - code=Op.JUMPDEST - + Op.JUMPI( - pc=0x1C, condition=Op.ISZERO(Op.LT(Op.MLOAD(offset=0x80), 0xC350)) - ) - + Op.POP(Op.EXTCODESIZE(address=0x1)) - + Op.MSTORE(offset=0x80, value=Op.ADD(Op.MLOAD(offset=0x80), 0x1)) - + Op.JUMP(pc=0x0) - + Op.JUMPDEST - + Op.STOP, - nonce=0, - address=Address(0x285BB5C8A71646AB9A5796D4A718CC4826AF8D06), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stStaticCall/test_static_internal_call_store_clears_oog.py b/tests/ported_static/stStaticCall/test_static_internal_call_store_clears_oog.py index 5747003967c..e63ab3f633b 100644 --- a/tests/ported_static/stStaticCall/test_static_internal_call_store_clears_oog.py +++ b/tests/ported_static/stStaticCall/test_static_internal_call_store_clears_oog.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -36,9 +35,7 @@ def test_static_internal_call_store_clears_oog( coinbase = Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) contract_0 = Address(0x0000000000000000000000000000000000000000) contract_1 = Address(0xC94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0x5F5E100) env = Environment( fee_recipient=coinbase, @@ -78,7 +75,6 @@ def test_static_internal_call_store_clears_oog( nonce=0, address=Address(0x0000000000000000000000000000000000000000), # noqa: E501 ) - pre[sender] = Account(balance=0x5F5E100) # Source: lll # { [[ 1 ]] (STATICCALL 40000 0 0 0 0 0) } contract_1 = pre.deploy_contract( # noqa: F841 @@ -124,7 +120,7 @@ def test_static_internal_call_store_clears_oog( balance=0, ), sender: Account(nonce=1), - contract_1: Account(storage={1: 0}, balance=20), + contract_1: Account(storage={1: contract_0}, balance=20), } state_test(env=env, pre=pre, post=post, tx=tx) diff --git a/tests/ported_static/stStaticCall/test_static_log0_empty_mem.py b/tests/ported_static/stStaticCall/test_static_log0_empty_mem.py index d25b1c99d05..544bf1cf1e6 100644 --- a/tests/ported_static/stStaticCall/test_static_log0_empty_mem.py +++ b/tests/ported_static/stStaticCall/test_static_log0_empty_mem.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,9 +33,7 @@ def test_static_log0_empty_mem( ) -> None: """Test_static_log0_empty_mem.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -47,6 +44,13 @@ def test_static_log0_empty_mem( gas_limit=1000000, ) + # Source: lll + # { (LOG0 0 0) } + addr = pre.deploy_contract( # noqa: F841 + code=Op.LOG0(offset=0x0, size=0x0) + Op.STOP, + balance=0xDE0B6B3A7640000, + nonce=0, + ) # Source: lll # { [[ 0 ]] (STATICCALL 1000 0 0 0 0) [[ 1 ]] 1 } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -54,7 +58,7 @@ def test_static_log0_empty_mem( key=0x0, value=Op.STATICCALL( gas=0x3E8, - address=0xC2A943E837808399D9C1B946C6188739D4D4475E, + address=addr, args_offset=0x0, args_size=0x0, ret_offset=0x0, @@ -65,17 +69,7 @@ def test_static_log0_empty_mem( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xDE4EDFB3CE6BD32637813F22447DF168E9289CDD), # noqa: E501 - ) - # Source: lll - # { (LOG0 0 0) } - addr = pre.deploy_contract( # noqa: F841 - code=Op.LOG0(offset=0x0, size=0x0) + Op.STOP, - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0xC2A943E837808399D9C1B946C6188739D4D4475E), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_log0_log_mem_start_too_high.py b/tests/ported_static/stStaticCall/test_static_log0_log_mem_start_too_high.py index ff7221fc8a6..1b8b29fde1c 100644 --- a/tests/ported_static/stStaticCall/test_static_log0_log_mem_start_too_high.py +++ b/tests/ported_static/stStaticCall/test_static_log0_log_mem_start_too_high.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,9 +33,7 @@ def test_static_log0_log_mem_start_too_high( ) -> None: """Test_static_log0_log_mem_start_too_high.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -47,6 +44,21 @@ def test_static_log0_log_mem_start_too_high( gas_limit=1000000, ) + # Source: lll + # { (MSTORE 0 0xaabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd) (LOG0 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 1) } # noqa: E501 + addr = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE( + offset=0x0, + value=0xAABBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCDD, # noqa: E501 + ) + + Op.LOG0( + offset=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, # noqa: E501 + size=0x1, + ) + + Op.STOP, + balance=0xDE0B6B3A7640000, + nonce=0, + ) # Source: lll # { [[ 0 ]] (STATICCALL 1000 0 0 0 0) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -54,7 +66,7 @@ def test_static_log0_log_mem_start_too_high( key=0x0, value=Op.STATICCALL( gas=0x3E8, - address=0x4E46DD6CCD823BBE05D8CEAF0CA778101F8D8E6B, + address=addr, args_offset=0x0, args_size=0x0, ret_offset=0x0, @@ -64,25 +76,7 @@ def test_static_log0_log_mem_start_too_high( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xE230B8D7763E30CA988447DAA182146B0BEA3764), # noqa: E501 - ) - # Source: lll - # { (MSTORE 0 0xaabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd) (LOG0 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 1) } # noqa: E501 - addr = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE( - offset=0x0, - value=0xAABBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCDD, # noqa: E501 - ) - + Op.LOG0( - offset=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, # noqa: E501 - size=0x1, - ) - + Op.STOP, - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0x4E46DD6CCD823BBE05D8CEAF0CA778101F8D8E6B), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_log0_log_memsize_too_high.py b/tests/ported_static/stStaticCall/test_static_log0_log_memsize_too_high.py index f0832ef1eb1..08be6f2f1ae 100644 --- a/tests/ported_static/stStaticCall/test_static_log0_log_memsize_too_high.py +++ b/tests/ported_static/stStaticCall/test_static_log0_log_memsize_too_high.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,9 +33,7 @@ def test_static_log0_log_memsize_too_high( ) -> None: """Test_static_log0_log_memsize_too_high.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -47,6 +44,21 @@ def test_static_log0_log_memsize_too_high( gas_limit=1000000, ) + # Source: lll + # { (MSTORE 0 0xaabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd) (LOG0 1 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) } # noqa: E501 + addr = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE( + offset=0x0, + value=0xAABBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCDD, # noqa: E501 + ) + + Op.LOG0( + offset=0x1, + size=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, # noqa: E501 + ) + + Op.STOP, + balance=0xDE0B6B3A7640000, + nonce=0, + ) # Source: lll # { [[ 0 ]] (STATICCALL 1000 0 0 0 0) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -54,7 +66,7 @@ def test_static_log0_log_memsize_too_high( key=0x0, value=Op.STATICCALL( gas=0x3E8, - address=0x6573BB447199FC94C98AD0F26068653C70DA4044, + address=addr, args_offset=0x0, args_size=0x0, ret_offset=0x0, @@ -64,25 +76,7 @@ def test_static_log0_log_memsize_too_high( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xE230B8D7763E30CA988447DAA182146B0BEA3764), # noqa: E501 - ) - # Source: lll - # { (MSTORE 0 0xaabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd) (LOG0 1 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) } # noqa: E501 - addr = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE( - offset=0x0, - value=0xAABBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCDD, # noqa: E501 - ) - + Op.LOG0( - offset=0x1, - size=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, # noqa: E501 - ) - + Op.STOP, - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0x6573BB447199FC94C98AD0F26068653C70DA4044), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_log0_log_memsize_zero.py b/tests/ported_static/stStaticCall/test_static_log0_log_memsize_zero.py index f3404e23524..d00b5fa1cae 100644 --- a/tests/ported_static/stStaticCall/test_static_log0_log_memsize_zero.py +++ b/tests/ported_static/stStaticCall/test_static_log0_log_memsize_zero.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,9 +33,7 @@ def test_static_log0_log_memsize_zero( ) -> None: """Test_static_log0_log_memsize_zero.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -47,6 +44,18 @@ def test_static_log0_log_memsize_zero( gas_limit=1000000, ) + # Source: lll + # { (MSTORE 0 0xaabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd) (LOG0 1 0) } # noqa: E501 + addr = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE( + offset=0x0, + value=0xAABBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCDD, # noqa: E501 + ) + + Op.LOG0(offset=0x1, size=0x0) + + Op.STOP, + balance=0xDE0B6B3A7640000, + nonce=0, + ) # Source: lll # { [[ 0 ]] (STATICCALL 1000 0 0 0 0) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -54,7 +63,7 @@ def test_static_log0_log_memsize_zero( key=0x0, value=Op.STATICCALL( gas=0x3E8, - address=0x2F70A6BCEE18358A07F12FF4630E0A802D8C293A, + address=addr, args_offset=0x0, args_size=0x0, ret_offset=0x0, @@ -64,22 +73,7 @@ def test_static_log0_log_memsize_zero( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xE230B8D7763E30CA988447DAA182146B0BEA3764), # noqa: E501 - ) - # Source: lll - # { (MSTORE 0 0xaabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd) (LOG0 1 0) } # noqa: E501 - addr = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE( - offset=0x0, - value=0xAABBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCDD, # noqa: E501 - ) - + Op.LOG0(offset=0x1, size=0x0) - + Op.STOP, - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0x2F70A6BCEE18358A07F12FF4630E0A802D8C293A), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_log0_non_empty_mem.py b/tests/ported_static/stStaticCall/test_static_log0_non_empty_mem.py index 448768e8712..e2fa4804a08 100644 --- a/tests/ported_static/stStaticCall/test_static_log0_non_empty_mem.py +++ b/tests/ported_static/stStaticCall/test_static_log0_non_empty_mem.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,9 +33,7 @@ def test_static_log0_non_empty_mem( ) -> None: """Test_static_log0_non_empty_mem.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -47,6 +44,18 @@ def test_static_log0_non_empty_mem( gas_limit=1000000, ) + # Source: lll + # { (MSTORE 0 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) (LOG0 0 32) } # noqa: E501 + addr = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE( + offset=0x0, + value=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, # noqa: E501 + ) + + Op.LOG0(offset=0x0, size=0x20) + + Op.STOP, + balance=0xDE0B6B3A7640000, + nonce=0, + ) # Source: lll # { [[ 0 ]] (STATICCALL 1000 0 0 0 0) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -54,7 +63,7 @@ def test_static_log0_non_empty_mem( key=0x0, value=Op.STATICCALL( gas=0x3E8, - address=0x86BB6680BEC59591FA113B66365D1BF87A4C6910, + address=addr, args_offset=0x0, args_size=0x0, ret_offset=0x0, @@ -64,22 +73,7 @@ def test_static_log0_non_empty_mem( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xE230B8D7763E30CA988447DAA182146B0BEA3764), # noqa: E501 - ) - # Source: lll - # { (MSTORE 0 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) (LOG0 0 32) } # noqa: E501 - addr = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE( - offset=0x0, - value=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, # noqa: E501 - ) - + Op.LOG0(offset=0x0, size=0x20) - + Op.STOP, - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0x86BB6680BEC59591FA113B66365D1BF87A4C6910), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_log0_non_empty_mem_log_mem_size1.py b/tests/ported_static/stStaticCall/test_static_log0_non_empty_mem_log_mem_size1.py index 6d44de5ee04..ac79fbfd901 100644 --- a/tests/ported_static/stStaticCall/test_static_log0_non_empty_mem_log_mem_size1.py +++ b/tests/ported_static/stStaticCall/test_static_log0_non_empty_mem_log_mem_size1.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -36,9 +35,7 @@ def test_static_log0_non_empty_mem_log_mem_size1( ) -> None: """Test_static_log0_non_empty_mem_log_mem_size1.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,6 +46,18 @@ def test_static_log0_non_empty_mem_log_mem_size1( gas_limit=1000000, ) + # Source: lll + # { (MSTORE 0 0xaabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd) (LOG0 0 1) } # noqa: E501 + addr = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE( + offset=0x0, + value=0xAABBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCDD, # noqa: E501 + ) + + Op.LOG0(offset=0x0, size=0x1) + + Op.STOP, + balance=0xDE0B6B3A7640000, + nonce=0, + ) # Source: lll # { [[ 0 ]] (STATICCALL 1000 0 0 0 0) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -56,7 +65,7 @@ def test_static_log0_non_empty_mem_log_mem_size1( key=0x0, value=Op.STATICCALL( gas=0x3E8, - address=0x2DA68E115CD98F7D70E0B7CFABE76581FD2D667, + address=addr, args_offset=0x0, args_size=0x0, ret_offset=0x0, @@ -66,22 +75,7 @@ def test_static_log0_non_empty_mem_log_mem_size1( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xE230B8D7763E30CA988447DAA182146B0BEA3764), # noqa: E501 - ) - # Source: lll - # { (MSTORE 0 0xaabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd) (LOG0 0 1) } # noqa: E501 - addr = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE( - offset=0x0, - value=0xAABBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCDD, # noqa: E501 - ) - + Op.LOG0(offset=0x0, size=0x1) - + Op.STOP, - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0x02DA68E115CD98F7D70E0B7CFABE76581FD2D667), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_log0_non_empty_mem_log_mem_size1_log_mem_start31.py b/tests/ported_static/stStaticCall/test_static_log0_non_empty_mem_log_mem_size1_log_mem_start31.py index dc37f47154e..0485ad02595 100644 --- a/tests/ported_static/stStaticCall/test_static_log0_non_empty_mem_log_mem_size1_log_mem_start31.py +++ b/tests/ported_static/stStaticCall/test_static_log0_non_empty_mem_log_mem_size1_log_mem_start31.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -36,9 +35,7 @@ def test_static_log0_non_empty_mem_log_mem_size1_log_mem_start31( ) -> None: """Test_static_log0_non_empty_mem_log_mem_size1_log_mem_start31.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -49,6 +46,18 @@ def test_static_log0_non_empty_mem_log_mem_size1_log_mem_start31( gas_limit=1000000, ) + # Source: lll + # { (MSTORE 0 0xaabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd) (LOG0 31 1) } # noqa: E501 + addr = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE( + offset=0x0, + value=0xAABBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCDD, # noqa: E501 + ) + + Op.LOG0(offset=0x1F, size=0x1) + + Op.STOP, + balance=0xDE0B6B3A7640000, + nonce=0, + ) # Source: lll # { [[ 0 ]] (STATICCALL 1000 0 0 0 0) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -56,7 +65,7 @@ def test_static_log0_non_empty_mem_log_mem_size1_log_mem_start31( key=0x0, value=Op.STATICCALL( gas=0x3E8, - address=0x897FEE72AFB437BE678EE00C486726DA08ADB887, + address=addr, args_offset=0x0, args_size=0x0, ret_offset=0x0, @@ -66,22 +75,7 @@ def test_static_log0_non_empty_mem_log_mem_size1_log_mem_start31( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xE230B8D7763E30CA988447DAA182146B0BEA3764), # noqa: E501 - ) - # Source: lll - # { (MSTORE 0 0xaabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd) (LOG0 31 1) } # noqa: E501 - addr = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE( - offset=0x0, - value=0xAABBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCDD, # noqa: E501 - ) - + Op.LOG0(offset=0x1F, size=0x1) - + Op.STOP, - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0x897FEE72AFB437BE678EE00C486726DA08ADB887), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_log1_empty_mem.py b/tests/ported_static/stStaticCall/test_static_log1_empty_mem.py index 240c00b9c78..ab6c4284320 100644 --- a/tests/ported_static/stStaticCall/test_static_log1_empty_mem.py +++ b/tests/ported_static/stStaticCall/test_static_log1_empty_mem.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,9 +33,7 @@ def test_static_log1_empty_mem( ) -> None: """Test_static_log1_empty_mem.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -47,6 +44,13 @@ def test_static_log1_empty_mem( gas_limit=1000000, ) + # Source: lll + # { (LOG1 0 0 0) } + addr = pre.deploy_contract( # noqa: F841 + code=Op.LOG1(offset=0x0, size=0x0, topic_1=0x0) + Op.STOP, + balance=0xDE0B6B3A7640000, + nonce=0, + ) # Source: lll # { [[ 0 ]] (STATICCALL 1000 0 0 0 0) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -54,7 +58,7 @@ def test_static_log1_empty_mem( key=0x0, value=Op.STATICCALL( gas=0x3E8, - address=0xA86CBC14A38774A22B21CC067FF70DD74CC18E7F, + address=addr, args_offset=0x0, args_size=0x0, ret_offset=0x0, @@ -64,17 +68,7 @@ def test_static_log1_empty_mem( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xE230B8D7763E30CA988447DAA182146B0BEA3764), # noqa: E501 - ) - # Source: lll - # { (LOG1 0 0 0) } - addr = pre.deploy_contract( # noqa: F841 - code=Op.LOG1(offset=0x0, size=0x0, topic_1=0x0) + Op.STOP, - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0xA86CBC14A38774A22B21CC067FF70DD74CC18E7F), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_log1_log_mem_start_too_high.py b/tests/ported_static/stStaticCall/test_static_log1_log_mem_start_too_high.py index b8bd76e3639..bf18441054a 100644 --- a/tests/ported_static/stStaticCall/test_static_log1_log_mem_start_too_high.py +++ b/tests/ported_static/stStaticCall/test_static_log1_log_mem_start_too_high.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,9 +33,7 @@ def test_static_log1_log_mem_start_too_high( ) -> None: """Test_static_log1_log_mem_start_too_high.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -47,6 +44,22 @@ def test_static_log1_log_mem_start_too_high( gas_limit=1000000, ) + # Source: lll + # { (MSTORE 0 0xaabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd) (LOG1 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 1 0) } # noqa: E501 + addr = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE( + offset=0x0, + value=0xAABBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCDD, # noqa: E501 + ) + + Op.LOG1( + offset=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, # noqa: E501 + size=0x1, + topic_1=0x0, + ) + + Op.STOP, + balance=0xDE0B6B3A7640000, + nonce=0, + ) # Source: lll # { [[ 0 ]] (STATICCALL 1000 0 0 0 0) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -54,7 +67,7 @@ def test_static_log1_log_mem_start_too_high( key=0x0, value=Op.STATICCALL( gas=0x3E8, - address=0x2884BD4A36D3BF28249C493EEFC971380A638684, + address=addr, args_offset=0x0, args_size=0x0, ret_offset=0x0, @@ -64,26 +77,7 @@ def test_static_log1_log_mem_start_too_high( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xE230B8D7763E30CA988447DAA182146B0BEA3764), # noqa: E501 - ) - # Source: lll - # { (MSTORE 0 0xaabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd) (LOG1 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 1 0) } # noqa: E501 - addr = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE( - offset=0x0, - value=0xAABBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCDD, # noqa: E501 - ) - + Op.LOG1( - offset=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, # noqa: E501 - size=0x1, - topic_1=0x0, - ) - + Op.STOP, - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0x2884BD4A36D3BF28249C493EEFC971380A638684), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_log1_log_memsize_too_high.py b/tests/ported_static/stStaticCall/test_static_log1_log_memsize_too_high.py index dc0635f44af..50f52419d3f 100644 --- a/tests/ported_static/stStaticCall/test_static_log1_log_memsize_too_high.py +++ b/tests/ported_static/stStaticCall/test_static_log1_log_memsize_too_high.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,9 +33,7 @@ def test_static_log1_log_memsize_too_high( ) -> None: """Test_static_log1_log_memsize_too_high.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -47,6 +44,22 @@ def test_static_log1_log_memsize_too_high( gas_limit=1000000, ) + # Source: lll + # { (MSTORE 0 0xaabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd) (LOG1 1 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0) } # noqa: E501 + addr = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE( + offset=0x0, + value=0xAABBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCDD, # noqa: E501 + ) + + Op.LOG1( + offset=0x1, + size=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, # noqa: E501 + topic_1=0x0, + ) + + Op.STOP, + balance=0xDE0B6B3A7640000, + nonce=0, + ) # Source: lll # { [[ 0 ]] (STATICCALL 1000 0 0 0 0) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -54,7 +67,7 @@ def test_static_log1_log_memsize_too_high( key=0x0, value=Op.STATICCALL( gas=0x3E8, - address=0x232172C10FC2B2CB5CCBC4349B5D177EB640EDC0, + address=addr, args_offset=0x0, args_size=0x0, ret_offset=0x0, @@ -64,26 +77,7 @@ def test_static_log1_log_memsize_too_high( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xE230B8D7763E30CA988447DAA182146B0BEA3764), # noqa: E501 - ) - # Source: lll - # { (MSTORE 0 0xaabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd) (LOG1 1 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 0) } # noqa: E501 - addr = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE( - offset=0x0, - value=0xAABBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCDD, # noqa: E501 - ) - + Op.LOG1( - offset=0x1, - size=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, # noqa: E501 - topic_1=0x0, - ) - + Op.STOP, - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0x232172C10FC2B2CB5CCBC4349B5D177EB640EDC0), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_log1_log_memsize_zero.py b/tests/ported_static/stStaticCall/test_static_log1_log_memsize_zero.py index 1703fb2387e..cfefd6fb414 100644 --- a/tests/ported_static/stStaticCall/test_static_log1_log_memsize_zero.py +++ b/tests/ported_static/stStaticCall/test_static_log1_log_memsize_zero.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,9 +33,7 @@ def test_static_log1_log_memsize_zero( ) -> None: """Test_static_log1_log_memsize_zero.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -47,6 +44,18 @@ def test_static_log1_log_memsize_zero( gas_limit=1000000, ) + # Source: lll + # { (MSTORE 0 0xaabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd) (LOG1 1 0 0) } # noqa: E501 + addr = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE( + offset=0x0, + value=0xAABBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCDD, # noqa: E501 + ) + + Op.LOG1(offset=0x1, size=0x0, topic_1=0x0) + + Op.STOP, + balance=0xDE0B6B3A7640000, + nonce=0, + ) # Source: lll # { [[ 0 ]] (STATICCALL 1000 0 0 0 0) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -54,7 +63,7 @@ def test_static_log1_log_memsize_zero( key=0x0, value=Op.STATICCALL( gas=0x3E8, - address=0xC1F290174E61D4F7F40C5E11677591C31E0F63C7, + address=addr, args_offset=0x0, args_size=0x0, ret_offset=0x0, @@ -64,22 +73,7 @@ def test_static_log1_log_memsize_zero( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xE230B8D7763E30CA988447DAA182146B0BEA3764), # noqa: E501 - ) - # Source: lll - # { (MSTORE 0 0xaabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd) (LOG1 1 0 0) } # noqa: E501 - addr = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE( - offset=0x0, - value=0xAABBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCDD, # noqa: E501 - ) - + Op.LOG1(offset=0x1, size=0x0, topic_1=0x0) - + Op.STOP, - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0xC1F290174E61D4F7F40C5E11677591C31E0F63C7), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_log1_max_topic.py b/tests/ported_static/stStaticCall/test_static_log1_max_topic.py index f60ed2ff85a..0185bb60bc8 100644 --- a/tests/ported_static/stStaticCall/test_static_log1_max_topic.py +++ b/tests/ported_static/stStaticCall/test_static_log1_max_topic.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,9 +33,7 @@ def test_static_log1_max_topic( ) -> None: """Test_static_log1_max_topic.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -47,6 +44,22 @@ def test_static_log1_max_topic( gas_limit=1000000, ) + # Source: lll + # { (MSTORE 0 0xaabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd) (LOG1 0 32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) } # noqa: E501 + addr = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE( + offset=0x0, + value=0xAABBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCDD, # noqa: E501 + ) + + Op.LOG1( + offset=0x0, + size=0x20, + topic_1=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, # noqa: E501 + ) + + Op.STOP, + balance=0xDE0B6B3A7640000, + nonce=0, + ) # Source: lll # { [[ 0 ]] (STATICCALL 1000 0 0 0 0) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -54,7 +67,7 @@ def test_static_log1_max_topic( key=0x0, value=Op.STATICCALL( gas=0x3E8, - address=0xFAA3ACCE157A3DEDD9D750DD925F6067D252752E, + address=addr, args_offset=0x0, args_size=0x0, ret_offset=0x0, @@ -64,26 +77,7 @@ def test_static_log1_max_topic( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xE230B8D7763E30CA988447DAA182146B0BEA3764), # noqa: E501 - ) - # Source: lll - # { (MSTORE 0 0xaabbffffffffffffffffffffffffffffffffffffffffffffffffffffffffccdd) (LOG1 0 32 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) } # noqa: E501 - addr = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE( - offset=0x0, - value=0xAABBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCDD, # noqa: E501 - ) - + Op.LOG1( - offset=0x0, - size=0x20, - topic_1=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF, # noqa: E501 - ) - + Op.STOP, - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0xFAA3ACCE157A3DEDD9D750DD925F6067D252752E), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_log_caller.py b/tests/ported_static/stStaticCall/test_static_log_caller.py index 8d84e90ff2a..067833c80d1 100644 --- a/tests/ported_static/stStaticCall/test_static_log_caller.py +++ b/tests/ported_static/stStaticCall/test_static_log_caller.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -74,9 +73,7 @@ def test_static_log_caller( ) -> None: """Test_static_log_caller.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -165,7 +162,6 @@ def test_static_log_caller( nonce=0, address=Address(0x586CFAA42DB8B743452A87549943AC07A09DE5CC), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx_data = [ Hash(addr, left_padding=True), diff --git a/tests/ported_static/stStaticCall/test_static_loop_calls_depth_then_revert.py b/tests/ported_static/stStaticCall/test_static_loop_calls_depth_then_revert.py index 17867abafa8..85426836d66 100644 --- a/tests/ported_static/stStaticCall/test_static_loop_calls_depth_then_revert.py +++ b/tests/ported_static/stStaticCall/test_static_loop_calls_depth_then_revert.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,9 +33,7 @@ def test_static_loop_calls_depth_then_revert( ) -> None: """Test_static_loop_calls_depth_then_revert.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x4F31B3206FBF0E0E598B9B1A7D8AC86302A0FF1D8930738F1BEBAE9B67173E52 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -47,7 +44,6 @@ def test_static_loop_calls_depth_then_revert( gas_limit=100000000, ) - pre[sender] = Account(balance=0xE8D4A51000) # Source: lll # { [[ 0 ]] (CALL ( - (GAS) 100000) 0 0 0 0 0) [[ 1 ]] 1 } # noqa: E501 target = pre.deploy_contract( # noqa: F841 diff --git a/tests/ported_static/stStaticCall/test_static_loop_calls_depth_then_revert2.py b/tests/ported_static/stStaticCall/test_static_loop_calls_depth_then_revert2.py index 16397887970..56b5378b9e9 100644 --- a/tests/ported_static/stStaticCall/test_static_loop_calls_depth_then_revert2.py +++ b/tests/ported_static/stStaticCall/test_static_loop_calls_depth_then_revert2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -37,9 +36,7 @@ def test_static_loop_calls_depth_then_revert2( """Test_static_loop_calls_depth_then_revert2.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) contract_0 = Address(0xA000000000000000000000000000000000000000) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0x13426172C74D822B878FE800000000) env = Environment( fee_recipient=coinbase, @@ -50,7 +47,6 @@ def test_static_loop_calls_depth_then_revert2( gas_limit=9223372036854775807, ) - pre[sender] = Account(balance=0x13426172C74D822B878FE800000000) # Source: raw # 0x6103ff60003514603d57600160003501600052600060006020600073a0000000000000000000000000000000000000005afa5061041a600051106051575b66600060006002f0600052600760196003f0505b # noqa: E501 contract_0 = pre.deploy_contract( # noqa: F841 diff --git a/tests/ported_static/stStaticCall/test_static_loop_calls_depth_then_revert3.py b/tests/ported_static/stStaticCall/test_static_loop_calls_depth_then_revert3.py index af2df18a0ef..8efe302527e 100644 --- a/tests/ported_static/stStaticCall/test_static_loop_calls_depth_then_revert3.py +++ b/tests/ported_static/stStaticCall/test_static_loop_calls_depth_then_revert3.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -37,9 +36,7 @@ def test_static_loop_calls_depth_then_revert3( """Test_static_loop_calls_depth_then_revert3.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) contract_0 = Address(0xA000000000000000000000000000000000000000) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0x13426172C74D822B878FE800000000) env = Environment( fee_recipient=coinbase, @@ -50,7 +47,6 @@ def test_static_loop_calls_depth_then_revert3( gas_limit=9223372036854775807, ) - pre[sender] = Account(balance=0x13426172C74D822B878FE800000000) # Source: raw # 0x6103fe60003514603d57600160003501600052600060006020600073a0000000000000000000000000000000000000005afa5061041a600035106051575b66600060006002f0600052600760196003f0505b # noqa: E501 contract_0 = pre.deploy_contract( # noqa: F841 @@ -91,8 +87,9 @@ def test_static_loop_calls_depth_then_revert3( compute_create_address( address=contract_0, nonce=0 ): Account.NONEXISTENT, - Address( - 0xCD6807039CAFFDDBD1C28A749EC91BEF15F448E5 + compute_create_address( + address=compute_create_address(address=contract_0, nonce=0), + nonce=1, ): Account.NONEXISTENT, } diff --git a/tests/ported_static/stStaticCall/test_static_loop_calls_then_revert.py b/tests/ported_static/stStaticCall/test_static_loop_calls_then_revert.py index 8451d21166b..32fdd9495db 100644 --- a/tests/ported_static/stStaticCall/test_static_loop_calls_then_revert.py +++ b/tests/ported_static/stStaticCall/test_static_loop_calls_then_revert.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -59,9 +58,7 @@ def test_static_loop_calls_then_revert( ) -> None: """Requires a separate pre-alloc group due to time required to fill...""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x4F31B3206FBF0E0E598B9B1A7D8AC86302A0FF1D8930738F1BEBAE9B67173E52 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -72,27 +69,12 @@ def test_static_loop_calls_then_revert( gas_limit=100000000, ) - pre[sender] = Account(balance=0xE8D4A51000) # Source: lll - # { (MSTORE 0 850) [[ 0 ]] (CALL (- (GAS) 10000) 0 0 32 0 0) [[ 1 ]] 1 } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x0, value=0x352) - + Op.SSTORE( - key=0x0, - value=Op.CALL( - gas=Op.SUB(Op.GAS, 0x2710), - address=0x7A2AF5CC0310371CCE006E472ED3B5D68E62F839, - value=0x0, - args_offset=0x0, - args_size=0x20, - ret_offset=0x0, - ret_size=0x0, - ), - ) - + Op.SSTORE(key=0x1, value=0x1) + # { (MSTORE 0 (ADD 1 (MLOAD 0))) } + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x0, value=Op.ADD(0x1, Op.MLOAD(offset=0x0))) + Op.STOP, nonce=0, - address=Address(0xD64495CBBA16D27A88B96F2A72417B957ED4CAE6), # noqa: E501 ) # Source: raw # 0x5b60016000350360005260006000600060007361c350fa50600051600057 # noqa: E501 @@ -102,7 +84,7 @@ def test_static_loop_calls_then_revert( + Op.POP( Op.STATICCALL( gas=0xC350, - address=0x59C89B27361FD637262B13489F28923C835E17B2, + address=addr_2, args_offset=0x0, args_size=0x0, ret_offset=0x0, @@ -112,15 +94,26 @@ def test_static_loop_calls_then_revert( + Op.JUMPI(pc=0x0, condition=Op.MLOAD(offset=0x0)), storage={0: 850}, nonce=0, - address=Address(0x7A2AF5CC0310371CCE006E472ED3B5D68E62F839), # noqa: E501 ) # Source: lll - # { (MSTORE 0 (ADD 1 (MLOAD 0))) } - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x0, value=Op.ADD(0x1, Op.MLOAD(offset=0x0))) + # { (MSTORE 0 850) [[ 0 ]] (CALL (- (GAS) 10000) 0 0 32 0 0) [[ 1 ]] 1 } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x0, value=0x352) + + Op.SSTORE( + key=0x0, + value=Op.CALL( + gas=Op.SUB(Op.GAS, 0x2710), + address=addr, + value=0x0, + args_offset=0x0, + args_size=0x20, + ret_offset=0x0, + ret_size=0x0, + ), + ) + + Op.SSTORE(key=0x1, value=0x1) + Op.STOP, nonce=0, - address=Address(0x59C89B27361FD637262B13489F28923C835E17B2), # noqa: E501 ) expect_entries_: list[dict] = [ diff --git a/tests/ported_static/stStaticCall/test_static_make_money.py b/tests/ported_static/stStaticCall/test_static_make_money.py index 6bf4b5dbb9f..add8a413112 100644 --- a/tests/ported_static/stStaticCall/test_static_make_money.py +++ b/tests/ported_static/stStaticCall/test_static_make_money.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,9 +33,7 @@ def test_static_make_money( ) -> None: """Test_static_make_money.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xA2333EEF5630066B928DEA5FD85A239F511B5B067D1441EE7AC290D0122B917B - ) + sender = pre.fund_eoa(amount=0x5F5E100) env = Environment( fee_recipient=coinbase, @@ -47,6 +44,14 @@ def test_static_make_money( gas_limit=1000000, ) + # Source: raw + # 0x600160015532600255 + addr = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x1, value=0x1) + + Op.SSTORE(key=0x2, value=Op.ORIGIN), + balance=0xDE0B6B3A7640000, + nonce=0, + ) # Source: lll # { (MSTORE 0 0x601080600c6000396000f20060003554156009570060203560003555) (STATICCALL 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec 0 0 0 0) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -56,7 +61,7 @@ def test_static_make_money( ) + Op.STATICCALL( gas=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC, # noqa: E501 - address=0x802EDCCF6CDE9162A05FD89CDFCD8DC4A230B978, + address=addr, args_offset=0x0, args_size=0x0, ret_offset=0x0, @@ -65,17 +70,6 @@ def test_static_make_money( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x52BA5AA5C6B8214DA66B53C9774F587F3EE4DBD0), # noqa: E501 - ) - pre[sender] = Account(balance=0x5F5E100) - # Source: raw - # 0x600160015532600255 - addr = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x1, value=0x1) - + Op.SSTORE(key=0x2, value=Op.ORIGIN), - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0x802EDCCF6CDE9162A05FD89CDFCD8DC4A230B978), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stStaticCall/test_static_post_to_return1.py b/tests/ported_static/stStaticCall/test_static_post_to_return1.py index 68a6eb9e94d..c17835dc32d 100644 --- a/tests/ported_static/stStaticCall/test_static_post_to_return1.py +++ b/tests/ported_static/stStaticCall/test_static_post_to_return1.py @@ -47,6 +47,16 @@ def test_static_post_to_return1( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: raw + # 0x603760005360026000f3 + addr = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE8(offset=0x0, value=0x37) + + Op.RETURN(offset=0x0, size=0x2), + balance=23, + nonce=0, + address=Address(0xD5D9E9E0158920B17B6DF82FAC474B3E2691EE99), # noqa: E501 + ) # Source: lll # { (MSTORE 0 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) (MSTORE 32 0xaaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa ) [[1]](STATICCALL 30000 0 64 0 0 ) [[2]] (MLOAD 0) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -62,7 +72,7 @@ def test_static_post_to_return1( key=0x1, value=Op.STATICCALL( gas=0x7530, - address=0xD5D9E9E0158920B17B6DF82FAC474B3E2691EE99, + address=addr, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -75,16 +85,6 @@ def test_static_post_to_return1( nonce=0, address=Address(0x89478090B7C5E4389217F9728EF82CC3535CC1DB), # noqa: E501 ) - # Source: raw - # 0x603760005360026000f3 - addr = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE8(offset=0x0, value=0x37) - + Op.RETURN(offset=0x0, size=0x2), - balance=23, - nonce=0, - address=Address(0xD5D9E9E0158920B17B6DF82FAC474B3E2691EE99), # noqa: E501 - ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stStaticCall/test_static_raw_call_gas_ask.py b/tests/ported_static/stStaticCall/test_static_raw_call_gas_ask.py index dd59c2108a1..0ea735ae867 100644 --- a/tests/ported_static/stStaticCall/test_static_raw_call_gas_ask.py +++ b/tests/ported_static/stStaticCall/test_static_raw_call_gas_ask.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -77,9 +76,7 @@ def test_static_raw_call_gas_ask( contract_3 = Address(0x2000000000000000000000000000000000000001) contract_4 = Address(0x3000000000000000000000000000000000000001) contract_5 = Address(0x4000000000000000000000000000000000000001) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -97,7 +94,6 @@ def test_static_raw_call_gas_ask( nonce=0, address=Address(0x094F5374FCE5EDBC8E2A8697C15331677E6EBF0B), # noqa: E501 ) - pre[sender] = Account(balance=0xE8D4A51000) # Source: lll # { (CALL (GAS) (CALLDATALOAD 0) 0 0 0 0 0) } contract_1 = pre.deploy_contract( # noqa: F841 @@ -116,11 +112,11 @@ def test_static_raw_call_gas_ask( address=Address(0x1000000000000000000000000000000000000000), # noqa: E501 ) # Source: lll - # { (STATICCALL 3000000 0x094f5374fce5edbc8e2a8697c15331677e6ebf0b 0 0 0 0) [[1]] (GAS) } # noqa: E501 - contract_2 = pre.deploy_contract( # noqa: F841 + # { (STATICCALL 130000 0x094f5374fce5edbc8e2a8697c15331677e6ebf0b 0 0 0 0) [[1]] (GAS) } # noqa: E501 + contract_3 = pre.deploy_contract( # noqa: F841 code=Op.POP( Op.STATICCALL( - gas=0x2DC6C0, + gas=0x1FBD0, address=0x94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, args_offset=0x0, args_size=0x0, @@ -131,25 +127,25 @@ def test_static_raw_call_gas_ask( + Op.SSTORE(key=0x1, value=Op.GAS) + Op.STOP, nonce=0, - address=Address(0x1000000000000000000000000000000000000001), # noqa: E501 + address=Address(0x2000000000000000000000000000000000000001), # noqa: E501 ) # Source: lll - # { (STATICCALL 130000 0x094f5374fce5edbc8e2a8697c15331677e6ebf0b 0 0 0 0) [[1]] (GAS) } # noqa: E501 - contract_3 = pre.deploy_contract( # noqa: F841 + # { (STATICCALL 130000 0x094f5374fce5edbc8e2a8697c15331677e6ebf0b 0 8000 0 8000) [[1]] (GAS) } # noqa: E501 + contract_5 = pre.deploy_contract( # noqa: F841 code=Op.POP( Op.STATICCALL( gas=0x1FBD0, address=0x94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, args_offset=0x0, - args_size=0x0, + args_size=0x1F40, ret_offset=0x0, - ret_size=0x0, + ret_size=0x1F40, ) ) + Op.SSTORE(key=0x1, value=Op.GAS) + Op.STOP, nonce=0, - address=Address(0x2000000000000000000000000000000000000001), # noqa: E501 + address=Address(0x4000000000000000000000000000000000000001), # noqa: E501 ) # Source: lll # { (STATICCALL 3000000 0x094f5374fce5edbc8e2a8697c15331677e6ebf0b 0 8000 0 8000) [[1]] (GAS) } # noqa: E501 @@ -170,22 +166,22 @@ def test_static_raw_call_gas_ask( address=Address(0x3000000000000000000000000000000000000001), # noqa: E501 ) # Source: lll - # { (STATICCALL 130000 0x094f5374fce5edbc8e2a8697c15331677e6ebf0b 0 8000 0 8000) [[1]] (GAS) } # noqa: E501 - contract_5 = pre.deploy_contract( # noqa: F841 + # { (STATICCALL 3000000 0x094f5374fce5edbc8e2a8697c15331677e6ebf0b 0 0 0 0) [[1]] (GAS) } # noqa: E501 + contract_2 = pre.deploy_contract( # noqa: F841 code=Op.POP( Op.STATICCALL( - gas=0x1FBD0, + gas=0x2DC6C0, address=0x94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, args_offset=0x0, - args_size=0x1F40, + args_size=0x0, ret_offset=0x0, - ret_size=0x1F40, + ret_size=0x0, ) ) + Op.SSTORE(key=0x1, value=Op.GAS) + Op.STOP, nonce=0, - address=Address(0x4000000000000000000000000000000000000001), # noqa: E501 + address=Address(0x1000000000000000000000000000000000000001), # noqa: E501 ) expect_entries_: list[dict] = [ diff --git a/tests/ported_static/stStaticCall/test_static_refund_call_a.py b/tests/ported_static/stStaticCall/test_static_refund_call_a.py index 46133e6d70a..7b9e3701b24 100644 --- a/tests/ported_static/stStaticCall/test_static_refund_call_a.py +++ b/tests/ported_static/stStaticCall/test_static_refund_call_a.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,9 +33,7 @@ def test_static_refund_call_a( ) -> None: """Test_static_refund_call_a.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xD28CE7E8C6CA72F9B2DD5AA5C41F48198119E86E443C50DE70F3FBA602247FE8 - ) + sender = pre.fund_eoa(amount=0xBEBC200) env = Environment( fee_recipient=coinbase, @@ -47,6 +44,14 @@ def test_static_refund_call_a( gas_limit=1000000, ) + # Source: lll + # { [[ 1 ]] 0 } + addr = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x1, value=0x0) + Op.STOP, + storage={1: 1}, + balance=0xDE0B6B3A7640000, + nonce=0, + ) # Source: lll # { [[ 0 ]] (STATICCALL 5500 0 0 0 0 ) [[ 1 ]] 1} # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -54,7 +59,7 @@ def test_static_refund_call_a( key=0x0, value=Op.STATICCALL( gas=0x157C, - address=0xF4C9FC42FAEDA49049E3B8E2B97A17CC2FE95718, + address=addr, args_offset=0x0, args_size=0x0, ret_offset=0x0, @@ -66,17 +71,6 @@ def test_static_refund_call_a( storage={1: 1}, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xD15BDAF597BADAA25173C995D18F65D1B514A062), # noqa: E501 - ) - pre[sender] = Account(balance=0xBEBC200) - # Source: lll - # { [[ 1 ]] 0 } - addr = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x1, value=0x0) + Op.STOP, - storage={1: 1}, - balance=0xDE0B6B3A7640000, - nonce=0, - address=Address(0xF4C9FC42FAEDA49049E3B8E2B97A17CC2FE95718), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stStaticCall/test_static_refund_call_to_suicide_no_storage.py b/tests/ported_static/stStaticCall/test_static_refund_call_to_suicide_no_storage.py index 83c20607be4..80a792c152b 100644 --- a/tests/ported_static/stStaticCall/test_static_refund_call_to_suicide_no_storage.py +++ b/tests/ported_static/stStaticCall/test_static_refund_call_to_suicide_no_storage.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -58,9 +57,7 @@ def test_static_refund_call_to_suicide_no_storage( ) -> None: """Test_static_refund_call_to_suicide_no_storage.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x6F0117D3E9C684C7D6E1E6B79DC3880DA2BEBE77C765B171C062FDFFD38A673F - ) + sender = pre.fund_eoa(amount=0x2540BE400) env = Environment( fee_recipient=coinbase, @@ -92,7 +89,6 @@ def test_static_refund_call_to_suicide_no_storage( nonce=0, address=Address(0xA2A10D67C0F0864B703D90D9C36296AD8A547AE6), # noqa: E501 ) - pre[sender] = Account(balance=0x2540BE400) # Source: lll # { (SELFDESTRUCT ) } # noqa: E501 addr = pre.deploy_contract( # noqa: F841 diff --git a/tests/ported_static/stStaticCall/test_static_refund_call_to_suicide_twice.py b/tests/ported_static/stStaticCall/test_static_refund_call_to_suicide_twice.py index f717ba102e7..6860878412f 100644 --- a/tests/ported_static/stStaticCall/test_static_refund_call_to_suicide_twice.py +++ b/tests/ported_static/stStaticCall/test_static_refund_call_to_suicide_twice.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -59,9 +58,7 @@ def test_static_refund_call_to_suicide_twice( ) -> None: """Test_static_refund_call_to_suicide_twice.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x5B7B8EFB6D003CD481E408D8759A25ADC79955092F1A380D8F8B57346C1D1342 - ) + sender = pre.fund_eoa(amount=0x174876E800) env = Environment( fee_recipient=coinbase, @@ -101,7 +98,6 @@ def test_static_refund_call_to_suicide_twice( nonce=0, address=Address(0x75DB2708826B7D5E8CD45002F9AE23C830C31EFD), # noqa: E501 ) - pre[sender] = Account(balance=0x174876E800) # Source: lll # { (SELFDESTRUCT ) } # noqa: E501 addr = pre.deploy_contract( # noqa: F841 diff --git a/tests/ported_static/stStaticCall/test_static_return50000_2.py b/tests/ported_static/stStaticCall/test_static_return50000_2.py index f3667ea4cee..fbcec0e7291 100644 --- a/tests/ported_static/stStaticCall/test_static_return50000_2.py +++ b/tests/ported_static/stStaticCall/test_static_return50000_2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,9 +33,7 @@ def test_static_return50000_2( ) -> None: """Test_static_return50000_2.""" coinbase = Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) - sender = EOA( - key=0xE7C72B378297589ACEE4E0BA3272841BCFC5E220F86DE253F890274CFEE9E474 - ) + sender = pre.fund_eoa(amount=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) env = Environment( fee_recipient=coinbase, @@ -47,7 +44,6 @@ def test_static_return50000_2( gas_limit=89250000, ) - pre[sender] = Account(balance=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) # Source: lll # { (MSTORE 0 (CALLDATALOAD 49999)) (RETURN (MLOAD 0) 1) } addr = pre.deploy_contract( # noqa: F841 @@ -56,28 +52,6 @@ def test_static_return50000_2( + Op.STOP, balance=0xFFFFFFFFFFFFF, nonce=0, - address=Address(0x0D08FB89197BD8F97C770ED75E28ED610A3016E9), # noqa: E501 - ) - # Source: lll - # { [[ 0 ]] (CALL (GAS) 0 0 0 0 0) [[ 1 ]] 1 } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.CALL( - gas=Op.GAS, - address=0xDF43BBA207127B641624B20497FA07055F4A3939, - value=0x0, - args_offset=0x0, - args_size=0x0, - ret_offset=0x0, - ret_size=0x0, - ), - ) - + Op.SSTORE(key=0x1, value=0x1) - + Op.STOP, - balance=0xFFFFFFFFFFFFF, - nonce=0, - address=Address(0x9A8CA98B299A0220FAAD60948D01CE83CCC97831), # noqa: E501 ) # Source: lll # { (def 'i 0x80) (for {} (< @i 50000) [i](+ @i 1) [[ 0 ]] (STATICCALL 1564 0 50000 0 0) ) [[ 1 ]] @i } # noqa: E501 @@ -90,7 +64,7 @@ def test_static_return50000_2( key=0x0, value=Op.STATICCALL( gas=0x61C, - address=0xD08FB89197BD8F97C770ED75E28ED610A3016E9, + address=addr, args_offset=0x0, args_size=0xC350, ret_offset=0x0, @@ -104,7 +78,26 @@ def test_static_return50000_2( + Op.STOP, balance=0xFFFFFFFFFFFFF, nonce=0, - address=Address(0xDF43BBA207127B641624B20497FA07055F4A3939), # noqa: E501 + ) + # Source: lll + # { [[ 0 ]] (CALL (GAS) 0 0 0 0 0) [[ 1 ]] 1 } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.CALL( + gas=Op.GAS, + address=addr_2, + value=0x0, + args_offset=0x0, + args_size=0x0, + ret_offset=0x0, + ret_size=0x0, + ), + ) + + Op.SSTORE(key=0x1, value=0x1) + + Op.STOP, + balance=0xFFFFFFFFFFFFF, + nonce=0, ) tx = Transaction( diff --git a/tests/ported_static/stStaticCall/test_static_return_test.py b/tests/ported_static/stStaticCall/test_static_return_test.py index ba221d701f9..5f434c1bdc0 100644 --- a/tests/ported_static/stStaticCall/test_static_return_test.py +++ b/tests/ported_static/stStaticCall/test_static_return_test.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -36,9 +35,7 @@ def test_static_return_test( coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) contract_0 = Address(0x194F5374FCE5EDBC8E2A8697C15331677E6EBF0B) contract_1 = Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0x5F5E100) env = Environment( fee_recipient=coinbase, @@ -49,13 +46,22 @@ def test_static_return_test( gas_limit=10000000, ) + # Source: lll + # {(MSTORE 0 0x15) (RETURN 31 1)} + contract_1 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x0, value=0x15) + + Op.RETURN(offset=0x1F, size=0x1) + + Op.STOP, + balance=0x186A0, + nonce=0, + ) # Source: lll # {(STATICCALL 2000 0xb94f5374fce5edbc8e2a8697c15331677e6ebf0b 30 1 31 1) [[0]](MLOAD 0) (RETURN 30 2)} # noqa: E501 contract_0 = pre.deploy_contract( # noqa: F841 code=Op.POP( Op.STATICCALL( gas=0x7D0, - address=0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, + address=contract_1, args_offset=0x1E, args_size=0x1, ret_offset=0x1F, @@ -66,18 +72,6 @@ def test_static_return_test( + Op.RETURN(offset=0x1E, size=0x2) + Op.STOP, nonce=0, - address=Address(0x194F5374FCE5EDBC8E2A8697C15331677E6EBF0B), # noqa: E501 - ) - pre[sender] = Account(balance=0x5F5E100) - # Source: lll - # {(MSTORE 0 0x15) (RETURN 31 1)} - contract_1 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x0, value=0x15) - + Op.RETURN(offset=0x1F, size=0x1) - + Op.STOP, - balance=0x186A0, - nonce=0, - address=Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stStaticCall/test_static_revert_depth2.py b/tests/ported_static/stStaticCall/test_static_revert_depth2.py index 5bc03306a66..b37e0bb7174 100644 --- a/tests/ported_static/stStaticCall/test_static_revert_depth2.py +++ b/tests/ported_static/stStaticCall/test_static_revert_depth2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,9 +33,7 @@ def test_static_revert_depth2( ) -> None: """Test_static_revert_depth2.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x4F31B3206FBF0E0E598B9B1A7D8AC86302A0FF1D8930738F1BEBAE9B67173E52 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -47,36 +44,28 @@ def test_static_revert_depth2( gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) # Source: lll - # { [[0]] (ADD 1 (SLOAD 0)) [[1]] (STATICCALL 150000 0 0 0 0) [[2]] (STATICCALL 150000 0 0 0 0)} # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x0, value=Op.ADD(0x1, Op.SLOAD(key=0x0))) - + Op.SSTORE( - key=0x1, - value=Op.STATICCALL( - gas=0x249F0, - address=0x5DD18F4768E54DE1443F70EC11AD95D5DB424293, - args_offset=0x0, - args_size=0x0, - ret_offset=0x0, - ret_size=0x0, - ), - ) - + Op.SSTORE( - key=0x2, - value=Op.STATICCALL( - gas=0x249F0, - address=0xA61140A1C2699A13C619940208A513D42F654E98, + # { (MSTORE 1 1) } + addr_2 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE(offset=0x1, value=0x1) + Op.STOP, + nonce=0, + ) + # Source: lll + # { (STATICCALL 50000 0 0 0 0) (KECCAK256 0x00 0x2fffff) } # noqa: E501 + addr_3 = pre.deploy_contract( # noqa: F841 + code=Op.POP( + Op.STATICCALL( + gas=0xC350, + address=addr_2, args_offset=0x0, args_size=0x0, ret_offset=0x0, ret_size=0x0, - ), + ) ) + + Op.SHA3(offset=0x0, size=0x2FFFFF) + Op.STOP, nonce=0, - address=Address(0x57C111943C5E6F1817EE85FD1212409B7D1F7F26), # noqa: E501 ) # Source: lll # { (STATICCALL 50000 0 0 0 0) (MSTORE 1 1) } # noqa: E501 @@ -84,7 +73,7 @@ def test_static_revert_depth2( code=Op.POP( Op.STATICCALL( gas=0xC350, - address=0x15B1327FE926A2172ADFD10EFDEF1505C8E15461, + address=addr_2, args_offset=0x0, args_size=0x0, ret_offset=0x0, @@ -94,32 +83,35 @@ def test_static_revert_depth2( + Op.MSTORE(offset=0x1, value=0x1) + Op.STOP, nonce=0, - address=Address(0x5DD18F4768E54DE1443F70EC11AD95D5DB424293), # noqa: E501 ) # Source: lll - # { (MSTORE 1 1) } - addr_2 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE(offset=0x1, value=0x1) + Op.STOP, - nonce=0, - address=Address(0x15B1327FE926A2172ADFD10EFDEF1505C8E15461), # noqa: E501 - ) - # Source: lll - # { (STATICCALL 50000 0 0 0 0) (KECCAK256 0x00 0x2fffff) } # noqa: E501 - addr_3 = pre.deploy_contract( # noqa: F841 - code=Op.POP( - Op.STATICCALL( - gas=0xC350, - address=0x15B1327FE926A2172ADFD10EFDEF1505C8E15461, + # { [[0]] (ADD 1 (SLOAD 0)) [[1]] (STATICCALL 150000 0 0 0 0) [[2]] (STATICCALL 150000 0 0 0 0)} # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x0, value=Op.ADD(0x1, Op.SLOAD(key=0x0))) + + Op.SSTORE( + key=0x1, + value=Op.STATICCALL( + gas=0x249F0, + address=addr, args_offset=0x0, args_size=0x0, ret_offset=0x0, ret_size=0x0, - ) + ), + ) + + Op.SSTORE( + key=0x2, + value=Op.STATICCALL( + gas=0x249F0, + address=addr_3, + args_offset=0x0, + args_size=0x0, + ret_offset=0x0, + ret_size=0x0, + ), ) - + Op.SHA3(offset=0x0, size=0x2FFFFF) + Op.STOP, nonce=0, - address=Address(0xA61140A1C2699A13C619940208A513D42F654E98), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stStaticCall/test_static_revert_opcode_calls.py b/tests/ported_static/stStaticCall/test_static_revert_opcode_calls.py index e0e0d3eec06..80b13c69048 100644 --- a/tests/ported_static/stStaticCall/test_static_revert_opcode_calls.py +++ b/tests/ported_static/stStaticCall/test_static_revert_opcode_calls.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -56,9 +55,7 @@ def test_static_revert_opcode_calls( ) -> None: """Test_static_revert_opcode_calls.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x4F31B3206FBF0E0E598B9B1A7D8AC86302A0FF1D8930738F1BEBAE9B67173E52 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -69,7 +66,13 @@ def test_static_revert_opcode_calls( gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) + # Source: lll + # { (REVERT 0 1) } + addr = pre.deploy_contract( # noqa: F841 + code=Op.REVERT(offset=0x0, size=0x1) + Op.STOP, + balance=1, + nonce=0, + ) # Source: lll # { [[0]] (STATICCALL 50000 0 0 0 0) [[1]] (RETURNDATASIZE)} # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -77,7 +80,7 @@ def test_static_revert_opcode_calls( key=0x0, value=Op.STATICCALL( gas=0xC350, - address=0xBE254B4ACEB5B7495F1A5646BE06FE5A158581EC, + address=addr, args_offset=0x0, args_size=0x0, ret_offset=0x0, @@ -88,15 +91,6 @@ def test_static_revert_opcode_calls( + Op.STOP, balance=1, nonce=0, - address=Address(0x187C91277DEEEDF062A07B44DE3C96C6E7CBC7BB), # noqa: E501 - ) - # Source: lll - # { (REVERT 0 1) } - addr = pre.deploy_contract( # noqa: F841 - code=Op.REVERT(offset=0x0, size=0x1) + Op.STOP, - balance=1, - nonce=0, - address=Address(0xBE254B4ACEB5B7495F1A5646BE06FE5A158581EC), # noqa: E501 ) tx_data = [ diff --git a/tests/ported_static/stStaticCall/test_static_zero_value_suicide_oog_revert.py b/tests/ported_static/stStaticCall/test_static_zero_value_suicide_oog_revert.py index 5c045440fa5..abee402ac2b 100644 --- a/tests/ported_static/stStaticCall/test_static_zero_value_suicide_oog_revert.py +++ b/tests/ported_static/stStaticCall/test_static_zero_value_suicide_oog_revert.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,9 +33,7 @@ def test_static_zero_value_suicide_oog_revert( ) -> None: """Test_static_zero_value_suicide_oog_revert.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x4F31B3206FBF0E0E598B9B1A7D8AC86302A0FF1D8930738F1BEBAE9B67173E52 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -47,7 +44,6 @@ def test_static_zero_value_suicide_oog_revert( gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) # Source: lll # { (STATICCALL 100000 0 0 0 0) (KECCAK256 0x00 0x2fffff) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 diff --git a/tests/ported_static/stStaticCall/test_staticcall_to_precompile_from_called_contract.py b/tests/ported_static/stStaticCall/test_staticcall_to_precompile_from_called_contract.py index 36d88acb23a..4331223b362 100644 --- a/tests/ported_static/stStaticCall/test_staticcall_to_precompile_from_called_contract.py +++ b/tests/ported_static/stStaticCall/test_staticcall_to_precompile_from_called_contract.py @@ -54,27 +54,7 @@ def test_staticcall_to_precompile_from_called_contract( gas_limit=10000000, ) - # Source: lll - # { - # [[ 0 ]] (CALL (GAS) 0xa000000000000000000000000000000000000000 0 0 0 0 0 ) # noqa: E501 - # } - contract_0 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=Op.CALL( - gas=Op.GAS, - address=0xA000000000000000000000000000000000000000, - value=0x0, - args_offset=0x0, - args_size=0x0, - ret_offset=0x0, - ret_size=0x0, - ), - ) - + Op.STOP, - nonce=0, - address=Address(0xB000000000000000000000000000000000000000), # noqa: E501 - ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { # ;; Recovery of ECDSA signature @@ -357,7 +337,27 @@ def test_staticcall_to_precompile_from_called_contract( nonce=0, address=Address(0xA000000000000000000000000000000000000000), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: lll + # { + # [[ 0 ]] (CALL (GAS) 0xa000000000000000000000000000000000000000 0 0 0 0 0 ) # noqa: E501 + # } + contract_0 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=Op.CALL( + gas=Op.GAS, + address=contract_1, + value=0x0, + args_offset=0x0, + args_size=0x0, + ret_offset=0x0, + ret_size=0x0, + ), + ) + + Op.STOP, + nonce=0, + address=Address(0xB000000000000000000000000000000000000000), # noqa: E501 + ) tx = Transaction( sender=sender, @@ -372,7 +372,7 @@ def test_staticcall_to_precompile_from_called_contract( contract_1: Account( storage={ 0: 1, - 1: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, + 1: sender, 2: 1, 3: 1, 4: 0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC000000, diff --git a/tests/ported_static/stStaticCall/test_staticcall_to_precompile_from_contract_initialization.py b/tests/ported_static/stStaticCall/test_staticcall_to_precompile_from_contract_initialization.py index aef233731d8..1357cf578a1 100644 --- a/tests/ported_static/stStaticCall/test_staticcall_to_precompile_from_contract_initialization.py +++ b/tests/ported_static/stStaticCall/test_staticcall_to_precompile_from_contract_initialization.py @@ -53,6 +53,7 @@ def test_staticcall_to_precompile_from_contract_initialization( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { # (CALLDATACOPY 0 0 (CALLDATASIZE)) @@ -73,7 +74,6 @@ def test_staticcall_to_precompile_from_contract_initialization( nonce=0, address=Address(0xA000000000000000000000000000000000000000), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, @@ -92,7 +92,7 @@ def test_staticcall_to_precompile_from_contract_initialization( Address(0xFAD204ED1275B429B66C9CE0614D62832D6B2580): Account( storage={ 0: 1, - 1: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, + 1: sender, 2: 1, 3: 1, 4: 0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC000000, diff --git a/tests/ported_static/stStaticCall/test_staticcall_to_precompile_from_transaction.py b/tests/ported_static/stStaticCall/test_staticcall_to_precompile_from_transaction.py index 5b4eaec91ea..dd0bad3437f 100644 --- a/tests/ported_static/stStaticCall/test_staticcall_to_precompile_from_transaction.py +++ b/tests/ported_static/stStaticCall/test_staticcall_to_precompile_from_transaction.py @@ -53,6 +53,7 @@ def test_staticcall_to_precompile_from_transaction( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { # ;; Recovery of ECDSA signature @@ -335,7 +336,6 @@ def test_staticcall_to_precompile_from_transaction( nonce=0, address=Address(0xA000000000000000000000000000000000000000), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, @@ -349,7 +349,7 @@ def test_staticcall_to_precompile_from_transaction( contract_0: Account( storage={ 0: 1, - 1: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, + 1: sender, 2: 1, 3: 1, 4: 0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC000000, diff --git a/tests/ported_static/stStaticFlagEnabled/test_delegatecall_to_precompile_from_called_contract.py b/tests/ported_static/stStaticFlagEnabled/test_delegatecall_to_precompile_from_called_contract.py index 369aff83331..8dcdce66aaf 100644 --- a/tests/ported_static/stStaticFlagEnabled/test_delegatecall_to_precompile_from_called_contract.py +++ b/tests/ported_static/stStaticFlagEnabled/test_delegatecall_to_precompile_from_called_contract.py @@ -56,108 +56,7 @@ def test_delegatecall_to_precompile_from_called_contract( gas_limit=10000000, ) - # Source: lll - # { - # [[ 0x00 ]] 0xfeedfeedfeedfeedfeedfeedfeedfeedfeedfeedfeedfeedfeedfeedfeedfeed # noqa: E501 - # (CALL (GAS) 0xb000000000000000000000000000000000000000 0 0 0 0 0) - # [[ 0x01 ]] 0xfeedfeedfeedfeedfeedfeedfeedfeedfeedfeedfeedfeedfeedfeedfeedfeed # noqa: E501 - # } - contract_0 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=0xFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEED, # noqa: E501 - ) - + Op.POP( - Op.CALL( - gas=Op.GAS, - address=0xB000000000000000000000000000000000000000, - value=0x0, - args_offset=0x0, - args_size=0x0, - ret_offset=0x0, - ret_size=0x0, - ) - ) - + Op.SSTORE( - key=0x1, - value=0xFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEED, # noqa: E501 - ) - + Op.STOP, - storage={ - 0: 0xDEADBEAFDEADBEAFDEADBEAFDEADBEAFDEADBEAFDEADBEAFDEADBEAFDEADBEAF, # noqa: E501 - 1: 0xDEADBEAFDEADBEAFDEADBEAFDEADBEAFDEADBEAFDEADBEAFDEADBEAFDEADBEAF, # noqa: E501 - }, - balance=1000, - nonce=0, - address=Address(0xC000000000000000000000000000000000000000), # noqa: E501 - ) - # Source: lll - # { - # [[ 0x00 ]] 0xfeedfeedfeedfeedfeedfeedfeedfeedfeedfeedfeedfeedfeedfeedfeedfeed # noqa: E501 - # (STATICCALL (GAS) 0xa000000000000000000000000000000000000000 0 0 0x0a0000 0x012020) # noqa: E501 - # [[ 0x01 ]] 0xfeedfeedfeedfeedfeedfeedfeedfeedfeedfeedfeedfeedfeedfeedfeedfeed # noqa: E501 - # ;; save results to store - # [[ 0x0a00 ]] @0x0a0000 [[ 0x0a11 ]] @0x0a1100 - # [[ 0x0a01 ]] @0x0a0100 [[ 0x0a12 ]] @0x0a1200 - # [[ 0x0a02 ]] @0x0a0200 [[ 0x0a13 ]] @0x0a1300 - # [[ 0x0a03 ]] @0x0a0300 [[ 0x0a14 ]] @0x0a1400 - # [[ 0x0a04 ]] @0x0a0400 [[ 0x0a15 ]] @0x0a1500 - # [[ 0x0a05 ]] @0x0a0500 [[ 0x0a16 ]] @0x0a1600 - # [[ 0x0a06 ]] @0x0a0600 [[ 0x0a17 ]] @0x0a1700 - # [[ 0x0a07 ]] @0x0a0700 [[ 0x0a18 ]] @0x0a1800 - # [[ 0x0a08 ]] @0x0a0800 [[ 0x0a19 ]] @0x0a1900 - # [[ 0x0a09 ]] @0x0a0900 [[ 0x0a20 ]] @0x0a2000 - # [[ 0x0a10 ]] @0x0a1000 - # } - contract_1 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=0xFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEED, # noqa: E501 - ) - + Op.POP( - Op.STATICCALL( - gas=Op.GAS, - address=0xA000000000000000000000000000000000000000, - args_offset=0x0, - args_size=0x0, - ret_offset=0xA0000, - ret_size=0x12020, - ) - ) - + Op.SSTORE( - key=0x1, - value=0xFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEED, # noqa: E501 - ) - + Op.SSTORE(key=0xA00, value=Op.MLOAD(offset=0xA0000)) - + Op.SSTORE(key=0xA11, value=Op.MLOAD(offset=0xA1100)) - + Op.SSTORE(key=0xA01, value=Op.MLOAD(offset=0xA0100)) - + Op.SSTORE(key=0xA12, value=Op.MLOAD(offset=0xA1200)) - + Op.SSTORE(key=0xA02, value=Op.MLOAD(offset=0xA0200)) - + Op.SSTORE(key=0xA13, value=Op.MLOAD(offset=0xA1300)) - + Op.SSTORE(key=0xA03, value=Op.MLOAD(offset=0xA0300)) - + Op.SSTORE(key=0xA14, value=Op.MLOAD(offset=0xA1400)) - + Op.SSTORE(key=0xA04, value=Op.MLOAD(offset=0xA0400)) - + Op.SSTORE(key=0xA15, value=Op.MLOAD(offset=0xA1500)) - + Op.SSTORE(key=0xA05, value=Op.MLOAD(offset=0xA0500)) - + Op.SSTORE(key=0xA16, value=Op.MLOAD(offset=0xA1600)) - + Op.SSTORE(key=0xA06, value=Op.MLOAD(offset=0xA0600)) - + Op.SSTORE(key=0xA17, value=Op.MLOAD(offset=0xA1700)) - + Op.SSTORE(key=0xA07, value=Op.MLOAD(offset=0xA0700)) - + Op.SSTORE(key=0xA18, value=Op.MLOAD(offset=0xA1800)) - + Op.SSTORE(key=0xA08, value=Op.MLOAD(offset=0xA0800)) - + Op.SSTORE(key=0xA19, value=Op.MLOAD(offset=0xA1900)) - + Op.SSTORE(key=0xA09, value=Op.MLOAD(offset=0xA0900)) - + Op.SSTORE(key=0xA20, value=Op.MLOAD(offset=0xA2000)) - + Op.SSTORE(key=0xA10, value=Op.MLOAD(offset=0xA1000)) - + Op.STOP, - storage={ - 0: 0xDEADBEAFDEADBEAFDEADBEAFDEADBEAFDEADBEAFDEADBEAFDEADBEAFDEADBEAF, # noqa: E501 - 1: 0xDEADBEAFDEADBEAFDEADBEAFDEADBEAFDEADBEAFDEADBEAFDEADBEAFDEADBEAF, # noqa: E501 - }, - balance=1000, - nonce=0, - address=Address(0xB000000000000000000000000000000000000000), # noqa: E501 - ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { # ;; Recovery of ECDSA signature @@ -446,7 +345,108 @@ def test_delegatecall_to_precompile_from_called_contract( nonce=0, address=Address(0xA000000000000000000000000000000000000000), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: lll + # { + # [[ 0x00 ]] 0xfeedfeedfeedfeedfeedfeedfeedfeedfeedfeedfeedfeedfeedfeedfeedfeed # noqa: E501 + # (STATICCALL (GAS) 0xa000000000000000000000000000000000000000 0 0 0x0a0000 0x012020) # noqa: E501 + # [[ 0x01 ]] 0xfeedfeedfeedfeedfeedfeedfeedfeedfeedfeedfeedfeedfeedfeedfeedfeed # noqa: E501 + # ;; save results to store + # [[ 0x0a00 ]] @0x0a0000 [[ 0x0a11 ]] @0x0a1100 + # [[ 0x0a01 ]] @0x0a0100 [[ 0x0a12 ]] @0x0a1200 + # [[ 0x0a02 ]] @0x0a0200 [[ 0x0a13 ]] @0x0a1300 + # [[ 0x0a03 ]] @0x0a0300 [[ 0x0a14 ]] @0x0a1400 + # [[ 0x0a04 ]] @0x0a0400 [[ 0x0a15 ]] @0x0a1500 + # [[ 0x0a05 ]] @0x0a0500 [[ 0x0a16 ]] @0x0a1600 + # [[ 0x0a06 ]] @0x0a0600 [[ 0x0a17 ]] @0x0a1700 + # [[ 0x0a07 ]] @0x0a0700 [[ 0x0a18 ]] @0x0a1800 + # [[ 0x0a08 ]] @0x0a0800 [[ 0x0a19 ]] @0x0a1900 + # [[ 0x0a09 ]] @0x0a0900 [[ 0x0a20 ]] @0x0a2000 + # [[ 0x0a10 ]] @0x0a1000 + # } + contract_1 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=0xFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEED, # noqa: E501 + ) + + Op.POP( + Op.STATICCALL( + gas=Op.GAS, + address=contract_2, + args_offset=0x0, + args_size=0x0, + ret_offset=0xA0000, + ret_size=0x12020, + ) + ) + + Op.SSTORE( + key=0x1, + value=0xFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEED, # noqa: E501 + ) + + Op.SSTORE(key=0xA00, value=Op.MLOAD(offset=0xA0000)) + + Op.SSTORE(key=0xA11, value=Op.MLOAD(offset=0xA1100)) + + Op.SSTORE(key=0xA01, value=Op.MLOAD(offset=0xA0100)) + + Op.SSTORE(key=0xA12, value=Op.MLOAD(offset=0xA1200)) + + Op.SSTORE(key=0xA02, value=Op.MLOAD(offset=0xA0200)) + + Op.SSTORE(key=0xA13, value=Op.MLOAD(offset=0xA1300)) + + Op.SSTORE(key=0xA03, value=Op.MLOAD(offset=0xA0300)) + + Op.SSTORE(key=0xA14, value=Op.MLOAD(offset=0xA1400)) + + Op.SSTORE(key=0xA04, value=Op.MLOAD(offset=0xA0400)) + + Op.SSTORE(key=0xA15, value=Op.MLOAD(offset=0xA1500)) + + Op.SSTORE(key=0xA05, value=Op.MLOAD(offset=0xA0500)) + + Op.SSTORE(key=0xA16, value=Op.MLOAD(offset=0xA1600)) + + Op.SSTORE(key=0xA06, value=Op.MLOAD(offset=0xA0600)) + + Op.SSTORE(key=0xA17, value=Op.MLOAD(offset=0xA1700)) + + Op.SSTORE(key=0xA07, value=Op.MLOAD(offset=0xA0700)) + + Op.SSTORE(key=0xA18, value=Op.MLOAD(offset=0xA1800)) + + Op.SSTORE(key=0xA08, value=Op.MLOAD(offset=0xA0800)) + + Op.SSTORE(key=0xA19, value=Op.MLOAD(offset=0xA1900)) + + Op.SSTORE(key=0xA09, value=Op.MLOAD(offset=0xA0900)) + + Op.SSTORE(key=0xA20, value=Op.MLOAD(offset=0xA2000)) + + Op.SSTORE(key=0xA10, value=Op.MLOAD(offset=0xA1000)) + + Op.STOP, + storage={ + 0: 0xDEADBEAFDEADBEAFDEADBEAFDEADBEAFDEADBEAFDEADBEAFDEADBEAFDEADBEAF, # noqa: E501 + 1: 0xDEADBEAFDEADBEAFDEADBEAFDEADBEAFDEADBEAFDEADBEAFDEADBEAFDEADBEAF, # noqa: E501 + }, + balance=1000, + nonce=0, + address=Address(0xB000000000000000000000000000000000000000), # noqa: E501 + ) + # Source: lll + # { + # [[ 0x00 ]] 0xfeedfeedfeedfeedfeedfeedfeedfeedfeedfeedfeedfeedfeedfeedfeedfeed # noqa: E501 + # (CALL (GAS) 0xb000000000000000000000000000000000000000 0 0 0 0 0) + # [[ 0x01 ]] 0xfeedfeedfeedfeedfeedfeedfeedfeedfeedfeedfeedfeedfeedfeedfeedfeed # noqa: E501 + # } + contract_0 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=0xFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEED, # noqa: E501 + ) + + Op.POP( + Op.CALL( + gas=Op.GAS, + address=contract_1, + value=0x0, + args_offset=0x0, + args_size=0x0, + ret_offset=0x0, + ret_size=0x0, + ) + ) + + Op.SSTORE( + key=0x1, + value=0xFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEED, # noqa: E501 + ) + + Op.STOP, + storage={ + 0: 0xDEADBEAFDEADBEAFDEADBEAFDEADBEAFDEADBEAFDEADBEAFDEADBEAFDEADBEAF, # noqa: E501 + 1: 0xDEADBEAFDEADBEAFDEADBEAFDEADBEAFDEADBEAFDEADBEAFDEADBEAFDEADBEAF, # noqa: E501 + }, + balance=1000, + nonce=0, + address=Address(0xC000000000000000000000000000000000000000), # noqa: E501 + ) tx = Transaction( sender=sender, @@ -470,7 +470,7 @@ def test_delegatecall_to_precompile_from_called_contract( 0: 0xFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEED, # noqa: E501 1: 0xFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEED, # noqa: E501 2560: 1, - 2561: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, + 2561: sender, 2562: 1, 2563: 1, 2564: 0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC000000, # noqa: E501 diff --git a/tests/ported_static/stStaticFlagEnabled/test_delegatecall_to_precompile_from_contract_initialization.py b/tests/ported_static/stStaticFlagEnabled/test_delegatecall_to_precompile_from_contract_initialization.py index 461551da852..df7fecef5c6 100644 --- a/tests/ported_static/stStaticFlagEnabled/test_delegatecall_to_precompile_from_contract_initialization.py +++ b/tests/ported_static/stStaticFlagEnabled/test_delegatecall_to_precompile_from_contract_initialization.py @@ -54,6 +54,7 @@ def test_delegatecall_to_precompile_from_contract_initialization( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { # [[ 0x00 ]] 0xfeedfeedfeedfeedfeedfeedfeedfeedfeedfeedfeedfeedfeedfeedfeedfeed # noqa: E501 @@ -377,7 +378,6 @@ def test_delegatecall_to_precompile_from_contract_initialization( nonce=0, address=Address(0xA000000000000000000000000000000000000000), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, @@ -403,7 +403,7 @@ def test_delegatecall_to_precompile_from_contract_initialization( 0: 0xFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEED, # noqa: E501 1: 0xFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEED, # noqa: E501 2560: 1, - 2561: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, + 2561: sender, 2562: 1, 2563: 1, 2564: 0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC000000, # noqa: E501 diff --git a/tests/ported_static/stStaticFlagEnabled/test_delegatecall_to_precompile_from_transaction.py b/tests/ported_static/stStaticFlagEnabled/test_delegatecall_to_precompile_from_transaction.py index 9d6cbaeba5a..427cc8978b5 100644 --- a/tests/ported_static/stStaticFlagEnabled/test_delegatecall_to_precompile_from_transaction.py +++ b/tests/ported_static/stStaticFlagEnabled/test_delegatecall_to_precompile_from_transaction.py @@ -54,73 +54,7 @@ def test_delegatecall_to_precompile_from_transaction( gas_limit=10000000, ) - # Source: lll - # { - # [[ 0x00 ]] 0xfeedfeedfeedfeedfeedfeedfeedfeedfeedfeedfeedfeedfeedfeedfeedfeed # noqa: E501 - # (STATICCALL (GAS) 0xa000000000000000000000000000000000000000 0 0 0x0a0000 0x012020) # noqa: E501 - # [[ 0x01 ]] 0xfeedfeedfeedfeedfeedfeedfeedfeedfeedfeedfeedfeedfeedfeedfeedfeed # noqa: E501 - # ;; save results to store - # [[ 0x0a00 ]] @0x0a0000 [[ 0x0a11 ]] @0x0a1100 - # [[ 0x0a01 ]] @0x0a0100 [[ 0x0a12 ]] @0x0a1200 - # [[ 0x0a02 ]] @0x0a0200 [[ 0x0a13 ]] @0x0a1300 - # [[ 0x0a03 ]] @0x0a0300 [[ 0x0a14 ]] @0x0a1400 - # [[ 0x0a04 ]] @0x0a0400 [[ 0x0a15 ]] @0x0a1500 - # [[ 0x0a05 ]] @0x0a0500 [[ 0x0a16 ]] @0x0a1600 - # [[ 0x0a06 ]] @0x0a0600 [[ 0x0a17 ]] @0x0a1700 - # [[ 0x0a07 ]] @0x0a0700 [[ 0x0a18 ]] @0x0a1800 - # [[ 0x0a08 ]] @0x0a0800 [[ 0x0a19 ]] @0x0a1900 - # [[ 0x0a09 ]] @0x0a0900 [[ 0x0a20 ]] @0x0a2000 - # [[ 0x0a10 ]] @0x0a1000 - # } - contract_0 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE( - key=0x0, - value=0xFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEED, # noqa: E501 - ) - + Op.POP( - Op.STATICCALL( - gas=Op.GAS, - address=0xA000000000000000000000000000000000000000, - args_offset=0x0, - args_size=0x0, - ret_offset=0xA0000, - ret_size=0x12020, - ) - ) - + Op.SSTORE( - key=0x1, - value=0xFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEED, # noqa: E501 - ) - + Op.SSTORE(key=0xA00, value=Op.MLOAD(offset=0xA0000)) - + Op.SSTORE(key=0xA11, value=Op.MLOAD(offset=0xA1100)) - + Op.SSTORE(key=0xA01, value=Op.MLOAD(offset=0xA0100)) - + Op.SSTORE(key=0xA12, value=Op.MLOAD(offset=0xA1200)) - + Op.SSTORE(key=0xA02, value=Op.MLOAD(offset=0xA0200)) - + Op.SSTORE(key=0xA13, value=Op.MLOAD(offset=0xA1300)) - + Op.SSTORE(key=0xA03, value=Op.MLOAD(offset=0xA0300)) - + Op.SSTORE(key=0xA14, value=Op.MLOAD(offset=0xA1400)) - + Op.SSTORE(key=0xA04, value=Op.MLOAD(offset=0xA0400)) - + Op.SSTORE(key=0xA15, value=Op.MLOAD(offset=0xA1500)) - + Op.SSTORE(key=0xA05, value=Op.MLOAD(offset=0xA0500)) - + Op.SSTORE(key=0xA16, value=Op.MLOAD(offset=0xA1600)) - + Op.SSTORE(key=0xA06, value=Op.MLOAD(offset=0xA0600)) - + Op.SSTORE(key=0xA17, value=Op.MLOAD(offset=0xA1700)) - + Op.SSTORE(key=0xA07, value=Op.MLOAD(offset=0xA0700)) - + Op.SSTORE(key=0xA18, value=Op.MLOAD(offset=0xA1800)) - + Op.SSTORE(key=0xA08, value=Op.MLOAD(offset=0xA0800)) - + Op.SSTORE(key=0xA19, value=Op.MLOAD(offset=0xA1900)) - + Op.SSTORE(key=0xA09, value=Op.MLOAD(offset=0xA0900)) - + Op.SSTORE(key=0xA20, value=Op.MLOAD(offset=0xA2000)) - + Op.SSTORE(key=0xA10, value=Op.MLOAD(offset=0xA1000)) - + Op.STOP, - storage={ - 0: 0xDEADBEAFDEADBEAFDEADBEAFDEADBEAFDEADBEAFDEADBEAFDEADBEAFDEADBEAF, # noqa: E501 - 1: 0xDEADBEAFDEADBEAFDEADBEAFDEADBEAFDEADBEAFDEADBEAFDEADBEAFDEADBEAF, # noqa: E501 - }, - balance=1000, - nonce=0, - address=Address(0xB000000000000000000000000000000000000000), # noqa: E501 - ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { # ;; Recovery of ECDSA signature @@ -409,7 +343,73 @@ def test_delegatecall_to_precompile_from_transaction( nonce=0, address=Address(0xA000000000000000000000000000000000000000), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: lll + # { + # [[ 0x00 ]] 0xfeedfeedfeedfeedfeedfeedfeedfeedfeedfeedfeedfeedfeedfeedfeedfeed # noqa: E501 + # (STATICCALL (GAS) 0xa000000000000000000000000000000000000000 0 0 0x0a0000 0x012020) # noqa: E501 + # [[ 0x01 ]] 0xfeedfeedfeedfeedfeedfeedfeedfeedfeedfeedfeedfeedfeedfeedfeedfeed # noqa: E501 + # ;; save results to store + # [[ 0x0a00 ]] @0x0a0000 [[ 0x0a11 ]] @0x0a1100 + # [[ 0x0a01 ]] @0x0a0100 [[ 0x0a12 ]] @0x0a1200 + # [[ 0x0a02 ]] @0x0a0200 [[ 0x0a13 ]] @0x0a1300 + # [[ 0x0a03 ]] @0x0a0300 [[ 0x0a14 ]] @0x0a1400 + # [[ 0x0a04 ]] @0x0a0400 [[ 0x0a15 ]] @0x0a1500 + # [[ 0x0a05 ]] @0x0a0500 [[ 0x0a16 ]] @0x0a1600 + # [[ 0x0a06 ]] @0x0a0600 [[ 0x0a17 ]] @0x0a1700 + # [[ 0x0a07 ]] @0x0a0700 [[ 0x0a18 ]] @0x0a1800 + # [[ 0x0a08 ]] @0x0a0800 [[ 0x0a19 ]] @0x0a1900 + # [[ 0x0a09 ]] @0x0a0900 [[ 0x0a20 ]] @0x0a2000 + # [[ 0x0a10 ]] @0x0a1000 + # } + contract_0 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE( + key=0x0, + value=0xFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEED, # noqa: E501 + ) + + Op.POP( + Op.STATICCALL( + gas=Op.GAS, + address=contract_1, + args_offset=0x0, + args_size=0x0, + ret_offset=0xA0000, + ret_size=0x12020, + ) + ) + + Op.SSTORE( + key=0x1, + value=0xFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEED, # noqa: E501 + ) + + Op.SSTORE(key=0xA00, value=Op.MLOAD(offset=0xA0000)) + + Op.SSTORE(key=0xA11, value=Op.MLOAD(offset=0xA1100)) + + Op.SSTORE(key=0xA01, value=Op.MLOAD(offset=0xA0100)) + + Op.SSTORE(key=0xA12, value=Op.MLOAD(offset=0xA1200)) + + Op.SSTORE(key=0xA02, value=Op.MLOAD(offset=0xA0200)) + + Op.SSTORE(key=0xA13, value=Op.MLOAD(offset=0xA1300)) + + Op.SSTORE(key=0xA03, value=Op.MLOAD(offset=0xA0300)) + + Op.SSTORE(key=0xA14, value=Op.MLOAD(offset=0xA1400)) + + Op.SSTORE(key=0xA04, value=Op.MLOAD(offset=0xA0400)) + + Op.SSTORE(key=0xA15, value=Op.MLOAD(offset=0xA1500)) + + Op.SSTORE(key=0xA05, value=Op.MLOAD(offset=0xA0500)) + + Op.SSTORE(key=0xA16, value=Op.MLOAD(offset=0xA1600)) + + Op.SSTORE(key=0xA06, value=Op.MLOAD(offset=0xA0600)) + + Op.SSTORE(key=0xA17, value=Op.MLOAD(offset=0xA1700)) + + Op.SSTORE(key=0xA07, value=Op.MLOAD(offset=0xA0700)) + + Op.SSTORE(key=0xA18, value=Op.MLOAD(offset=0xA1800)) + + Op.SSTORE(key=0xA08, value=Op.MLOAD(offset=0xA0800)) + + Op.SSTORE(key=0xA19, value=Op.MLOAD(offset=0xA1900)) + + Op.SSTORE(key=0xA09, value=Op.MLOAD(offset=0xA0900)) + + Op.SSTORE(key=0xA20, value=Op.MLOAD(offset=0xA2000)) + + Op.SSTORE(key=0xA10, value=Op.MLOAD(offset=0xA1000)) + + Op.STOP, + storage={ + 0: 0xDEADBEAFDEADBEAFDEADBEAFDEADBEAFDEADBEAFDEADBEAFDEADBEAFDEADBEAF, # noqa: E501 + 1: 0xDEADBEAFDEADBEAFDEADBEAFDEADBEAFDEADBEAFDEADBEAFDEADBEAFDEADBEAF, # noqa: E501 + }, + balance=1000, + nonce=0, + address=Address(0xB000000000000000000000000000000000000000), # noqa: E501 + ) tx = Transaction( sender=sender, @@ -426,7 +426,7 @@ def test_delegatecall_to_precompile_from_transaction( 0: 0xFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEED, # noqa: E501 1: 0xFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEEDFEED, # noqa: E501 2560: 1, - 2561: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, + 2561: sender, 2562: 1, 2563: 1, 2564: 0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC000000, # noqa: E501 diff --git a/tests/ported_static/stSystemOperationsTest/test_ab_acalls0.py b/tests/ported_static/stSystemOperationsTest/test_ab_acalls0.py index 848e0a4fb0b..863e937e7bb 100644 --- a/tests/ported_static/stSystemOperationsTest/test_ab_acalls0.py +++ b/tests/ported_static/stSystemOperationsTest/test_ab_acalls0.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_ab_acalls0( ) -> None: """Test_ab_acalls0.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -89,7 +86,6 @@ def test_ab_acalls0( nonce=0, address=Address(0x44EB1162303B6A60F2F8882D43D661787B3011E6), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stSystemOperationsTest/test_ab_acalls1.py b/tests/ported_static/stSystemOperationsTest/test_ab_acalls1.py index d66692566d6..cf256c209c9 100644 --- a/tests/ported_static/stSystemOperationsTest/test_ab_acalls1.py +++ b/tests/ported_static/stSystemOperationsTest/test_ab_acalls1.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,9 +33,7 @@ def test_ab_acalls1( ) -> None: """Test_ab_acalls1.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -90,7 +87,6 @@ def test_ab_acalls1( nonce=0, address=Address(0x6236EA4EA8F3E5263ACB65A97ABE8683AB54D03A), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stSystemOperationsTest/test_ab_acalls2.py b/tests/ported_static/stSystemOperationsTest/test_ab_acalls2.py index 5f84c8c62a9..879789fe147 100644 --- a/tests/ported_static/stSystemOperationsTest/test_ab_acalls2.py +++ b/tests/ported_static/stSystemOperationsTest/test_ab_acalls2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,9 +33,7 @@ def test_ab_acalls2( ) -> None: """Test_ab_acalls2.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -82,7 +79,6 @@ def test_ab_acalls2( nonce=0, address=Address(0xA890CEB693666313E0A5A1BE4F59F06C1E33F5C9), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stSystemOperationsTest/test_ab_acalls3.py b/tests/ported_static/stSystemOperationsTest/test_ab_acalls3.py index 178bebebbd2..8f2b77d0966 100644 --- a/tests/ported_static/stSystemOperationsTest/test_ab_acalls3.py +++ b/tests/ported_static/stSystemOperationsTest/test_ab_acalls3.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_ab_acalls3( ) -> None: """Test_ab_acalls3.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -81,7 +78,6 @@ def test_ab_acalls3( nonce=0, address=Address(0xA890CEB693666313E0A5A1BE4F59F06C1E33F5C9), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stSystemOperationsTest/test_ab_acalls_suicide0.py b/tests/ported_static/stSystemOperationsTest/test_ab_acalls_suicide0.py index 984879a7704..a8876a5fd6a 100644 --- a/tests/ported_static/stSystemOperationsTest/test_ab_acalls_suicide0.py +++ b/tests/ported_static/stSystemOperationsTest/test_ab_acalls_suicide0.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_ab_acalls_suicide0( ) -> None: """Test_ab_acalls_suicide0.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -90,7 +87,6 @@ def test_ab_acalls_suicide0( nonce=0, address=Address(0x24940009F045E4134ED2AB242BE610D312FE9A29), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stSystemOperationsTest/test_ab_acalls_suicide1.py b/tests/ported_static/stSystemOperationsTest/test_ab_acalls_suicide1.py index f9d95b4f17f..a21d870ec37 100644 --- a/tests/ported_static/stSystemOperationsTest/test_ab_acalls_suicide1.py +++ b/tests/ported_static/stSystemOperationsTest/test_ab_acalls_suicide1.py @@ -70,6 +70,7 @@ def test_ab_acalls_suicide1( gas_limit=100000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { (MSTORE 0 (CALLDATALOAD 0)) [[ (PC) ]] (CALL (CALLDATALOAD 0) 0x945304eb96065b2a98b57a48a06ae28d285a71b5 24 0 32 0 0) } # noqa: E501 contract_0 = pre.deploy_contract( # noqa: F841 @@ -116,7 +117,6 @@ def test_ab_acalls_suicide1( nonce=0, address=Address(0x945304EB96065B2A98B57A48A06AE28D285A71B5), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx_data = [ Hash(0x186A0), diff --git a/tests/ported_static/stSystemOperationsTest/test_balance_input_address_too_big.py b/tests/ported_static/stSystemOperationsTest/test_balance_input_address_too_big.py index 2f3fc8f2825..30f5fa1470b 100644 --- a/tests/ported_static/stSystemOperationsTest/test_balance_input_address_too_big.py +++ b/tests/ported_static/stSystemOperationsTest/test_balance_input_address_too_big.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_balance_input_address_too_big( ) -> None: """Test_balance_input_address_too_big.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -60,9 +57,7 @@ def test_balance_input_address_too_big( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x7B25BEF255E5917C960AEF5CEB690DCAA1C9EFF8), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stSystemOperationsTest/test_call_recursive_bomb0.py b/tests/ported_static/stSystemOperationsTest/test_call_recursive_bomb0.py index 3935cafb05d..908cfbee6d0 100644 --- a/tests/ported_static/stSystemOperationsTest/test_call_recursive_bomb0.py +++ b/tests/ported_static/stSystemOperationsTest/test_call_recursive_bomb0.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,9 +33,7 @@ def test_call_recursive_bomb0( ) -> None: """Test_call_recursive_bomb0.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -47,23 +44,6 @@ def test_call_recursive_bomb0( gas_limit=11000000000, ) - # Source: lll - # { (CALL 100000000 23 0 0 0 0) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.CALL( - gas=0x5F5E100, - address=0x783516813E6366B978F7101A6A12B4C8498B0283, - value=0x17, - args_offset=0x0, - args_size=0x0, - ret_offset=0x0, - ret_size=0x0, - ) - + Op.STOP, - balance=0x77359400, - nonce=0, - address=Address(0x6904E15F2A58E4C22DBB37FFEB39AB1F64002EB4), # noqa: E501 - ) # Source: lll # { [[ 0 ]] (+ (SLOAD 0) 1) [[ 1 ]] (CALL (- (GAS) 11000) (ADDRESS) 0 0 0 0 0) } # noqa: E501 addr = pre.deploy_contract( # noqa: F841 @@ -83,9 +63,23 @@ def test_call_recursive_bomb0( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x783516813E6366B978F7101A6A12B4C8498B0283), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: lll + # { (CALL 100000000 23 0 0 0 0) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.CALL( + gas=0x5F5E100, + address=addr, + value=0x17, + args_offset=0x0, + args_size=0x0, + ret_offset=0x0, + ret_size=0x0, + ) + + Op.STOP, + balance=0x77359400, + nonce=0, + ) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stSystemOperationsTest/test_call_recursive_bomb0_oog_at_max_call_depth.py b/tests/ported_static/stSystemOperationsTest/test_call_recursive_bomb0_oog_at_max_call_depth.py index 7f5b0f97019..36b1bca2d55 100644 --- a/tests/ported_static/stSystemOperationsTest/test_call_recursive_bomb0_oog_at_max_call_depth.py +++ b/tests/ported_static/stSystemOperationsTest/test_call_recursive_bomb0_oog_at_max_call_depth.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -36,9 +35,7 @@ def test_call_recursive_bomb0_oog_at_max_call_depth( ) -> None: """Test_call_recursive_bomb0_oog_at_max_call_depth.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -76,9 +73,7 @@ def test_call_recursive_bomb0_oog_at_max_call_depth( + Op.STOP, balance=0x1312D00, nonce=0, - address=Address(0x44872316EF00E0CD82E980900E6B85077B65E32F), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stSystemOperationsTest/test_call_recursive_bomb1.py b/tests/ported_static/stSystemOperationsTest/test_call_recursive_bomb1.py index cec751bbdeb..e08a6fe1999 100644 --- a/tests/ported_static/stSystemOperationsTest/test_call_recursive_bomb1.py +++ b/tests/ported_static/stSystemOperationsTest/test_call_recursive_bomb1.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,9 +33,7 @@ def test_call_recursive_bomb1( ) -> None: """Test_call_recursive_bomb1.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -66,9 +63,7 @@ def test_call_recursive_bomb1( + Op.STOP, balance=0x1312D00, nonce=0, - address=Address(0x3987AB80FA45389CE475FA3EDD3D507BEBC5EC3D), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stSystemOperationsTest/test_call_recursive_bomb2.py b/tests/ported_static/stSystemOperationsTest/test_call_recursive_bomb2.py index e17103ce953..5fd784cedcc 100644 --- a/tests/ported_static/stSystemOperationsTest/test_call_recursive_bomb2.py +++ b/tests/ported_static/stSystemOperationsTest/test_call_recursive_bomb2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,9 +33,7 @@ def test_call_recursive_bomb2( ) -> None: """Test_call_recursive_bomb2.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -66,9 +63,7 @@ def test_call_recursive_bomb2( + Op.STOP, balance=0x1312D00, nonce=0, - address=Address(0x3987AB80FA45389CE475FA3EDD3D507BEBC5EC3D), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stSystemOperationsTest/test_call_recursive_bomb3.py b/tests/ported_static/stSystemOperationsTest/test_call_recursive_bomb3.py index e0531ead56f..ee666d8bf61 100644 --- a/tests/ported_static/stSystemOperationsTest/test_call_recursive_bomb3.py +++ b/tests/ported_static/stSystemOperationsTest/test_call_recursive_bomb3.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_call_recursive_bomb3( ) -> None: """Test_call_recursive_bomb3.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -65,9 +62,7 @@ def test_call_recursive_bomb3( + Op.STOP, balance=0x1312D00, nonce=0, - address=Address(0xBAA8243D50FDDB48ABD93764BBD97972DC654F67), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stSystemOperationsTest/test_call_recursive_bomb_log.py b/tests/ported_static/stSystemOperationsTest/test_call_recursive_bomb_log.py index 6c1225f090a..1c6670b6d98 100644 --- a/tests/ported_static/stSystemOperationsTest/test_call_recursive_bomb_log.py +++ b/tests/ported_static/stSystemOperationsTest/test_call_recursive_bomb_log.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,9 +33,7 @@ def test_call_recursive_bomb_log( ) -> None: """Test_call_recursive_bomb_log.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -47,23 +44,6 @@ def test_call_recursive_bomb_log( gas_limit=100000000000, ) - # Source: lll - # { (CALL 100000000 23 0 0 0 0) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.CALL( - gas=0x5F5E100, - address=0x5FE917D1EF791E524F7CB24CD012B5E5EC17000C, - value=0x17, - args_offset=0x0, - args_size=0x0, - ret_offset=0x0, - ret_size=0x0, - ) - + Op.STOP, - balance=0x1312D00, - nonce=0, - address=Address(0xD2E8FBE36BD16B24A1D34E4C06EC0741BD71C452), # noqa: E501 - ) # Source: lll # { (MSTORE 0 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) (LOG0 0 32) [[ 0 ]] (+ (SLOAD 0) 1) [[ 1 ]] (CALL (- (GAS) 25000) (ADDRESS) 0 0 0 0 0) } # noqa: E501 addr = pre.deploy_contract( # noqa: F841 @@ -88,9 +68,23 @@ def test_call_recursive_bomb_log( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x5FE917D1EF791E524F7CB24CD012B5E5EC17000C), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: lll + # { (CALL 100000000 23 0 0 0 0) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.CALL( + gas=0x5F5E100, + address=addr, + value=0x17, + args_offset=0x0, + args_size=0x0, + ret_offset=0x0, + ret_size=0x0, + ) + + Op.STOP, + balance=0x1312D00, + nonce=0, + ) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stSystemOperationsTest/test_call_recursive_bomb_log2.py b/tests/ported_static/stSystemOperationsTest/test_call_recursive_bomb_log2.py index 6ab13415fc4..622f0ba202e 100644 --- a/tests/ported_static/stSystemOperationsTest/test_call_recursive_bomb_log2.py +++ b/tests/ported_static/stSystemOperationsTest/test_call_recursive_bomb_log2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,9 +33,7 @@ def test_call_recursive_bomb_log2( ) -> None: """Test_call_recursive_bomb_log2.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -47,23 +44,6 @@ def test_call_recursive_bomb_log2( gas_limit=11000000000, ) - # Source: lll - # { (CALL 100000000 23 0 0 0 0) } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.CALL( - gas=0x5F5E100, - address=0x4F046F9952C30DE8430278A978358E998784A4CA, - value=0x17, - args_offset=0x0, - args_size=0x0, - ret_offset=0x0, - ret_size=0x0, - ) - + Op.STOP, - balance=0x1312D00, - nonce=0, - address=Address(0xD2E8FBE36BD16B24A1D34E4C06EC0741BD71C452), # noqa: E501 - ) # Source: lll # { (MSTORE 0 (GAS)) (LOG0 0 32) [[ 0 ]] (+ (SLOAD 0) 1) [[ 1 ]] (CALL (- (GAS) 25000) (ADDRESS) 0 0 0 0 0) } # noqa: E501 addr = pre.deploy_contract( # noqa: F841 @@ -85,9 +65,23 @@ def test_call_recursive_bomb_log2( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x4F046F9952C30DE8430278A978358E998784A4CA), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) + # Source: lll + # { (CALL 100000000 23 0 0 0 0) } # noqa: E501 + target = pre.deploy_contract( # noqa: F841 + code=Op.CALL( + gas=0x5F5E100, + address=addr, + value=0x17, + args_offset=0x0, + args_size=0x0, + ret_offset=0x0, + ret_size=0x0, + ) + + Op.STOP, + balance=0x1312D00, + nonce=0, + ) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stSystemOperationsTest/test_call_to_name_registrator0.py b/tests/ported_static/stSystemOperationsTest/test_call_to_name_registrator0.py index 771235eeab1..891c3e8626a 100644 --- a/tests/ported_static/stSystemOperationsTest/test_call_to_name_registrator0.py +++ b/tests/ported_static/stSystemOperationsTest/test_call_to_name_registrator0.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_call_to_name_registrator0( ) -> None: """Test_call_to_name_registrator0.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,6 +43,21 @@ def test_call_to_name_registrator0( gas_limit=10000000, ) + # Source: raw + # 0x6000355415600957005b60203560003555 + addr = pre.deploy_contract( # noqa: F841 + code=Op.JUMPI( + pc=0x9, + condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), + ) + + Op.STOP + + Op.JUMPDEST + + Op.SSTORE( + key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) + ), + balance=23, + nonce=0, + ) # Source: lll # { (MSTORE 0 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) (MSTORE 32 0xaaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa ) [[ 0 ]] (CALL 100000 23 0 64 64 0) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -61,7 +73,7 @@ def test_call_to_name_registrator0( key=0x0, value=Op.CALL( gas=0x186A0, - address=0x15EB18969E0925C8E4A76FD7CBCE36A2B056B27E, + address=addr, value=0x17, args_offset=0x0, args_size=0x40, @@ -72,25 +84,7 @@ def test_call_to_name_registrator0( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xF32CBF847E357D4AC1A41D8202AA2EE516DC32D1), # noqa: E501 - ) - # Source: raw - # 0x6000355415600957005b60203560003555 - addr = pre.deploy_contract( # noqa: F841 - code=Op.JUMPI( - pc=0x9, - condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), - ) - + Op.STOP - + Op.JUMPDEST - + Op.SSTORE( - key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) - ), - balance=23, - nonce=0, - address=Address(0x15EB18969E0925C8E4A76FD7CBCE36A2B056B27E), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stSystemOperationsTest/test_call_to_name_registrator_address_too_big_left.py b/tests/ported_static/stSystemOperationsTest/test_call_to_name_registrator_address_too_big_left.py index 72ab989003a..74d9a7cdb21 100644 --- a/tests/ported_static/stSystemOperationsTest/test_call_to_name_registrator_address_too_big_left.py +++ b/tests/ported_static/stSystemOperationsTest/test_call_to_name_registrator_address_too_big_left.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_call_to_name_registrator_address_too_big_left( ) -> None: """Test_call_to_name_registrator_address_too_big_left.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -54,7 +51,6 @@ def test_call_to_name_registrator_address_too_big_left( code="", balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xC8266873D1C906E93364246E671C3D9802AABE37), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -70,9 +66,7 @@ def test_call_to_name_registrator_address_too_big_left( ), balance=23, nonce=0, - address=Address(0x15EB18969E0925C8E4A76FD7CBCE36A2B056B27E), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stSystemOperationsTest/test_call_to_name_registrator_address_too_big_right.py b/tests/ported_static/stSystemOperationsTest/test_call_to_name_registrator_address_too_big_right.py index e145368f9a1..2d9970a1547 100644 --- a/tests/ported_static/stSystemOperationsTest/test_call_to_name_registrator_address_too_big_right.py +++ b/tests/ported_static/stSystemOperationsTest/test_call_to_name_registrator_address_too_big_right.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_call_to_name_registrator_address_too_big_right( ) -> None: """Test_call_to_name_registrator_address_too_big_right.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -74,7 +71,6 @@ def test_call_to_name_registrator_address_too_big_right( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x2308DA9C42E252155BAED45BCA437EF6CF3FB0B2), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -90,9 +86,7 @@ def test_call_to_name_registrator_address_too_big_right( ), balance=23, nonce=0, - address=Address(0x15EB18969E0925C8E4A76FD7CBCE36A2B056B27E), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stSystemOperationsTest/test_call_to_name_registrator_mem_oog_and_insufficient_balance.py b/tests/ported_static/stSystemOperationsTest/test_call_to_name_registrator_mem_oog_and_insufficient_balance.py index fc2cb7a07ef..6a4037f580f 100644 --- a/tests/ported_static/stSystemOperationsTest/test_call_to_name_registrator_mem_oog_and_insufficient_balance.py +++ b/tests/ported_static/stSystemOperationsTest/test_call_to_name_registrator_mem_oog_and_insufficient_balance.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_call_to_name_registrator_mem_oog_and_insufficient_balance( ) -> None: """Test_call_to_name_registrator_mem_oog_and_insufficient_balance.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -48,6 +45,21 @@ def test_call_to_name_registrator_mem_oog_and_insufficient_balance( gas_limit=10000000, ) + # Source: raw + # 0x6000355415600957005b60203560003555 + addr = pre.deploy_contract( # noqa: F841 + code=Op.JUMPI( + pc=0x9, + condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), + ) + + Op.STOP + + Op.JUMPDEST + + Op.SSTORE( + key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) + ), + balance=23, + nonce=0, + ) # Source: lll # { (MSTORE 0 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) (MSTORE 32 0xaaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa ) [[ 0 ]] (CALL 0xffffffffff 23 0 0xffffffffffff 64 0) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -63,7 +75,7 @@ def test_call_to_name_registrator_mem_oog_and_insufficient_balance( key=0x0, value=Op.CALL( gas=0xFFFFFFFFFF, - address=0x15EB18969E0925C8E4A76FD7CBCE36A2B056B27E, + address=addr, value=0x17, args_offset=0x0, args_size=0xFFFFFFFFFFFF, @@ -74,25 +86,7 @@ def test_call_to_name_registrator_mem_oog_and_insufficient_balance( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x74859A27DC2F1EE153CF9B4E4BAC1133F3B01B17), # noqa: E501 - ) - # Source: raw - # 0x6000355415600957005b60203560003555 - addr = pre.deploy_contract( # noqa: F841 - code=Op.JUMPI( - pc=0x9, - condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), - ) - + Op.STOP - + Op.JUMPDEST - + Op.SSTORE( - key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) - ), - balance=23, - nonce=0, - address=Address(0x15EB18969E0925C8E4A76FD7CBCE36A2B056B27E), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stSystemOperationsTest/test_call_to_name_registrator_not_much_memory0.py b/tests/ported_static/stSystemOperationsTest/test_call_to_name_registrator_not_much_memory0.py index 789935362f5..cb77992a35a 100644 --- a/tests/ported_static/stSystemOperationsTest/test_call_to_name_registrator_not_much_memory0.py +++ b/tests/ported_static/stSystemOperationsTest/test_call_to_name_registrator_not_much_memory0.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_call_to_name_registrator_not_much_memory0( ) -> None: """Test_call_to_name_registrator_not_much_memory0.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -48,6 +45,21 @@ def test_call_to_name_registrator_not_much_memory0( gas_limit=10000000, ) + # Source: raw + # 0x6000355415600957005b60203560003555 + addr = pre.deploy_contract( # noqa: F841 + code=Op.JUMPI( + pc=0x9, + condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), + ) + + Op.STOP + + Op.JUMPDEST + + Op.SSTORE( + key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) + ), + balance=23, + nonce=0, + ) # Source: lll # { (MSTORE 0 0xeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00) (MSTORE 32 0xaaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa ) [[ 0 ]] (CALL 500 23 0 64 987654 0) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -63,7 +75,7 @@ def test_call_to_name_registrator_not_much_memory0( key=0x0, value=Op.CALL( gas=0x1F4, - address=0x15EB18969E0925C8E4A76FD7CBCE36A2B056B27E, + address=addr, value=0x17, args_offset=0x0, args_size=0x40, @@ -74,25 +86,7 @@ def test_call_to_name_registrator_not_much_memory0( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x410DCC04FB8FC328D8EB131B4D9EA4204FBDAF2F), # noqa: E501 - ) - # Source: raw - # 0x6000355415600957005b60203560003555 - addr = pre.deploy_contract( # noqa: F841 - code=Op.JUMPI( - pc=0x9, - condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), - ) - + Op.STOP - + Op.JUMPDEST - + Op.SSTORE( - key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) - ), - balance=23, - nonce=0, - address=Address(0x15EB18969E0925C8E4A76FD7CBCE36A2B056B27E), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stSystemOperationsTest/test_call_to_name_registrator_not_much_memory1.py b/tests/ported_static/stSystemOperationsTest/test_call_to_name_registrator_not_much_memory1.py index fec6734b3a1..4d0137b3f55 100644 --- a/tests/ported_static/stSystemOperationsTest/test_call_to_name_registrator_not_much_memory1.py +++ b/tests/ported_static/stSystemOperationsTest/test_call_to_name_registrator_not_much_memory1.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_call_to_name_registrator_not_much_memory1( ) -> None: """Test_call_to_name_registrator_not_much_memory1.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -48,6 +45,21 @@ def test_call_to_name_registrator_not_much_memory1( gas_limit=10000000, ) + # Source: raw + # 0x6000355415600957005b60203560003555 + addr = pre.deploy_contract( # noqa: F841 + code=Op.JUMPI( + pc=0x9, + condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), + ) + + Op.STOP + + Op.JUMPDEST + + Op.SSTORE( + key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) + ), + balance=23, + nonce=0, + ) # Source: lll # { (MSTORE 0 0xeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00) (MSTORE 32 0xaaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa ) [[ 0 ]] (CALL 500 23 987654 0 64 0) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -63,7 +75,7 @@ def test_call_to_name_registrator_not_much_memory1( key=0x0, value=Op.CALL( gas=0x1F4, - address=0x15EB18969E0925C8E4A76FD7CBCE36A2B056B27E, + address=addr, value=0x17, args_offset=0xF1206, args_size=0x0, @@ -74,25 +86,7 @@ def test_call_to_name_registrator_not_much_memory1( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x8E2AF1ED48CB5567A2BC09CDE959DC7B5E5557BA), # noqa: E501 - ) - # Source: raw - # 0x6000355415600957005b60203560003555 - addr = pre.deploy_contract( # noqa: F841 - code=Op.JUMPI( - pc=0x9, - condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), - ) - + Op.STOP - + Op.JUMPDEST - + Op.SSTORE( - key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) - ), - balance=23, - nonce=0, - address=Address(0x15EB18969E0925C8E4A76FD7CBCE36A2B056B27E), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stSystemOperationsTest/test_call_to_name_registrator_out_of_gas.py b/tests/ported_static/stSystemOperationsTest/test_call_to_name_registrator_out_of_gas.py index 33032494655..ea3c2132fff 100644 --- a/tests/ported_static/stSystemOperationsTest/test_call_to_name_registrator_out_of_gas.py +++ b/tests/ported_static/stSystemOperationsTest/test_call_to_name_registrator_out_of_gas.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_call_to_name_registrator_out_of_gas( ) -> None: """Test_call_to_name_registrator_out_of_gas.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -48,6 +45,21 @@ def test_call_to_name_registrator_out_of_gas( gas_limit=10000000, ) + # Source: raw + # 0x6000355415600957005b60203560003555 + addr = pre.deploy_contract( # noqa: F841 + code=Op.JUMPI( + pc=0x9, + condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), + ) + + Op.STOP + + Op.JUMPDEST + + Op.SSTORE( + key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) + ), + balance=23, + nonce=0, + ) # Source: lll # { (MSTORE 0 0xeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00) (MSTORE 32 0xaaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa ) [[ 0 ]] (CALL 100 23 0 64 64 0) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -63,7 +75,7 @@ def test_call_to_name_registrator_out_of_gas( key=0x0, value=Op.CALL( gas=0x64, - address=0x15EB18969E0925C8E4A76FD7CBCE36A2B056B27E, + address=addr, value=0x17, args_offset=0x0, args_size=0x40, @@ -74,25 +86,7 @@ def test_call_to_name_registrator_out_of_gas( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x9B360D4F319B3F0A24F02939650CF93BBDB82022), # noqa: E501 - ) - # Source: raw - # 0x6000355415600957005b60203560003555 - addr = pre.deploy_contract( # noqa: F841 - code=Op.JUMPI( - pc=0x9, - condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), - ) - + Op.STOP - + Op.JUMPDEST - + Op.SSTORE( - key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) - ), - balance=23, - nonce=0, - address=Address(0x15EB18969E0925C8E4A76FD7CBCE36A2B056B27E), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stSystemOperationsTest/test_call_to_name_registrator_too_much_memory0.py b/tests/ported_static/stSystemOperationsTest/test_call_to_name_registrator_too_much_memory0.py index e0b931163fd..bc845d4f41c 100644 --- a/tests/ported_static/stSystemOperationsTest/test_call_to_name_registrator_too_much_memory0.py +++ b/tests/ported_static/stSystemOperationsTest/test_call_to_name_registrator_too_much_memory0.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_call_to_name_registrator_too_much_memory0( ) -> None: """Test_call_to_name_registrator_too_much_memory0.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -48,6 +45,21 @@ def test_call_to_name_registrator_too_much_memory0( gas_limit=10000000, ) + # Source: raw + # 0x6000355415600957005b60203560003555 + addr = pre.deploy_contract( # noqa: F841 + code=Op.JUMPI( + pc=0x9, + condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), + ) + + Op.STOP + + Op.JUMPDEST + + Op.SSTORE( + key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) + ), + balance=23, + nonce=0, + ) # Source: lll # { (MSTORE 0 0xeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00) (MSTORE 32 0xaaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa ) [[ 0 ]] (CALL 500 23 987654321 64 64 0) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -63,7 +75,7 @@ def test_call_to_name_registrator_too_much_memory0( key=0x0, value=Op.CALL( gas=0x1F4, - address=0x15EB18969E0925C8E4A76FD7CBCE36A2B056B27E, + address=addr, value=0x17, args_offset=0x3ADE68B1, args_size=0x40, @@ -74,25 +86,7 @@ def test_call_to_name_registrator_too_much_memory0( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x00154EF29A79F34CF1B7A570C5DF358EB7CD5108), # noqa: E501 - ) - # Source: raw - # 0x6000355415600957005b60203560003555 - addr = pre.deploy_contract( # noqa: F841 - code=Op.JUMPI( - pc=0x9, - condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), - ) - + Op.STOP - + Op.JUMPDEST - + Op.SSTORE( - key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) - ), - balance=23, - nonce=0, - address=Address(0x15EB18969E0925C8E4A76FD7CBCE36A2B056B27E), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stSystemOperationsTest/test_call_to_name_registrator_too_much_memory1.py b/tests/ported_static/stSystemOperationsTest/test_call_to_name_registrator_too_much_memory1.py index fd2999e5e28..1c7a8f05f29 100644 --- a/tests/ported_static/stSystemOperationsTest/test_call_to_name_registrator_too_much_memory1.py +++ b/tests/ported_static/stSystemOperationsTest/test_call_to_name_registrator_too_much_memory1.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_call_to_name_registrator_too_much_memory1( ) -> None: """Test_call_to_name_registrator_too_much_memory1.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -48,6 +45,21 @@ def test_call_to_name_registrator_too_much_memory1( gas_limit=10000000, ) + # Source: raw + # 0x6000355415600957005b60203560003555 + addr = pre.deploy_contract( # noqa: F841 + code=Op.JUMPI( + pc=0x9, + condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), + ) + + Op.STOP + + Op.JUMPDEST + + Op.SSTORE( + key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) + ), + balance=23, + nonce=0, + ) # Source: lll # { (MSTORE 0 0xeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00) (MSTORE 32 0xaaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa ) [[ 0 ]] (CALL 500 23 0 9865432 64 0) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -63,7 +75,7 @@ def test_call_to_name_registrator_too_much_memory1( key=0x0, value=Op.CALL( gas=0x1F4, - address=0x15EB18969E0925C8E4A76FD7CBCE36A2B056B27E, + address=addr, value=0x17, args_offset=0x0, args_size=0x9688D8, @@ -74,25 +86,7 @@ def test_call_to_name_registrator_too_much_memory1( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x375D9C49DD17C920398B81BA030BF150BC16AF59), # noqa: E501 - ) - # Source: raw - # 0x6000355415600957005b60203560003555 - addr = pre.deploy_contract( # noqa: F841 - code=Op.JUMPI( - pc=0x9, - condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), - ) - + Op.STOP - + Op.JUMPDEST - + Op.SSTORE( - key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) - ), - balance=23, - nonce=0, - address=Address(0x15EB18969E0925C8E4A76FD7CBCE36A2B056B27E), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stSystemOperationsTest/test_call_to_name_registrator_too_much_memory2.py b/tests/ported_static/stSystemOperationsTest/test_call_to_name_registrator_too_much_memory2.py index 26d1a537adf..a7d91e4f5fc 100644 --- a/tests/ported_static/stSystemOperationsTest/test_call_to_name_registrator_too_much_memory2.py +++ b/tests/ported_static/stSystemOperationsTest/test_call_to_name_registrator_too_much_memory2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_call_to_name_registrator_too_much_memory2( ) -> None: """Test_call_to_name_registrator_too_much_memory2.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -48,6 +45,21 @@ def test_call_to_name_registrator_too_much_memory2( gas_limit=10000000, ) + # Source: raw + # 0x6000355415600957005b60203560003555 + addr = pre.deploy_contract( # noqa: F841 + code=Op.JUMPI( + pc=0x9, + condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), + ) + + Op.STOP + + Op.JUMPDEST + + Op.SSTORE( + key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) + ), + balance=23, + nonce=0, + ) # Source: lll # { (MSTORE 0 0xeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00) (MSTORE 32 0xaaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa ) [[ 0 ]] (CALL 500 23 0 64 987654 1) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -63,7 +75,7 @@ def test_call_to_name_registrator_too_much_memory2( key=0x0, value=Op.CALL( gas=0x1F4, - address=0x15EB18969E0925C8E4A76FD7CBCE36A2B056B27E, + address=addr, value=0x17, args_offset=0x0, args_size=0x40, @@ -74,25 +86,7 @@ def test_call_to_name_registrator_too_much_memory2( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x12798480F9B1E6534F2D528F84EF12BDA7F49A71), # noqa: E501 - ) - # Source: raw - # 0x6000355415600957005b60203560003555 - addr = pre.deploy_contract( # noqa: F841 - code=Op.JUMPI( - pc=0x9, - condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), - ) - + Op.STOP - + Op.JUMPDEST - + Op.SSTORE( - key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) - ), - balance=23, - nonce=0, - address=Address(0x15EB18969E0925C8E4A76FD7CBCE36A2B056B27E), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stSystemOperationsTest/test_call_to_return1.py b/tests/ported_static/stSystemOperationsTest/test_call_to_return1.py index 32450e9fb9b..b3529534548 100644 --- a/tests/ported_static/stSystemOperationsTest/test_call_to_return1.py +++ b/tests/ported_static/stSystemOperationsTest/test_call_to_return1.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_call_to_return1( ) -> None: """Test_call_to_return1.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,6 +43,15 @@ def test_call_to_return1( gas_limit=10000000, ) + # Source: raw + # 0x6001600155602a601f536001601ff3 + addr = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x1, value=0x1) + + Op.MSTORE8(offset=0x1F, value=0x2A) + + Op.RETURN(offset=0x1F, size=0x1), + balance=23, + nonce=0, + ) # Source: lll # { [[ 0 ]] (CALL 1000 23 0 0 31 1) [[ 1 ]] @0 } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -53,7 +59,7 @@ def test_call_to_return1( key=0x0, value=Op.CALL( gas=0x3E8, - address=0x64963D42A3DFF7BF49CE946E12F6C9034C746888, + address=addr, value=0x17, args_offset=0x0, args_size=0x0, @@ -65,19 +71,7 @@ def test_call_to_return1( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xE31AFA4922F77F6C0EC198294B373D2AB9DE47D2), # noqa: E501 - ) - # Source: raw - # 0x6001600155602a601f536001601ff3 - addr = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x1, value=0x1) - + Op.MSTORE8(offset=0x1F, value=0x2A) - + Op.RETURN(offset=0x1F, size=0x1), - balance=23, - nonce=0, - address=Address(0x64963D42A3DFF7BF49CE946E12F6C9034C746888), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stSystemOperationsTest/test_call_to_return1_for_dynamic_jump0.py b/tests/ported_static/stSystemOperationsTest/test_call_to_return1_for_dynamic_jump0.py index 4e9b48bd915..ae214e384d9 100644 --- a/tests/ported_static/stSystemOperationsTest/test_call_to_return1_for_dynamic_jump0.py +++ b/tests/ported_static/stSystemOperationsTest/test_call_to_return1_for_dynamic_jump0.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_call_to_return1_for_dynamic_jump0( ) -> None: """Test_call_to_return1_for_dynamic_jump0.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -48,6 +45,15 @@ def test_call_to_return1_for_dynamic_jump0( gas_limit=10000000, ) + # Source: raw + # 0x6001600155602a601f536001601ff3 + addr = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x1, value=0x1) + + Op.MSTORE8(offset=0x1F, value=0x2A) + + Op.RETURN(offset=0x1F, size=0x1), + balance=23, + nonce=0, + ) # Source: raw # 0x6001601f600060006017736103e8f1600055600051565b6023602355 # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -55,7 +61,7 @@ def test_call_to_return1_for_dynamic_jump0( key=0x0, value=Op.CALL( gas=0x3E8, - address=0x64963D42A3DFF7BF49CE946E12F6C9034C746888, + address=addr, value=0x17, args_offset=0x0, args_size=0x0, @@ -68,19 +74,7 @@ def test_call_to_return1_for_dynamic_jump0( + Op.SSTORE(key=0x23, value=0x23), balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x6D968BCF609007EC874B2AC0216C27E131C3BE4C), # noqa: E501 - ) - # Source: raw - # 0x6001600155602a601f536001601ff3 - addr = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x1, value=0x1) - + Op.MSTORE8(offset=0x1F, value=0x2A) - + Op.RETURN(offset=0x1F, size=0x1), - balance=23, - nonce=0, - address=Address(0x64963D42A3DFF7BF49CE946E12F6C9034C746888), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stSystemOperationsTest/test_call_to_return1_for_dynamic_jump1.py b/tests/ported_static/stSystemOperationsTest/test_call_to_return1_for_dynamic_jump1.py index 9b20b5dff92..af3c9931b0c 100644 --- a/tests/ported_static/stSystemOperationsTest/test_call_to_return1_for_dynamic_jump1.py +++ b/tests/ported_static/stSystemOperationsTest/test_call_to_return1_for_dynamic_jump1.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_call_to_return1_for_dynamic_jump1( ) -> None: """Test_call_to_return1_for_dynamic_jump1.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -48,6 +45,15 @@ def test_call_to_return1_for_dynamic_jump1( gas_limit=10000000, ) + # Source: raw + # 0x6001600155602b601f536001601ff3 + addr = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x1, value=0x1) + + Op.MSTORE8(offset=0x1F, value=0x2B) + + Op.RETURN(offset=0x1F, size=0x1), + balance=23, + nonce=0, + ) # Source: raw # 0x6001601f600060006017736103e8f160005560005156605b6023602355 # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -55,7 +61,7 @@ def test_call_to_return1_for_dynamic_jump1( key=0x0, value=Op.CALL( gas=0x3E8, - address=0xD43411A40A68E9CBA15440E3C34A74A4DC5F79DD, + address=addr, value=0x17, args_offset=0x0, args_size=0x0, @@ -68,19 +74,7 @@ def test_call_to_return1_for_dynamic_jump1( + Op.SSTORE(key=0x23, value=0x23), balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x7BC307EC814CE37F4553993AC5612B763F18165D), # noqa: E501 - ) - # Source: raw - # 0x6001600155602b601f536001601ff3 - addr = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x1, value=0x1) - + Op.MSTORE8(offset=0x1F, value=0x2B) - + Op.RETURN(offset=0x1F, size=0x1), - balance=23, - nonce=0, - address=Address(0xD43411A40A68E9CBA15440E3C34A74A4DC5F79DD), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stSystemOperationsTest/test_call_value.py b/tests/ported_static/stSystemOperationsTest/test_call_value.py index 2a1cfb7f123..5d9854f17dd 100644 --- a/tests/ported_static/stSystemOperationsTest/test_call_value.py +++ b/tests/ported_static/stSystemOperationsTest/test_call_value.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_call_value( ) -> None: """Test_call_value.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -52,9 +49,7 @@ def test_call_value( code=Op.SSTORE(key=0x0, value=Op.CALLVALUE) + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xF7CF560CCB3853B2D9E5C4A647FB7CC7C7F935D3), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stSystemOperationsTest/test_callcode_to0.py b/tests/ported_static/stSystemOperationsTest/test_callcode_to0.py index 0d9c13b1cf8..36358ca65e4 100644 --- a/tests/ported_static/stSystemOperationsTest/test_callcode_to0.py +++ b/tests/ported_static/stSystemOperationsTest/test_callcode_to0.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_callcode_to0( ) -> None: """Test_callcode_to0.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -64,9 +61,7 @@ def test_callcode_to0( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xEC64B74B6AF4B537E54DE566819D04D55F6E8CD9), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stSystemOperationsTest/test_callcode_to_name_registrator0.py b/tests/ported_static/stSystemOperationsTest/test_callcode_to_name_registrator0.py index e4d2c631b57..facb2c858a8 100644 --- a/tests/ported_static/stSystemOperationsTest/test_callcode_to_name_registrator0.py +++ b/tests/ported_static/stSystemOperationsTest/test_callcode_to_name_registrator0.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcode_to_name_registrator0( ) -> None: """Test_callcode_to_name_registrator0.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -48,6 +45,21 @@ def test_callcode_to_name_registrator0( gas_limit=10000000, ) + # Source: raw + # 0x6000355415600957005b60203560003555 + addr = pre.deploy_contract( # noqa: F841 + code=Op.JUMPI( + pc=0x9, + condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), + ) + + Op.STOP + + Op.JUMPDEST + + Op.SSTORE( + key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) + ), + balance=23, + nonce=0, + ) # Source: lll # { (MSTORE 0 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) (MSTORE 32 0xaaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa ) [[ 0 ]] (CALLCODE 1000 23 0 64 64 0) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -63,7 +75,7 @@ def test_callcode_to_name_registrator0( key=0x0, value=Op.CALLCODE( gas=0x3E8, - address=0x15EB18969E0925C8E4A76FD7CBCE36A2B056B27E, + address=addr, value=0x17, args_offset=0x0, args_size=0x40, @@ -74,25 +86,7 @@ def test_callcode_to_name_registrator0( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xC390A3ED1719280F32A2A74CBB1F8A3E7B1F002E), # noqa: E501 - ) - # Source: raw - # 0x6000355415600957005b60203560003555 - addr = pre.deploy_contract( # noqa: F841 - code=Op.JUMPI( - pc=0x9, - condition=Op.ISZERO(Op.SLOAD(key=Op.CALLDATALOAD(offset=0x0))), - ) - + Op.STOP - + Op.JUMPDEST - + Op.SSTORE( - key=Op.CALLDATALOAD(offset=0x0), value=Op.CALLDATALOAD(offset=0x20) - ), - balance=23, - nonce=0, - address=Address(0x15EB18969E0925C8E4A76FD7CBCE36A2B056B27E), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stSystemOperationsTest/test_callcode_to_name_registrator_addres_too_big_left.py b/tests/ported_static/stSystemOperationsTest/test_callcode_to_name_registrator_addres_too_big_left.py index fd7d66b197a..e1ae55fb0ec 100644 --- a/tests/ported_static/stSystemOperationsTest/test_callcode_to_name_registrator_addres_too_big_left.py +++ b/tests/ported_static/stSystemOperationsTest/test_callcode_to_name_registrator_addres_too_big_left.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcode_to_name_registrator_addres_too_big_left( ) -> None: """Test_callcode_to_name_registrator_addres_too_big_left.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -54,7 +51,6 @@ def test_callcode_to_name_registrator_addres_too_big_left( code="", balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xCF5A2A9C286222B44BB932D847C4E05A2353B673), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -70,9 +66,7 @@ def test_callcode_to_name_registrator_addres_too_big_left( ), balance=23, nonce=0, - address=Address(0x15EB18969E0925C8E4A76FD7CBCE36A2B056B27E), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stSystemOperationsTest/test_callcode_to_name_registrator_addres_too_big_right.py b/tests/ported_static/stSystemOperationsTest/test_callcode_to_name_registrator_addres_too_big_right.py index af2439075a1..218e07731d1 100644 --- a/tests/ported_static/stSystemOperationsTest/test_callcode_to_name_registrator_addres_too_big_right.py +++ b/tests/ported_static/stSystemOperationsTest/test_callcode_to_name_registrator_addres_too_big_right.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_callcode_to_name_registrator_addres_too_big_right( ) -> None: """Test_callcode_to_name_registrator_addres_too_big_right.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -74,7 +71,6 @@ def test_callcode_to_name_registrator_addres_too_big_right( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xC8DE9EA9779E64CF3E682F2157A7D38205AF9444), # noqa: E501 ) # Source: raw # 0x6000355415600957005b60203560003555 @@ -90,9 +86,7 @@ def test_callcode_to_name_registrator_addres_too_big_right( ), balance=23, nonce=0, - address=Address(0x15EB18969E0925C8E4A76FD7CBCE36A2B056B27E), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stSystemOperationsTest/test_callcode_to_return1.py b/tests/ported_static/stSystemOperationsTest/test_callcode_to_return1.py index 1096f97d7a0..0b59d077378 100644 --- a/tests/ported_static/stSystemOperationsTest/test_callcode_to_return1.py +++ b/tests/ported_static/stSystemOperationsTest/test_callcode_to_return1.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_callcode_to_return1( ) -> None: """Test_callcode_to_return1.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,6 +43,15 @@ def test_callcode_to_return1( gas_limit=30000000, ) + # Source: raw + # 0x6001600155603760005360026000f3 + addr = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x1, value=0x1) + + Op.MSTORE8(offset=0x0, value=0x37) + + Op.RETURN(offset=0x0, size=0x2), + balance=23, + nonce=0, + ) # Source: lll # { (MSTORE 0 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) (MSTORE 32 0xaaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa ) [[ 0 ]] (CALLCODE 50000 23 0 64 0 2 ) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -61,7 +67,7 @@ def test_callcode_to_return1( key=0x0, value=Op.CALLCODE( gas=0xC350, - address=0x896F13E800125C0CCEC44F3C434335F0A97BC1B, + address=addr, value=0x17, args_offset=0x0, args_size=0x40, @@ -72,19 +78,7 @@ def test_callcode_to_return1( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x8B09C7AB22E22458D6DC0756D12127E14CBD6A50), # noqa: E501 - ) - # Source: raw - # 0x6001600155603760005360026000f3 - addr = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x1, value=0x1) - + Op.MSTORE8(offset=0x0, value=0x37) - + Op.RETURN(offset=0x0, size=0x2), - balance=23, - nonce=0, - address=Address(0x0896F13E800125C0CCEC44F3C434335F0A97BC1B), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stSystemOperationsTest/test_caller_account_balance.py b/tests/ported_static/stSystemOperationsTest/test_caller_account_balance.py index f4da1bef24e..9e98caf0590 100644 --- a/tests/ported_static/stSystemOperationsTest/test_caller_account_balance.py +++ b/tests/ported_static/stSystemOperationsTest/test_caller_account_balance.py @@ -46,6 +46,7 @@ def test_caller_account_balance( gas_limit=100000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { [[0]] (balance (caller)) } target = pre.deploy_contract( # noqa: F841 @@ -54,7 +55,6 @@ def test_caller_account_balance( nonce=0, address=Address(0x13AB36BAF5501D0A3C5CD05BE4788496F99A4E34), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stSystemOperationsTest/test_callto_return2.py b/tests/ported_static/stSystemOperationsTest/test_callto_return2.py index 1397ed5e9b9..8eac5f4191f 100644 --- a/tests/ported_static/stSystemOperationsTest/test_callto_return2.py +++ b/tests/ported_static/stSystemOperationsTest/test_callto_return2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_callto_return2( ) -> None: """Test_callto_return2.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,6 +43,17 @@ def test_callto_return2( gas_limit=10000000, ) + # Source: raw + # 0x6001600155603760005360026000f2 + addr = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x1, value=0x1) + + Op.MSTORE8(offset=0x0, value=0x37) + + Op.PUSH1[0x2] + + Op.PUSH1[0x0] + + Op.CALLCODE, + balance=23, + nonce=0, + ) # Source: lll # { (MSTORE 0 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) (MSTORE 32 0xaaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa ) [[ 0 ]] (CALL 5000 23 0 64 0 2 ) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -61,7 +69,7 @@ def test_callto_return2( key=0x0, value=Op.CALL( gas=0x1388, - address=0x2B45331C406DF38B99656C3ED3A97EF219979232, + address=addr, value=0x17, args_offset=0x0, args_size=0x40, @@ -72,21 +80,7 @@ def test_callto_return2( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xBD44C6EB4F918AA9AB1DA6BCA875839B1250E4E9), # noqa: E501 - ) - # Source: raw - # 0x6001600155603760005360026000f2 - addr = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x1, value=0x1) - + Op.MSTORE8(offset=0x0, value=0x37) - + Op.PUSH1[0x2] - + Op.PUSH1[0x0] - + Op.CALLCODE, - balance=23, - nonce=0, - address=Address(0x2B45331C406DF38B99656C3ED3A97EF219979232), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stSystemOperationsTest/test_create_hash_collision.py b/tests/ported_static/stSystemOperationsTest/test_create_hash_collision.py index 347dbd520fb..c05c75a9bd4 100644 --- a/tests/ported_static/stSystemOperationsTest/test_create_hash_collision.py +++ b/tests/ported_static/stSystemOperationsTest/test_create_hash_collision.py @@ -48,6 +48,7 @@ def test_create_hash_collision( gas_limit=100000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { (MSTORE 0 0x601080600c6000396000f3006000355415600957005b60203560003555) [[ 0 ]] (CREATE 23 3 29) } # noqa: E501 contract_0 = pre.deploy_contract( # noqa: F841 @@ -63,7 +64,6 @@ def test_create_hash_collision( nonce=0, address=Address(0x095E7BAEA6A6C7C4C2DFEB977EFAC326AF552D87), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: raw # 0x60016001016055 contract_1 = pre.deploy_contract( # noqa: F841 diff --git a/tests/ported_static/stSystemOperationsTest/test_create_name_registrator.py b/tests/ported_static/stSystemOperationsTest/test_create_name_registrator.py index acef43618f1..8aceb541019 100644 --- a/tests/ported_static/stSystemOperationsTest/test_create_name_registrator.py +++ b/tests/ported_static/stSystemOperationsTest/test_create_name_registrator.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -15,6 +14,7 @@ Environment, StateTestFiller, Transaction, + compute_create_address, ) from execution_testing.vm import Op @@ -34,9 +34,7 @@ def test_create_name_registrator( """Test_create_name_registrator.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) contract_0 = Address(0x095E7BAEA6A6C7C4C2DFEB977EFAC326AF552D87) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -60,9 +58,7 @@ def test_create_name_registrator( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x095E7BAEA6A6C7C4C2DFEB977EFAC326AF552D87), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, @@ -74,7 +70,9 @@ def test_create_name_registrator( post = { contract_0: Account( - storage={0: 0xD2571607E241ECF590ED94B12D87C94BABE36DB6}, + storage={ + 0: compute_create_address(address=contract_0, nonce=0), + }, nonce=1, ), } diff --git a/tests/ported_static/stSystemOperationsTest/test_create_name_registrator_oog_mem_expansion_oov.py b/tests/ported_static/stSystemOperationsTest/test_create_name_registrator_oog_mem_expansion_oov.py index 9ab05eb2347..24c66dc8788 100644 --- a/tests/ported_static/stSystemOperationsTest/test_create_name_registrator_oog_mem_expansion_oov.py +++ b/tests/ported_static/stSystemOperationsTest/test_create_name_registrator_oog_mem_expansion_oov.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_create_name_registrator_oog_mem_expansion_oov( ) -> None: """Test_create_name_registrator_oog_mem_expansion_oov.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -64,9 +61,7 @@ def test_create_name_registrator_oog_mem_expansion_oov( + Op.STOP, balance=10000, nonce=0, - address=Address(0xB8D613D3333F8CE34BC851256B3096FFA7932F6E), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stSystemOperationsTest/test_create_name_registrator_out_of_memory_bonds0.py b/tests/ported_static/stSystemOperationsTest/test_create_name_registrator_out_of_memory_bonds0.py index c6bc0bce003..b65dfdacd85 100644 --- a/tests/ported_static/stSystemOperationsTest/test_create_name_registrator_out_of_memory_bonds0.py +++ b/tests/ported_static/stSystemOperationsTest/test_create_name_registrator_out_of_memory_bonds0.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_create_name_registrator_out_of_memory_bonds0( ) -> None: """Test_create_name_registrator_out_of_memory_bonds0.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -62,9 +59,7 @@ def test_create_name_registrator_out_of_memory_bonds0( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x8593273FE085739B33E6A5D293BB84F3224BA9AD), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stSystemOperationsTest/test_create_name_registrator_out_of_memory_bonds1.py b/tests/ported_static/stSystemOperationsTest/test_create_name_registrator_out_of_memory_bonds1.py index 2a95b0d1bf5..4fd27bfd082 100644 --- a/tests/ported_static/stSystemOperationsTest/test_create_name_registrator_out_of_memory_bonds1.py +++ b/tests/ported_static/stSystemOperationsTest/test_create_name_registrator_out_of_memory_bonds1.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_create_name_registrator_out_of_memory_bonds1( ) -> None: """Test_create_name_registrator_out_of_memory_bonds1.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -62,9 +59,7 @@ def test_create_name_registrator_out_of_memory_bonds1( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x2D0C02BA282D613FFACB6BA383F709ADE6E7522C), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stSystemOperationsTest/test_create_name_registrator_value_too_high.py b/tests/ported_static/stSystemOperationsTest/test_create_name_registrator_value_too_high.py index d2b38884cf5..3b5b41459ef 100644 --- a/tests/ported_static/stSystemOperationsTest/test_create_name_registrator_value_too_high.py +++ b/tests/ported_static/stSystemOperationsTest/test_create_name_registrator_value_too_high.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -37,9 +36,7 @@ def test_create_name_registrator_value_too_high( """Test_create_name_registrator_value_too_high.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) contract_0 = Address(0x095E7BAEA6A6C7C4C2DFEB977EFAC326AF552D87) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0x5F5E100) env = Environment( fee_recipient=coinbase, @@ -64,9 +61,7 @@ def test_create_name_registrator_value_too_high( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x095E7BAEA6A6C7C4C2DFEB977EFAC326AF552D87), # noqa: E501 ) - pre[sender] = Account(balance=0x5F5E100) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stSystemOperationsTest/test_create_name_registrator_zero_mem.py b/tests/ported_static/stSystemOperationsTest/test_create_name_registrator_zero_mem.py index b3f84a01d73..fc00fef4328 100644 --- a/tests/ported_static/stSystemOperationsTest/test_create_name_registrator_zero_mem.py +++ b/tests/ported_static/stSystemOperationsTest/test_create_name_registrator_zero_mem.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -15,6 +14,7 @@ Environment, StateTestFiller, Transaction, + compute_create_address, ) from execution_testing.vm import Op @@ -36,9 +36,7 @@ def test_create_name_registrator_zero_mem( """Test_create_name_registrator_zero_mem.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) contract_0 = Address(0x095E7BAEA6A6C7C4C2DFEB977EFAC326AF552D87) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -60,9 +58,7 @@ def test_create_name_registrator_zero_mem( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x095E7BAEA6A6C7C4C2DFEB977EFAC326AF552D87), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, @@ -74,7 +70,9 @@ def test_create_name_registrator_zero_mem( post = { contract_0: Account( - storage={0: 0xD2571607E241ECF590ED94B12D87C94BABE36DB6}, + storage={ + 0: compute_create_address(address=contract_0, nonce=0), + }, nonce=1, ), } diff --git a/tests/ported_static/stSystemOperationsTest/test_create_name_registrator_zero_mem2.py b/tests/ported_static/stSystemOperationsTest/test_create_name_registrator_zero_mem2.py index 33b90d91205..874b1f517c4 100644 --- a/tests/ported_static/stSystemOperationsTest/test_create_name_registrator_zero_mem2.py +++ b/tests/ported_static/stSystemOperationsTest/test_create_name_registrator_zero_mem2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -15,6 +14,7 @@ Environment, StateTestFiller, Transaction, + compute_create_address, ) from execution_testing.vm import Op @@ -36,9 +36,7 @@ def test_create_name_registrator_zero_mem2( """Test_create_name_registrator_zero_mem2.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) contract_0 = Address(0x095E7BAEA6A6C7C4C2DFEB977EFAC326AF552D87) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -67,9 +65,7 @@ def test_create_name_registrator_zero_mem2( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x095E7BAEA6A6C7C4C2DFEB977EFAC326AF552D87), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, @@ -81,7 +77,9 @@ def test_create_name_registrator_zero_mem2( post = { contract_0: Account( - storage={0: 0xD2571607E241ECF590ED94B12D87C94BABE36DB6}, + storage={ + 0: compute_create_address(address=contract_0, nonce=0), + }, nonce=1, ), } diff --git a/tests/ported_static/stSystemOperationsTest/test_create_name_registrator_zero_mem_expansion.py b/tests/ported_static/stSystemOperationsTest/test_create_name_registrator_zero_mem_expansion.py index 7e55ce0a91f..fa489f7aa9e 100644 --- a/tests/ported_static/stSystemOperationsTest/test_create_name_registrator_zero_mem_expansion.py +++ b/tests/ported_static/stSystemOperationsTest/test_create_name_registrator_zero_mem_expansion.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -15,6 +14,7 @@ Environment, StateTestFiller, Transaction, + compute_create_address, ) from execution_testing.vm import Op @@ -36,9 +36,7 @@ def test_create_name_registrator_zero_mem_expansion( """Test_create_name_registrator_zero_mem_expansion.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) contract_0 = Address(0x095E7BAEA6A6C7C4C2DFEB977EFAC326AF552D87) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -60,9 +58,7 @@ def test_create_name_registrator_zero_mem_expansion( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x095E7BAEA6A6C7C4C2DFEB977EFAC326AF552D87), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, @@ -74,7 +70,9 @@ def test_create_name_registrator_zero_mem_expansion( post = { contract_0: Account( - storage={0: 0xD2571607E241ECF590ED94B12D87C94BABE36DB6}, + storage={ + 0: compute_create_address(address=contract_0, nonce=0), + }, nonce=1, ), } diff --git a/tests/ported_static/stSystemOperationsTest/test_create_with_invalid_opcode.py b/tests/ported_static/stSystemOperationsTest/test_create_with_invalid_opcode.py index ce25374333f..922a8460afc 100644 --- a/tests/ported_static/stSystemOperationsTest/test_create_with_invalid_opcode.py +++ b/tests/ported_static/stSystemOperationsTest/test_create_with_invalid_opcode.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_create_with_invalid_opcode( ) -> None: """Test_create_with_invalid_opcode.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -56,9 +53,7 @@ def test_create_with_invalid_opcode( + Op.CREATE, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xCC73F3508071F505FB5A5C6108B9444FE05FDD4D), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stSystemOperationsTest/test_current_account_balance.py b/tests/ported_static/stSystemOperationsTest/test_current_account_balance.py index bd143302c5c..f61a6e27b87 100644 --- a/tests/ported_static/stSystemOperationsTest/test_current_account_balance.py +++ b/tests/ported_static/stSystemOperationsTest/test_current_account_balance.py @@ -46,6 +46,7 @@ def test_current_account_balance( gas_limit=100000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { [[0]] (balance (address)) } target = pre.deploy_contract( # noqa: F841 @@ -55,7 +56,6 @@ def test_current_account_balance( nonce=0, address=Address(0xFA1ADC30EF8A61E7996FA659B532621C0816E14D), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stSystemOperationsTest/test_double_selfdestruct_touch_paris.py b/tests/ported_static/stSystemOperationsTest/test_double_selfdestruct_touch_paris.py index 2f2cc390afd..26364936fba 100644 --- a/tests/ported_static/stSystemOperationsTest/test_double_selfdestruct_touch_paris.py +++ b/tests/ported_static/stSystemOperationsTest/test_double_selfdestruct_touch_paris.py @@ -85,6 +85,23 @@ def test_double_selfdestruct_touch_paris( ) pre[sender] = Account(balance=0x5F5E102) + pre[empty_account_1] = Account(balance=10) + pre[empty_account_2] = Account(balance=10) + # Source: yul + # berlin + # { + # let index := add(sload(0), 1) + # sstore(0, index) + # selfdestruct(sload(index)) + # } + addr = pre.deploy_contract( # noqa: F841 + code=Op.ADD(Op.SLOAD(key=0x0), 0x1) + + Op.SSTORE(key=0x0, value=Op.DUP1) + + Op.SELFDESTRUCT(address=Op.SLOAD), + storage={0: 0, 1: empty_account_1, 2: empty_account_2}, + nonce=0, + address=Address(0x29E4504A3D2A0E0AE0EBBBEFEDD4570639B3EBEE), # noqa: E501 + ) # Source: yul # berlin # { @@ -119,27 +136,6 @@ def test_double_selfdestruct_touch_paris( nonce=0, address=Address(0x8EC7465877D3957084DC907C0F6D8F2911A17A52), # noqa: E501 ) - # Source: yul - # berlin - # { - # let index := add(sload(0), 1) - # sstore(0, index) - # selfdestruct(sload(index)) - # } - addr = pre.deploy_contract( # noqa: F841 - code=Op.ADD(Op.SLOAD(key=0x0), 0x1) - + Op.SSTORE(key=0x0, value=Op.DUP1) - + Op.SELFDESTRUCT(address=Op.SLOAD), - storage={ - 0: 0, - 1: 0x68FA59E127B7526718EB0A4E113DF5793628CB91, - 2: 0x76FAE819612A29489A1A43208613D8F8557B8898, - }, - nonce=0, - address=Address(0x29E4504A3D2A0E0AE0EBBBEFEDD4570639B3EBEE), # noqa: E501 - ) - pre[empty_account_1] = Account(balance=10) - pre[empty_account_2] = Account(balance=10) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stSystemOperationsTest/test_post_to_return1.py b/tests/ported_static/stSystemOperationsTest/test_post_to_return1.py index 8dfb7fd0f46..d267cc95973 100644 --- a/tests/ported_static/stSystemOperationsTest/test_post_to_return1.py +++ b/tests/ported_static/stSystemOperationsTest/test_post_to_return1.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_post_to_return1( ) -> None: """Test_post_to_return1.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,6 +43,16 @@ def test_post_to_return1( gas_limit=10000000, ) + # Source: raw + # 0x603760005360026000f2 + addr = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE8(offset=0x0, value=0x37) + + Op.PUSH1[0x2] + + Op.PUSH1[0x0] + + Op.CALLCODE, + balance=23, + nonce=0, + ) # Source: lll # { (MSTORE 0 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) (MSTORE 32 0xaaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaa ) [[1]](CALL 30000 23 0 64 0 0 ) [[2]] 1 } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -61,7 +68,7 @@ def test_post_to_return1( key=0x1, value=Op.CALL( gas=0x7530, - address=0x1EC76F80449BF4D3EDF503813E06C0D4373FDF3D, + address=addr, value=0x17, args_offset=0x0, args_size=0x40, @@ -73,20 +80,7 @@ def test_post_to_return1( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x3AE2F90D9F77554F1E03D5A4868CA5F0C4E14039), # noqa: E501 - ) - # Source: raw - # 0x603760005360026000f2 - addr = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE8(offset=0x0, value=0x37) - + Op.PUSH1[0x2] - + Op.PUSH1[0x0] - + Op.CALLCODE, - balance=23, - nonce=0, - address=Address(0x1EC76F80449BF4D3EDF503813E06C0D4373FDF3D), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stSystemOperationsTest/test_return0.py b/tests/ported_static/stSystemOperationsTest/test_return0.py index 487a7573958..e9072df5790 100644 --- a/tests/ported_static/stSystemOperationsTest/test_return0.py +++ b/tests/ported_static/stSystemOperationsTest/test_return0.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_return0( ) -> None: """Test_return0.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -54,9 +51,7 @@ def test_return0( + Op.STOP, balance=23, nonce=0, - address=Address(0xB594E8F0AFCE73D002C12C76050E15BEAA8B21F7), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stSystemOperationsTest/test_return1.py b/tests/ported_static/stSystemOperationsTest/test_return1.py index 7be9ddf697b..aa776c0a646 100644 --- a/tests/ported_static/stSystemOperationsTest/test_return1.py +++ b/tests/ported_static/stSystemOperationsTest/test_return1.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_return1( ) -> None: """Test_return1.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -54,9 +51,7 @@ def test_return1( + Op.STOP, balance=23, nonce=0, - address=Address(0xE50C84B8B720A23E1BFB8BFAAEE5F44B6DD44139), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stSystemOperationsTest/test_return2.py b/tests/ported_static/stSystemOperationsTest/test_return2.py index bc4e623e529..3ccc5f27fea 100644 --- a/tests/ported_static/stSystemOperationsTest/test_return2.py +++ b/tests/ported_static/stSystemOperationsTest/test_return2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_return2( ) -> None: """Test_return2.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -54,9 +51,7 @@ def test_return2( + Op.STOP, balance=23, nonce=0, - address=Address(0x230FCB597DD38307E287C745B56DEB09A8A93EC0), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stSystemOperationsTest/test_suicide_address.py b/tests/ported_static/stSystemOperationsTest/test_suicide_address.py index e2c9c6aa486..d381dea5437 100644 --- a/tests/ported_static/stSystemOperationsTest/test_suicide_address.py +++ b/tests/ported_static/stSystemOperationsTest/test_suicide_address.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_suicide_address( ) -> None: """Test_suicide_address.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -54,9 +51,7 @@ def test_suicide_address( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xAB0CEFFAA4BD275F5819261E06029439647112C1), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stSystemOperationsTest/test_suicide_caller.py b/tests/ported_static/stSystemOperationsTest/test_suicide_caller.py index df46e450717..34f17745993 100644 --- a/tests/ported_static/stSystemOperationsTest/test_suicide_caller.py +++ b/tests/ported_static/stSystemOperationsTest/test_suicide_caller.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_suicide_caller( ) -> None: """Test_suicide_caller.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -54,9 +51,7 @@ def test_suicide_caller( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x26A4C0125CC2AC853D5C04C3A710E7628EE352A3), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, @@ -68,11 +63,7 @@ def test_suicide_caller( post = { sender: Account(nonce=1), - target: Account( - storage={0: 0xEBAF50DEBF10E08302FE4280C32DF010463CA297}, - balance=0, - nonce=0, - ), + target: Account(storage={0: sender}, balance=0, nonce=0), } state_test(env=env, pre=pre, post=post, tx=tx) diff --git a/tests/ported_static/stSystemOperationsTest/test_suicide_caller_addres_too_big_left.py b/tests/ported_static/stSystemOperationsTest/test_suicide_caller_addres_too_big_left.py index 3527b32bbe2..10c4ff37394 100644 --- a/tests/ported_static/stSystemOperationsTest/test_suicide_caller_addres_too_big_left.py +++ b/tests/ported_static/stSystemOperationsTest/test_suicide_caller_addres_too_big_left.py @@ -49,6 +49,7 @@ def test_suicide_caller_addres_too_big_left( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { [[0]] (CALLER) (SELFDESTRUCT 0xaaa94f5374fce5edbc8e2a8697c15331677e6ebf0b)} # noqa: E501 contract_0 = pre.deploy_contract( # noqa: F841 @@ -59,7 +60,6 @@ def test_suicide_caller_addres_too_big_left( nonce=0, address=Address(0x095E7BAEA6A6C7C4C2DFEB977EFAC326AF552D87), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, @@ -71,11 +71,7 @@ def test_suicide_caller_addres_too_big_left( post = { sender: Account(nonce=1), - contract_0: Account( - storage={0: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B}, - balance=0, - nonce=0, - ), + contract_0: Account(storage={0: sender}, balance=0, nonce=0), } state_test(env=env, pre=pre, post=post, tx=tx) diff --git a/tests/ported_static/stSystemOperationsTest/test_suicide_caller_addres_too_big_right.py b/tests/ported_static/stSystemOperationsTest/test_suicide_caller_addres_too_big_right.py index d15d2aae98d..84f360bf6b1 100644 --- a/tests/ported_static/stSystemOperationsTest/test_suicide_caller_addres_too_big_right.py +++ b/tests/ported_static/stSystemOperationsTest/test_suicide_caller_addres_too_big_right.py @@ -49,6 +49,7 @@ def test_suicide_caller_addres_too_big_right( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { [[0]] (CALLER) (SELFDESTRUCT 0xa94f5374fce5edbc8e2a8697c15331677e6ebf0baa)} # noqa: E501 contract_0 = pre.deploy_contract( # noqa: F841 @@ -59,7 +60,6 @@ def test_suicide_caller_addres_too_big_right( nonce=0, address=Address(0x095E7BAEA6A6C7C4C2DFEB977EFAC326AF552D87), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stSystemOperationsTest/test_suicide_not_existing_account.py b/tests/ported_static/stSystemOperationsTest/test_suicide_not_existing_account.py index ca54e97a1da..64c792c14a9 100644 --- a/tests/ported_static/stSystemOperationsTest/test_suicide_not_existing_account.py +++ b/tests/ported_static/stSystemOperationsTest/test_suicide_not_existing_account.py @@ -48,6 +48,7 @@ def test_suicide_not_existing_account( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: lll # { (SELFDESTRUCT 0xaa1722f3947def4cf144679da39c4c32bdc35681 )} target = pre.deploy_contract( # noqa: F841 @@ -59,7 +60,6 @@ def test_suicide_not_existing_account( nonce=0, address=Address(0x70C22830049F2678C8AA93D0060683CD67696495), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stSystemOperationsTest/test_suicide_origin.py b/tests/ported_static/stSystemOperationsTest/test_suicide_origin.py index 1dbd9045edc..5f785f6a0e5 100644 --- a/tests/ported_static/stSystemOperationsTest/test_suicide_origin.py +++ b/tests/ported_static/stSystemOperationsTest/test_suicide_origin.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_suicide_origin( ) -> None: """Test_suicide_origin.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -54,9 +51,7 @@ def test_suicide_origin( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x8A448E5835BBDD139B8A2053EE6FE895522048A1), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, @@ -68,11 +63,7 @@ def test_suicide_origin( post = { sender: Account(nonce=1), - target: Account( - storage={0: 0xEBAF50DEBF10E08302FE4280C32DF010463CA297}, - balance=0, - nonce=0, - ), + target: Account(storage={0: sender}, balance=0, nonce=0), } state_test(env=env, pre=pre, post=post, tx=tx) diff --git a/tests/ported_static/stSystemOperationsTest/test_suicide_send_ether_post_death.py b/tests/ported_static/stSystemOperationsTest/test_suicide_send_ether_post_death.py index 5837e3f5c3c..767c6a21ad5 100644 --- a/tests/ported_static/stSystemOperationsTest/test_suicide_send_ether_post_death.py +++ b/tests/ported_static/stSystemOperationsTest/test_suicide_send_ether_post_death.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_suicide_send_ether_post_death( ) -> None: """Test_suicide_send_ether_post_death.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xB1F4CBC3A50042184425A6F9E996D0910F7BA879457CE5DAC5C71E498AD3C005 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -162,9 +159,7 @@ def test_suicide_send_ether_post_death( + Op.JUMP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0xA997455DCA526734F5607F7C452DE0CFB9AF19F4), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stSystemOperationsTest/test_suicide_send_ether_to_me.py b/tests/ported_static/stSystemOperationsTest/test_suicide_send_ether_to_me.py index 1236f981735..effeb06c200 100644 --- a/tests/ported_static/stSystemOperationsTest/test_suicide_send_ether_to_me.py +++ b/tests/ported_static/stSystemOperationsTest/test_suicide_send_ether_to_me.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_suicide_send_ether_to_me( ) -> None: """Test_suicide_send_ether_to_me.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -52,9 +49,7 @@ def test_suicide_send_ether_to_me( code=Op.SELFDESTRUCT(address=Op.ADDRESS) + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x3B11A41D66B30B30D4D5BE673F7D5C7D72C9FCA8), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stSystemOperationsTest/test_test_name_registrator.py b/tests/ported_static/stSystemOperationsTest/test_test_name_registrator.py index 62f6185178f..49801340bd3 100644 --- a/tests/ported_static/stSystemOperationsTest/test_test_name_registrator.py +++ b/tests/ported_static/stSystemOperationsTest/test_test_name_registrator.py @@ -46,6 +46,7 @@ def test_test_name_registrator( gas_limit=1000000, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: raw # 0x6000355415600957005b60203560003555 target = pre.deploy_contract( # noqa: F841 @@ -62,7 +63,6 @@ def test_test_name_registrator( nonce=0, address=Address(0xFD6034FF12FAD248C17CA3C09F0D7B19243275CD), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stTimeConsuming/test_sstore_combinations_initial.py b/tests/ported_static/stTimeConsuming/test_sstore_combinations_initial.py deleted file mode 100644 index 1dd2d27e0af..00000000000 --- a/tests/ported_static/stTimeConsuming/test_sstore_combinations_initial.py +++ /dev/null @@ -1,251 +0,0 @@ -""" -SSTORE combination tests for all initial storage states. - -Exercises every combination of call types across four call slots, -varying the update-contract's initial storage state (0, 1, or 2). - -Ported from all ``sstore_combinations_initial*_ParisFiller.json`` -in ``state_tests/stTimeConsuming/``. -""" - -from enum import StrEnum - -import pytest -from execution_testing import ( - Account, - Alloc, - Bytecode, - StateTestFiller, - Transaction, - compute_create_address, -) -from execution_testing.forks import Fork -from execution_testing.vm import Op - -REFERENCE_SPEC_GIT_PATH = "N/A" -REFERENCE_SPEC_VERSION = "N/A" - -pytestmark = [ - pytest.mark.ported_from( - "state_tests/stTimeConsuming/sstore_combinations_initial00_ParisFiller.json", - "state_tests/stTimeConsuming/sstore_combinations_initial00_2_ParisFiller.json", - "state_tests/stTimeConsuming/sstore_combinations_initial01_ParisFiller.json", - "state_tests/stTimeConsuming/sstore_combinations_initial01_2_ParisFiller.json", - "state_tests/stTimeConsuming/sstore_combinations_initial10_ParisFiller.json", - "state_tests/stTimeConsuming/sstore_combinations_initial10_2_ParisFiller.json", - "state_tests/stTimeConsuming/sstore_combinations_initial11_ParisFiller.json", - "state_tests/stTimeConsuming/sstore_combinations_initial11_2_ParisFiller.json", - "state_tests/stTimeConsuming/sstore_combinations_initial20_ParisFiller.json", - "state_tests/stTimeConsuming/sstore_combinations_initial20_2_ParisFiller.json", - "state_tests/stTimeConsuming/sstore_combinations_initial21_ParisFiller.json", - "state_tests/stTimeConsuming/sstore_combinations_initial21_2_ParisFiller.json", - ), - pytest.mark.valid_from("Byzantium"), - pytest.mark.slow, -] - - -class MidContractActions(StrEnum): - """List of actions the middle contracts can perform.""" - - NOOP = "noop" - SSTORE_TOGGLE = "sstore-toggle" - REVERT = "revert" - - -# Middle-action combinations: (call_opcode, side_contract_index). -# Side-contract indices: 0=noop, 1=sstore-toggle, 2=reverting. -MIDDLE_ACTIONS = [ - (op, t) - for op in [ - Op.CALL, - Op.CALLCODE, - Op.DELEGATECALL, - Op.STATICCALL, - ] - for t in MidContractActions -] - - -@pytest.mark.parametrize( - "update_storage_initial_value", - range(3), - ids=["initial0", "initial1", "initial2"], -) -@pytest.mark.parametrize( - "call_4, call_4_target", - MIDDLE_ACTIONS, - ids=[f"call_4_{op}_{target}" for op, target in MIDDLE_ACTIONS], -) -@pytest.mark.parametrize( - "call_3", - [Op.STATICCALL, Op.CALL, Op.CALLCODE, Op.DELEGATECALL], -) -@pytest.mark.parametrize( - "call_2, call_2_target", - MIDDLE_ACTIONS, - ids=[f"call_2_{op}_{target}" for op, target in MIDDLE_ACTIONS], -) -@pytest.mark.parametrize( - "call_1", - [Op.CALL, Op.CALLCODE, Op.DELEGATECALL], -) -def test_sstore_combinations_initial( - state_test: StateTestFiller, - pre: Alloc, - fork: Fork, - update_storage_initial_value: int, - call_1: Op, - call_2: Op, - call_2_target: MidContractActions, - call_3: Op, - call_4: Op, - call_4_target: MidContractActions, -) -> None: - """Test SSTORE with four interleaved calls.""" - sender = pre.fund_eoa() - side = { - # Noop / balance-only (no executable code) - MidContractActions.NOOP: pre.deploy_contract( - Bytecode(), - balance=10, - storage={0: 1, 1: 1, 2: 1}, - ), - # SSTORE-toggle: flip slots 1..16, then set slot 1 = 1 - MidContractActions.SSTORE_TOGGLE: pre.deploy_contract( - code=sum( - Op.SSTORE(key=i, value=0x1) + Op.SSTORE(key=i, value=0x0) - for i in range(0x1, 0x10 + 1) - ) - + Op.SSTORE(key=0x1, value=0x1) - + Op.STOP, - ), - # Reverting contract - MidContractActions.REVERT: pre.deploy_contract( - code=Op.REVERT(offset=0x0, size=0x20) + Op.STOP, - storage={0: 2, 1: 2, 2: 2}, - ), - } - - update_contract = pre.deploy_contract( - code=Op.SSTORE(key=0x0, value=0x0) - + Op.SSTORE(key=0x1, value=0x1) - + Op.SSTORE(key=0x2, value=0x2) - + Op.STOP, - storage={ - 0: update_storage_initial_value, - 1: update_storage_initial_value, - 2: update_storage_initial_value, - } - if update_storage_initial_value > 0 - else {}, - ) - sstore_toggle = side[MidContractActions.SSTORE_TOGGLE] - - call_gas = 0x493E0 - - initcode = ( - Op.MSTORE(offset=0x64, value=0x0) - + Op.POP( - call_1( - gas=call_gas, - address=update_contract, - args_size=0x20, - ) - ) - + Op.POP(call_2(gas=call_gas, address=side[call_2_target])) - + Op.POP( - call_3( - gas=call_gas, - address=update_contract, - args_size=0x20, - ) - ) - + Op.POP(call_4(gas=call_gas, address=side[call_4_target])) - + Op.CALL(gas=call_gas * 2, address=sstore_toggle) - + Op.STOP - ) - - tx = Transaction( - sender=sender, - to=None, - data=initcode, - gas_limit=2_000_000, - value=1, - protected=fork.supports_protected_txs(), - ) - - post = { - sstore_toggle: Account(storage={1: 1}), - compute_create_address(address=sender, nonce=0): Account(nonce=1), - } - - state_test(pre=pre, post=post, tx=tx) - - -@pytest.mark.parametrize( - "update_storage_initial_value", - range(3), - ids=["initial0", "initial1", "initial2"], -) -def test_sstore_combinations_initial_staticcall_only( - state_test: StateTestFiller, - pre: Alloc, - fork: Fork, - update_storage_initial_value: int, -) -> None: - """Base case: STATICCALL to update-contract only.""" - sender = pre.fund_eoa() - - update_contract = pre.deploy_contract( - code=Op.SSTORE(key=0x0, value=0x0) - + Op.SSTORE(key=0x1, value=0x1) - + Op.SSTORE(key=0x2, value=0x2) - + Op.STOP, - storage={ - 0: update_storage_initial_value, - 1: update_storage_initial_value, - 2: update_storage_initial_value, - } - if update_storage_initial_value > 0 - else {}, - ) - sstore_toggle = pre.deploy_contract( - code=sum( - Op.SSTORE(key=i, value=0x1) + Op.SSTORE(key=i, value=0x0) - for i in range(0x1, 0x10 + 1) - ) - + Op.SSTORE(key=0x1, value=0x1) - + Op.STOP, - ) - - call_gas = 0x493E0 - - initcode = ( - Op.MSTORE(offset=0x64, value=0x0) - + Op.POP( - Op.STATICCALL( - gas=call_gas, - address=update_contract, - args_size=0x20, - ) - ) - + Op.CALL(gas=call_gas * 2, address=sstore_toggle) - + Op.STOP - ) - - tx = Transaction( - sender=sender, - to=None, - data=initcode, - gas_limit=2_000_000, - value=1, - protected=fork.supports_protected_txs(), - ) - - post = { - sstore_toggle: Account(storage={1: 1}), - compute_create_address(address=sender, nonce=0): Account(nonce=1), - } - - state_test(pre=pre, post=post, tx=tx) diff --git a/tests/ported_static/stTransactionTest/test_contract_store_clears_oog.py b/tests/ported_static/stTransactionTest/test_contract_store_clears_oog.py index 8d5b3d6606c..7446fbd4b0b 100644 --- a/tests/ported_static/stTransactionTest/test_contract_store_clears_oog.py +++ b/tests/ported_static/stTransactionTest/test_contract_store_clears_oog.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_contract_store_clears_oog( ) -> None: """Test_contract_store_clears_oog.""" coinbase = Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) - sender = EOA( - key=0x2B75D0C814EB07C075FCCBDD9A036FAF651D9C46D7477D6C4F30772CFCA90D38 - ) + sender = pre.fund_eoa(amount=0x1C9C380) env = Environment( fee_recipient=coinbase, @@ -46,7 +43,6 @@ def test_contract_store_clears_oog( gas_limit=100000, ) - pre[sender] = Account(balance=0x1C9C380) # Source: lll # {(SSTORE 0 0)(SSTORE 1 0)(SSTORE 2 0)(SSTORE 3 0)(SSTORE 4 0)(SSTORE 5 0)(SSTORE 6 0)(SSTORE 7 0)(SSTORE 8 0)(SSTORE 9 12)} # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -74,7 +70,6 @@ def test_contract_store_clears_oog( 9: 12, }, nonce=0, - address=Address(0xC9C8CE4628BDA9F8BC4A2CAAEBB3616F83C4305D), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stTransactionTest/test_contract_store_clears_success.py b/tests/ported_static/stTransactionTest/test_contract_store_clears_success.py index 70b0aff8e9c..90f1ca0d067 100644 --- a/tests/ported_static/stTransactionTest/test_contract_store_clears_success.py +++ b/tests/ported_static/stTransactionTest/test_contract_store_clears_success.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_contract_store_clears_success( ) -> None: """Test_contract_store_clears_success.""" coinbase = Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) - sender = EOA( - key=0xE624AFC0DCCEAD9A7C59F0007C5C5C3B3DD36EED1CFD8F309A68C9BA3D07769B - ) + sender = pre.fund_eoa(amount=0x8583B00) env = Environment( fee_recipient=coinbase, @@ -46,7 +43,6 @@ def test_contract_store_clears_success( gas_limit=10000000, ) - pre[sender] = Account(balance=0x8583B00) # Source: lll # {(SSTORE 0 0)(SSTORE 1 0)(SSTORE 2 0)(SSTORE 3 0)(SSTORE 4 0)(SSTORE 5 0)(SSTORE 6 0)(SSTORE 7 0)(SSTORE 8 0)(SSTORE 9 0)} # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -74,7 +70,6 @@ def test_contract_store_clears_success( 9: 12, }, nonce=0, - address=Address(0xD61E0564FAB2B0DA5136F75DB579B663BD9F2BD8), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stTransactionTest/test_create_message_reverted.py b/tests/ported_static/stTransactionTest/test_create_message_reverted.py index ee63a3efc6a..df437e572c1 100644 --- a/tests/ported_static/stTransactionTest/test_create_message_reverted.py +++ b/tests/ported_static/stTransactionTest/test_create_message_reverted.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_create_message_reverted( ) -> None: """Test_create_message_reverted.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x2B75D0C814EB07C075FCCBDD9A036FAF651D9C46D7477D6C4F30772CFCA90D38 - ) + sender = pre.fund_eoa(amount=0x1C9C380) env = Environment( fee_recipient=coinbase, @@ -46,7 +43,6 @@ def test_create_message_reverted( gas_limit=1000000000000, ) - pre[sender] = Account(balance=0x1C9C380) # Source: lll # {(MSTORE 0 0x600c600055) (CREATE 0 27 5)} target = pre.deploy_contract( # noqa: F841 @@ -54,7 +50,6 @@ def test_create_message_reverted( + Op.CREATE(value=0x0, offset=0x1B, size=0x5) + Op.STOP, nonce=0, - address=Address(0xC9B0CA064C8B73A1D845547CD28D4E97FE4EC8A0), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stTransactionTest/test_high_gas_price_paris.py b/tests/ported_static/stTransactionTest/test_high_gas_price_paris.py index fbf997b8261..8c6398c3164 100644 --- a/tests/ported_static/stTransactionTest/test_high_gas_price_paris.py +++ b/tests/ported_static/stTransactionTest/test_high_gas_price_paris.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -27,17 +26,13 @@ ) @pytest.mark.valid_from("Cancun") @pytest.mark.exception_test -@pytest.mark.pre_alloc_mutable def test_high_gas_price_paris( state_test: StateTestFiller, pre: Alloc, ) -> None: """Test_high_gas_price_paris.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - addr = Address(0x76FAE819612A29489A1A43208613D8F8557B8898) - sender = EOA( - key=0xF79127A3004ABDE26A4CBD80C428CB10F829FA11B54D36E7B326F4F4A5927ACF - ) + sender = pre.fund_eoa(amount=0x3B9ACA00) env = Environment( fee_recipient=coinbase, @@ -48,8 +43,7 @@ def test_high_gas_price_paris( gas_limit=89128960, ) - pre[sender] = Account(balance=0x3B9ACA00) - pre[addr] = Account(balance=10) + addr = pre.fund_eoa(amount=10) # noqa: F841 tx = Transaction( sender=sender, diff --git a/tests/ported_static/stTransactionTest/test_internal_call_hitting_gas_limit.py b/tests/ported_static/stTransactionTest/test_internal_call_hitting_gas_limit.py index 5fc9e5ac58b..d2cce97dd88 100644 --- a/tests/ported_static/stTransactionTest/test_internal_call_hitting_gas_limit.py +++ b/tests/ported_static/stTransactionTest/test_internal_call_hitting_gas_limit.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_internal_call_hitting_gas_limit( ) -> None: """Test_internal_call_hitting_gas_limit.""" coinbase = Address(0x2ADF5374FCE5EDBC8E2A8697C15331677E6EBF0B) - sender = EOA( - key=0xF79127A3004ABDE26A4CBD80C428CB10F829FA11B54D36E7B326F4F4A5927ACF - ) + sender = pre.fund_eoa(amount=0x3B9ACA00) env = Environment( fee_recipient=coinbase, @@ -46,13 +43,18 @@ def test_internal_call_hitting_gas_limit( gas_limit=100000, ) - pre[sender] = Account(balance=0x3B9ACA00) + # Source: lll + # {[[1]]55} + addr = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x1, value=0x37) + Op.STOP, + nonce=0, + ) # Source: lll # { (CALL 5000 1 0 0 0 0) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 code=Op.CALL( gas=0x1388, - address=0x9F499A40CBC961C5230197401CE369D5C53ED896, + address=addr, value=0x1, args_offset=0x0, args_size=0x0, @@ -62,14 +64,6 @@ def test_internal_call_hitting_gas_limit( + Op.STOP, balance=0xF4240, nonce=0, - address=Address(0xB208128346FE6A0C4EFA386C0C411A56E4557E2A), # noqa: E501 - ) - # Source: lll - # {[[1]]55} - addr = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x1, value=0x37) + Op.STOP, - nonce=0, - address=Address(0x9F499A40CBC961C5230197401CE369D5C53ED896), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stTransactionTest/test_internal_call_hitting_gas_limit_success.py b/tests/ported_static/stTransactionTest/test_internal_call_hitting_gas_limit_success.py index 83d23517ea3..89723d06162 100644 --- a/tests/ported_static/stTransactionTest/test_internal_call_hitting_gas_limit_success.py +++ b/tests/ported_static/stTransactionTest/test_internal_call_hitting_gas_limit_success.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_internal_call_hitting_gas_limit_success( ) -> None: """Test_internal_call_hitting_gas_limit_success.""" coinbase = Address(0x2ADF5374FCE5EDBC8E2A8697C15331677E6EBF0B) - sender = EOA( - key=0xF79127A3004ABDE26A4CBD80C428CB10F829FA11B54D36E7B326F4F4A5927ACF - ) + sender = pre.fund_eoa(amount=0x3B9ACA00) env = Environment( fee_recipient=coinbase, @@ -48,13 +45,18 @@ def test_internal_call_hitting_gas_limit_success( gas_limit=220000, ) - pre[sender] = Account(balance=0x3B9ACA00) + # Source: lll + # {[[1]]55} + addr = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x1, value=0x37) + Op.STOP, + nonce=0, + ) # Source: lll # { (CALL 25000 1 0 0 0 0) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 code=Op.CALL( gas=0x61A8, - address=0x9F499A40CBC961C5230197401CE369D5C53ED896, + address=addr, value=0x1, args_offset=0x0, args_size=0x0, @@ -63,14 +65,6 @@ def test_internal_call_hitting_gas_limit_success( ) + Op.STOP, nonce=0, - address=Address(0x786A1AB68BB1C7EB88A1B844D6F4D4A51022DE2C), # noqa: E501 - ) - # Source: lll - # {[[1]]55} - addr = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x1, value=0x37) + Op.STOP, - nonce=0, - address=Address(0x9F499A40CBC961C5230197401CE369D5C53ED896), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stTransactionTest/test_internal_call_store_clears_oog.py b/tests/ported_static/stTransactionTest/test_internal_call_store_clears_oog.py index 4f1bb709c68..d8227b78df4 100644 --- a/tests/ported_static/stTransactionTest/test_internal_call_store_clears_oog.py +++ b/tests/ported_static/stTransactionTest/test_internal_call_store_clears_oog.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_internal_call_store_clears_oog( ) -> None: """Test_internal_call_store_clears_oog.""" coinbase = Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) - sender = EOA( - key=0xF79127A3004ABDE26A4CBD80C428CB10F829FA11B54D36E7B326F4F4A5927ACF - ) + sender = pre.fund_eoa(amount=0x3B9ACA00) env = Environment( fee_recipient=coinbase, @@ -73,15 +70,13 @@ def test_internal_call_store_clears_oog( 9: 12, }, nonce=0, - address=Address(0xD61E0564FAB2B0DA5136F75DB579B663BD9F2BD8), # noqa: E501 ) - pre[sender] = Account(balance=0x3B9ACA00) # Source: lll # { (CALL 40000 1 0 0 0 0) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 code=Op.CALL( gas=0x9C40, - address=0xD61E0564FAB2B0DA5136F75DB579B663BD9F2BD8, + address=addr, value=0x1, args_offset=0x0, args_size=0x0, @@ -91,7 +86,6 @@ def test_internal_call_store_clears_oog( + Op.STOP, balance=10, nonce=0, - address=Address(0x30BFE899EF735D5AACA102952664A74B1DE046AF), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stTransactionTest/test_internal_call_store_clears_success.py b/tests/ported_static/stTransactionTest/test_internal_call_store_clears_success.py index c6b040c11fa..bdd47e999a2 100644 --- a/tests/ported_static/stTransactionTest/test_internal_call_store_clears_success.py +++ b/tests/ported_static/stTransactionTest/test_internal_call_store_clears_success.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_internal_call_store_clears_success( ) -> None: """Test_internal_call_store_clears_success.""" coinbase = Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) - sender = EOA( - key=0xF79127A3004ABDE26A4CBD80C428CB10F829FA11B54D36E7B326F4F4A5927ACF - ) + sender = pre.fund_eoa(amount=0x3B9ACA00) env = Environment( fee_recipient=coinbase, @@ -75,15 +72,13 @@ def test_internal_call_store_clears_success( 9: 12, }, nonce=0, - address=Address(0xD61E0564FAB2B0DA5136F75DB579B663BD9F2BD8), # noqa: E501 ) - pre[sender] = Account(balance=0x3B9ACA00) # Source: lll # { (CALL 100000 1 0 0 0 0) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 code=Op.CALL( gas=0x186A0, - address=0xD61E0564FAB2B0DA5136F75DB579B663BD9F2BD8, + address=addr, value=0x1, args_offset=0x0, args_size=0x0, @@ -93,7 +88,6 @@ def test_internal_call_store_clears_success( + Op.STOP, balance=10, nonce=0, - address=Address(0x4583A4F45BCB657469D752196A99ED546C8464EF), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stTransactionTest/test_no_src_account.py b/tests/ported_static/stTransactionTest/test_no_src_account.py index f7464c0f42b..1a5c3d9e625 100644 --- a/tests/ported_static/stTransactionTest/test_no_src_account.py +++ b/tests/ported_static/stTransactionTest/test_no_src_account.py @@ -273,7 +273,6 @@ def test_no_src_account( target = pre.deploy_contract( # noqa: F841 code=Op.STOP, nonce=0, - address=Address(0x4D7B154E5BF8310A4D8220C8EED80020E4B8F86F), # noqa: E501 ) expect_entries_: list[dict] = [ @@ -424,13 +423,13 @@ def test_no_src_account( 2: [], 3: [ AccessList( - address=Address(0x4D7B154E5BF8310A4D8220C8EED80020E4B8F86F), + address=target, storage_keys=[], ), ], 4: [ AccessList( - address=Address(0x4D7B154E5BF8310A4D8220C8EED80020E4B8F86F), + address=target, storage_keys=[ Hash( "0x0000000000000000000000000000000000000000000000000000000000000000" # noqa: E501 diff --git a/tests/ported_static/stTransactionTest/test_no_src_account1559.py b/tests/ported_static/stTransactionTest/test_no_src_account1559.py index 57a6d11a95d..d87e3e0e0be 100644 --- a/tests/ported_static/stTransactionTest/test_no_src_account1559.py +++ b/tests/ported_static/stTransactionTest/test_no_src_account1559.py @@ -189,7 +189,6 @@ def test_no_src_account1559( target = pre.deploy_contract( # noqa: F841 code=Op.STOP, nonce=0, - address=Address(0x4D7B154E5BF8310A4D8220C8EED80020E4B8F86F), # noqa: E501 ) expect_entries_: list[dict] = [ @@ -250,13 +249,13 @@ def test_no_src_account1559( 0: [], 1: [ AccessList( - address=Address(0x4D7B154E5BF8310A4D8220C8EED80020E4B8F86F), + address=target, storage_keys=[], ), ], 2: [ AccessList( - address=Address(0x4D7B154E5BF8310A4D8220C8EED80020E4B8F86F), + address=target, storage_keys=[ Hash( "0x0000000000000000000000000000000000000000000000000000000000000000" # noqa: E501 diff --git a/tests/ported_static/stTransactionTest/test_no_src_account_create.py b/tests/ported_static/stTransactionTest/test_no_src_account_create.py index 4f1774b43fa..eb70f1d3636 100644 --- a/tests/ported_static/stTransactionTest/test_no_src_account_create.py +++ b/tests/ported_static/stTransactionTest/test_no_src_account_create.py @@ -273,7 +273,6 @@ def test_no_src_account_create( addr = pre.deploy_contract( # noqa: F841 code=Op.STOP, nonce=0, - address=Address(0x4D7B154E5BF8310A4D8220C8EED80020E4B8F86F), # noqa: E501 ) expect_entries_: list[dict] = [ @@ -386,13 +385,13 @@ def test_no_src_account_create( 2: [], 3: [ AccessList( - address=Address(0x4D7B154E5BF8310A4D8220C8EED80020E4B8F86F), + address=addr, storage_keys=[], ), ], 4: [ AccessList( - address=Address(0x4D7B154E5BF8310A4D8220C8EED80020E4B8F86F), + address=addr, storage_keys=[ Hash( "0x0000000000000000000000000000000000000000000000000000000000000000" # noqa: E501 diff --git a/tests/ported_static/stTransactionTest/test_no_src_account_create1559.py b/tests/ported_static/stTransactionTest/test_no_src_account_create1559.py index cce70772d2d..8438ccb8900 100644 --- a/tests/ported_static/stTransactionTest/test_no_src_account_create1559.py +++ b/tests/ported_static/stTransactionTest/test_no_src_account_create1559.py @@ -8,7 +8,6 @@ import pytest from execution_testing import ( AccessList, - Account, Address, Alloc, Environment, @@ -162,7 +161,6 @@ ), ], ) -@pytest.mark.pre_alloc_mutable def test_no_src_account_create1559( state_test: StateTestFiller, pre: Alloc, @@ -173,7 +171,6 @@ def test_no_src_account_create1559( ) -> None: """Test_no_src_account_create1559.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - addr = Address(0xC22941800A5A392672DC35D8E088BA1BC90891B1) sender = pre.fund_eoa(amount=0) env = Environment( @@ -185,7 +182,7 @@ def test_no_src_account_create1559( gas_limit=89128960, ) - pre[addr] = Account(balance=0, nonce=24743) + addr = pre.fund_eoa(amount=0) # noqa: F841 expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/stTransactionTest/test_overflow_gas_require2.py b/tests/ported_static/stTransactionTest/test_overflow_gas_require2.py index 10476e24cec..6b78f079f48 100644 --- a/tests/ported_static/stTransactionTest/test_overflow_gas_require2.py +++ b/tests/ported_static/stTransactionTest/test_overflow_gas_require2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -30,7 +29,6 @@ ) @pytest.mark.valid_from("Cancun") @pytest.mark.valid_until("Prague") -@pytest.mark.pre_alloc_mutable def test_overflow_gas_require2( state_test: StateTestFiller, pre: Alloc, @@ -38,8 +36,8 @@ def test_overflow_gas_require2( ) -> None: """Test_overflow_gas_require2.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x50EADFB1030587AB3A993A6ECC073041FC3B45E119DAA31A13D78C7E209631A5 + sender = pre.fund_eoa( + amount=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF # noqa: E501 ) env = Environment( @@ -51,10 +49,6 @@ def test_overflow_gas_require2( gas_limit=9223372036854775807, ) - pre[sender] = Account( - balance=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF # noqa: E501 - ) - expect_entries_: list[dict] = [ { "network": ["Cancun"], diff --git a/tests/ported_static/stTransactionTest/test_point_at_infinity_ec_recover.py b/tests/ported_static/stTransactionTest/test_point_at_infinity_ec_recover.py index 3463557259e..59842816a0a 100644 --- a/tests/ported_static/stTransactionTest/test_point_at_infinity_ec_recover.py +++ b/tests/ported_static/stTransactionTest/test_point_at_infinity_ec_recover.py @@ -45,6 +45,7 @@ def test_point_at_infinity_ec_recover( gas_limit=89128960, ) + pre[sender] = Account(balance=0xDE0B6B3A7640000) # Source: yul # berlin { mstore(0, 0x6b8d2c81b11b2d699528dde488dbdf2f94293d0d33c32e347f255fa4a6c1f0a9) mstore(32, 0x1b) mstore(64, 0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798) mstore(96, 0x6b8d2c81b11b2d699528dde488dbdf2f94293d0d33c32e347f255fa4a6c1f0a9) sstore(0, call(1000000, 1, 0, 0, 128, 0, 32)) sstore(1, mload(0)) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -55,7 +56,6 @@ def test_point_at_infinity_ec_recover( nonce=0, address=Address(0xB9F36F1CB467544974BB7E0F5E1F0A499D4E6D7D), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stTransactionTest/test_store_clears_and_internal_call_store_clears_oog.py b/tests/ported_static/stTransactionTest/test_store_clears_and_internal_call_store_clears_oog.py index 85d6e337e9e..4a239006cf5 100644 --- a/tests/ported_static/stTransactionTest/test_store_clears_and_internal_call_store_clears_oog.py +++ b/tests/ported_static/stTransactionTest/test_store_clears_and_internal_call_store_clears_oog.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_store_clears_and_internal_call_store_clears_oog( ) -> None: """Test_store_clears_and_internal_call_store_clears_oog.""" coinbase = Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) - sender = EOA( - key=0x96C07046493EC8728482079AB999D2994420D9CF4D3491DFD06871B106D9D87B - ) + sender = pre.fund_eoa(amount=0x1DCD6500) env = Environment( fee_recipient=coinbase, @@ -75,9 +72,7 @@ def test_store_clears_and_internal_call_store_clears_oog( 9: 12, }, nonce=0, - address=Address(0xD61E0564FAB2B0DA5136F75DB579B663BD9F2BD8), # noqa: E501 ) - pre[sender] = Account(balance=0x1DCD6500) # Source: lll # {(SSTORE 0 0)(SSTORE 1 0)(SSTORE 2 0)(SSTORE 3 0) (CALL 20000 1 0 0 0 0) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -87,7 +82,7 @@ def test_store_clears_and_internal_call_store_clears_oog( + Op.SSTORE(key=0x3, value=0x0) + Op.CALL( gas=0x4E20, - address=0xD61E0564FAB2B0DA5136F75DB579B663BD9F2BD8, + address=addr, value=0x1, args_offset=0x0, args_size=0x0, @@ -98,7 +93,6 @@ def test_store_clears_and_internal_call_store_clears_oog( storage={0: 12, 1: 12, 2: 12, 3: 12, 4: 12}, balance=10, nonce=0, - address=Address(0xF6694E843901AE9F4C9303557D000708DF9581DC), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stTransactionTest/test_store_clears_and_internal_call_store_clears_success.py b/tests/ported_static/stTransactionTest/test_store_clears_and_internal_call_store_clears_success.py index bfd9ce583fd..3af9a80d962 100644 --- a/tests/ported_static/stTransactionTest/test_store_clears_and_internal_call_store_clears_success.py +++ b/tests/ported_static/stTransactionTest/test_store_clears_and_internal_call_store_clears_success.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_store_clears_and_internal_call_store_clears_success( ) -> None: """Test_store_clears_and_internal_call_store_clears_success.""" coinbase = Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) - sender = EOA( - key=0x96C07046493EC8728482079AB999D2994420D9CF4D3491DFD06871B106D9D87B - ) + sender = pre.fund_eoa(amount=0x1DCD6500) env = Environment( fee_recipient=coinbase, @@ -75,9 +72,7 @@ def test_store_clears_and_internal_call_store_clears_success( 9: 12, }, nonce=0, - address=Address(0xD61E0564FAB2B0DA5136F75DB579B663BD9F2BD8), # noqa: E501 ) - pre[sender] = Account(balance=0x1DCD6500) # Source: lll # {(SSTORE 0 0)(SSTORE 1 0)(SSTORE 2 0)(SSTORE 3 0) (CALL 50000 1 0 0 0 0) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -87,7 +82,7 @@ def test_store_clears_and_internal_call_store_clears_success( + Op.SSTORE(key=0x3, value=0x0) + Op.CALL( gas=0xC350, - address=0xD61E0564FAB2B0DA5136F75DB579B663BD9F2BD8, + address=addr, value=0x1, args_offset=0x0, args_size=0x0, @@ -98,7 +93,6 @@ def test_store_clears_and_internal_call_store_clears_success( storage={0: 12, 1: 12, 2: 12, 3: 12, 4: 12}, balance=10, nonce=0, - address=Address(0x8989E867016031A6730F2B84D5E47E1F0F83BDD9), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stTransactionTest/test_store_gas_on_create.py b/tests/ported_static/stTransactionTest/test_store_gas_on_create.py index cfccee01193..2d97f61d885 100644 --- a/tests/ported_static/stTransactionTest/test_store_gas_on_create.py +++ b/tests/ported_static/stTransactionTest/test_store_gas_on_create.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,9 +33,7 @@ def test_store_gas_on_create( ) -> None: """Test_store_gas_on_create.""" coinbase = Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0x17D78400) env = Environment( fee_recipient=coinbase, @@ -47,7 +44,6 @@ def test_store_gas_on_create( gas_limit=1000000, ) - pre[sender] = Account(balance=0x17D78400) # Source: lll # { (MSTORE 0 0x5a60fd55) (CREATE 0 28 4)} coinbase = pre.deploy_contract( # noqa: F841 diff --git a/tests/ported_static/stTransactionTest/test_suicides_and_internal_call_suicides_bonus_gas_at_call.py b/tests/ported_static/stTransactionTest/test_suicides_and_internal_call_suicides_bonus_gas_at_call.py index f9da244dc8f..8bbb8885c03 100644 --- a/tests/ported_static/stTransactionTest/test_suicides_and_internal_call_suicides_bonus_gas_at_call.py +++ b/tests/ported_static/stTransactionTest/test_suicides_and_internal_call_suicides_bonus_gas_at_call.py @@ -50,6 +50,7 @@ def test_suicides_and_internal_call_suicides_bonus_gas_at_call( gas_limit=1000000, ) + pre[sender] = Account(balance=0x5F5E100) # Source: lll # {(SELFDESTRUCT 0x0000000000000000000000000000000000000001)} contract_0 = pre.deploy_contract( # noqa: F841 @@ -57,22 +58,21 @@ def test_suicides_and_internal_call_suicides_bonus_gas_at_call( nonce=0, address=Address(0x0000000000000000000000000000000000000000), # noqa: E501 ) - pre[sender] = Account(balance=0x5F5E100) # Source: lll # {(CALL 0 0x0000000000000000000000000000000000000000 1 0 0 0 0) (SELFDESTRUCT 0)} # noqa: E501 contract_1 = pre.deploy_contract( # noqa: F841 code=Op.POP( Op.CALL( - gas=0x0, - address=0x0, + gas=contract_0, + address=contract_0, value=0x1, - args_offset=0x0, - args_size=0x0, - ret_offset=0x0, - ret_size=0x0, + args_offset=contract_0, + args_size=contract_0, + ret_offset=contract_0, + ret_size=contract_0, ) ) - + Op.SELFDESTRUCT(address=0x0) + + Op.SELFDESTRUCT(address=contract_0) + Op.STOP, balance=10, nonce=0, diff --git a/tests/ported_static/stTransactionTest/test_suicides_and_internal_call_suicides_bonus_gas_at_call_failed.py b/tests/ported_static/stTransactionTest/test_suicides_and_internal_call_suicides_bonus_gas_at_call_failed.py index 5abd6bcf419..a69e70b1e99 100644 --- a/tests/ported_static/stTransactionTest/test_suicides_and_internal_call_suicides_bonus_gas_at_call_failed.py +++ b/tests/ported_static/stTransactionTest/test_suicides_and_internal_call_suicides_bonus_gas_at_call_failed.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -37,9 +36,7 @@ def test_suicides_and_internal_call_suicides_bonus_gas_at_call_failed( coinbase = Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) contract_0 = Address(0x0000000000000000000000000000000000000000) contract_1 = Address(0xC94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0x5F5E100) env = Environment( fee_recipient=coinbase, @@ -57,26 +54,24 @@ def test_suicides_and_internal_call_suicides_bonus_gas_at_call_failed( nonce=0, address=Address(0x0000000000000000000000000000000000000000), # noqa: E501 ) - pre[sender] = Account(balance=0x5F5E100) # Source: lll # {(CALL 0 0x0000000000000000000000000000000000000000 0 0 0 0 0) (SELFDESTRUCT 0)} # noqa: E501 contract_1 = pre.deploy_contract( # noqa: F841 code=Op.POP( Op.CALL( - gas=0x0, - address=0x0, - value=0x0, - args_offset=0x0, - args_size=0x0, - ret_offset=0x0, - ret_size=0x0, + gas=contract_0, + address=contract_0, + value=contract_0, + args_offset=contract_0, + args_size=contract_0, + ret_offset=contract_0, + ret_size=contract_0, ) ) - + Op.SELFDESTRUCT(address=0x0) + + Op.SELFDESTRUCT(address=contract_0) + Op.STOP, balance=10, nonce=0, - address=Address(0xC94F5374FCE5EDBC8E2A8697C15331677E6EBF0B), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stTransactionTest/test_suicides_and_send_money_to_itself_ether_destroyed.py b/tests/ported_static/stTransactionTest/test_suicides_and_send_money_to_itself_ether_destroyed.py index 36ccb0e218a..b1ff4c8109a 100644 --- a/tests/ported_static/stTransactionTest/test_suicides_and_send_money_to_itself_ether_destroyed.py +++ b/tests/ported_static/stTransactionTest/test_suicides_and_send_money_to_itself_ether_destroyed.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_suicides_and_send_money_to_itself_ether_destroyed( ) -> None: """Test_suicides_and_send_money_to_itself_ether_destroyed.""" coinbase = Address(0xEB201D2887816E041F6E807E804F64F3A7A226FE) - sender = EOA( - key=0xD066C5DB28BDA8940CFC5CBEFD1556CBC89C69B19F6D1AAA9FAC69AEE4B4A1BF - ) + sender = pre.fund_eoa(amount=0x7459280) env = Environment( fee_recipient=coinbase, @@ -49,7 +46,6 @@ def test_suicides_and_send_money_to_itself_ether_destroyed( ) pre[coinbase] = Account(balance=0, nonce=1) - pre[sender] = Account(balance=0x7459280) # Source: lll # {(SELFDESTRUCT )} # noqa: E501 target = pre.deploy_contract( # noqa: F841 diff --git a/tests/ported_static/stTransactionTest/test_suicides_stop_after_suicide.py b/tests/ported_static/stTransactionTest/test_suicides_stop_after_suicide.py index 5a221300202..4eb7033f9fb 100644 --- a/tests/ported_static/stTransactionTest/test_suicides_stop_after_suicide.py +++ b/tests/ported_static/stTransactionTest/test_suicides_stop_after_suicide.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_suicides_stop_after_suicide( coinbase = Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) contract_0 = Address(0x0000000000000000000000000000000000000000) contract_1 = Address(0xC94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0x7459280) env = Environment( fee_recipient=coinbase, @@ -56,24 +53,22 @@ def test_suicides_stop_after_suicide( nonce=0, address=Address(0x0000000000000000000000000000000000000000), # noqa: E501 ) - pre[sender] = Account(balance=0x7459280) # Source: lll # {(SELFDESTRUCT 0) (CALL 30000 0x0000000000000000000000000000000000000000 0 0 0 0 0) } # noqa: E501 contract_1 = pre.deploy_contract( # noqa: F841 - code=Op.SELFDESTRUCT(address=0x0) + code=Op.SELFDESTRUCT(address=contract_0) + Op.CALL( gas=0x7530, - address=0x0, - value=0x0, - args_offset=0x0, - args_size=0x0, - ret_offset=0x0, - ret_size=0x0, + address=contract_0, + value=contract_0, + args_offset=contract_0, + args_size=contract_0, + ret_offset=contract_0, + ret_size=contract_0, ) + Op.STOP, balance=10000, nonce=0, - address=Address(0xC94F5374FCE5EDBC8E2A8697C15331677E6EBF0B), # noqa: E501 ) tx = Transaction( diff --git a/tests/ported_static/stTransactionTest/test_transaction_to_itself.py b/tests/ported_static/stTransactionTest/test_transaction_to_itself.py index 3ba8a85d2a6..320a0073f09 100644 --- a/tests/ported_static/stTransactionTest/test_transaction_to_itself.py +++ b/tests/ported_static/stTransactionTest/test_transaction_to_itself.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -25,16 +24,13 @@ ["state_tests/stTransactionTest/TransactionToItselfFiller.json"], ) @pytest.mark.valid_from("Cancun") -@pytest.mark.pre_alloc_mutable def test_transaction_to_itself( state_test: StateTestFiller, pre: Alloc, ) -> None: """Test_transaction_to_itself.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xF79127A3004ABDE26A4CBD80C428CB10F829FA11B54D36E7B326F4F4A5927ACF - ) + sender = pre.fund_eoa(amount=0x3B9ACA00) env = Environment( fee_recipient=coinbase, @@ -45,8 +41,6 @@ def test_transaction_to_itself( gas_limit=1000000, ) - pre[sender] = Account(balance=0x3B9ACA00) - tx = Transaction( sender=sender, to=sender, diff --git a/tests/ported_static/stTransitionTest/test_delegatecall_after_transition.py b/tests/ported_static/stTransitionTest/test_delegatecall_after_transition.py index 6c09a4be145..7eb47e04fbd 100644 --- a/tests/ported_static/stTransitionTest/test_delegatecall_after_transition.py +++ b/tests/ported_static/stTransitionTest/test_delegatecall_after_transition.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_delegatecall_after_transition( ) -> None: """Test_delegatecall_after_transition.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,6 +43,16 @@ def test_delegatecall_after_transition( gas_limit=30000000, ) + # Source: lll + # {[[ 1 ]] (CALLER) [[ 2 ]] (CALLVALUE) } + addr = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x1, value=Op.CALLER) + + Op.SSTORE(key=0x2, value=Op.CALLVALUE) + + Op.STOP, + balance=23, + nonce=0, + address=Address(0x000D3F6E432D6891A965FC56D39E729652A0762A), # noqa: E501 + ) # Source: lll # { [[ 0 ]] (DELEGATECALL 500000 0 64 0 2 ) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -53,7 +60,7 @@ def test_delegatecall_after_transition( key=0x0, value=Op.DELEGATECALL( gas=0x7A120, - address=0xD3F6E432D6891A965FC56D39E729652A0762A, + address=addr, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -63,19 +70,7 @@ def test_delegatecall_after_transition( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x55BB8A8658B848EBBBB73CBF6AC9D59D715AEC58), # noqa: E501 - ) - # Source: lll - # {[[ 1 ]] (CALLER) [[ 2 ]] (CALLVALUE) } - addr = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x1, value=Op.CALLER) - + Op.SSTORE(key=0x2, value=Op.CALLVALUE) - + Op.STOP, - balance=23, - nonce=0, - address=Address(0x000D3F6E432D6891A965FC56D39E729652A0762A), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, @@ -84,13 +79,6 @@ def test_delegatecall_after_transition( gas_limit=3000000, ) - post = { - target: Account( - storage={ - 0: 1, - 1: 0xEBAF50DEBF10E08302FE4280C32DF010463CA297, - }, - ), - } + post = {target: Account(storage={0: 1, 1: sender})} state_test(env=env, pre=pre, post=post, tx=tx) diff --git a/tests/ported_static/stTransitionTest/test_delegatecall_at_transition.py b/tests/ported_static/stTransitionTest/test_delegatecall_at_transition.py index bd67176cf93..ba6f1f7d9ec 100644 --- a/tests/ported_static/stTransitionTest/test_delegatecall_at_transition.py +++ b/tests/ported_static/stTransitionTest/test_delegatecall_at_transition.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_delegatecall_at_transition( ) -> None: """Test_delegatecall_at_transition.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,6 +43,16 @@ def test_delegatecall_at_transition( gas_limit=30000000, ) + # Source: lll + # {[[ 1 ]] (CALLER) [[ 2 ]] (CALLVALUE) } + addr = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x1, value=Op.CALLER) + + Op.SSTORE(key=0x2, value=Op.CALLVALUE) + + Op.STOP, + balance=23, + nonce=0, + address=Address(0x000D3F6E432D6891A965FC56D39E729652A0762A), # noqa: E501 + ) # Source: lll # { [[ 0 ]] (DELEGATECALL 500000 0 64 0 2 ) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -53,7 +60,7 @@ def test_delegatecall_at_transition( key=0x0, value=Op.DELEGATECALL( gas=0x7A120, - address=0xD3F6E432D6891A965FC56D39E729652A0762A, + address=addr, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -63,19 +70,7 @@ def test_delegatecall_at_transition( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x55BB8A8658B848EBBBB73CBF6AC9D59D715AEC58), # noqa: E501 - ) - # Source: lll - # {[[ 1 ]] (CALLER) [[ 2 ]] (CALLVALUE) } - addr = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x1, value=Op.CALLER) - + Op.SSTORE(key=0x2, value=Op.CALLVALUE) - + Op.STOP, - balance=23, - nonce=0, - address=Address(0x000D3F6E432D6891A965FC56D39E729652A0762A), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, @@ -84,13 +79,6 @@ def test_delegatecall_at_transition( gas_limit=3000000, ) - post = { - target: Account( - storage={ - 0: 1, - 1: 0xEBAF50DEBF10E08302FE4280C32DF010463CA297, - }, - ), - } + post = {target: Account(storage={0: 1, 1: sender})} state_test(env=env, pre=pre, post=post, tx=tx) diff --git a/tests/ported_static/stTransitionTest/test_delegatecall_before_transition.py b/tests/ported_static/stTransitionTest/test_delegatecall_before_transition.py index 3efa5083323..d4bbf366f36 100644 --- a/tests/ported_static/stTransitionTest/test_delegatecall_before_transition.py +++ b/tests/ported_static/stTransitionTest/test_delegatecall_before_transition.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_delegatecall_before_transition( ) -> None: """Test_delegatecall_before_transition.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xE04D1AC7DDDA0C98397D56A0B501E960D4CD325A39286919AC23C1A07009A869 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -46,6 +43,16 @@ def test_delegatecall_before_transition( gas_limit=30000000, ) + # Source: lll + # {[[ 1 ]] (CALLER) [[ 2 ]] (CALLVALUE) } + addr = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x1, value=Op.CALLER) + + Op.SSTORE(key=0x2, value=Op.CALLVALUE) + + Op.STOP, + balance=23, + nonce=0, + address=Address(0x000D3F6E432D6891A965FC56D39E729652A0762A), # noqa: E501 + ) # Source: lll # { [[ 0 ]] (DELEGATECALL 500000 0 64 0 2 ) } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -53,7 +60,7 @@ def test_delegatecall_before_transition( key=0x0, value=Op.DELEGATECALL( gas=0x7A120, - address=0xD3F6E432D6891A965FC56D39E729652A0762A, + address=addr, args_offset=0x0, args_size=0x40, ret_offset=0x0, @@ -63,19 +70,7 @@ def test_delegatecall_before_transition( + Op.STOP, balance=0xDE0B6B3A7640000, nonce=0, - address=Address(0x55BB8A8658B848EBBBB73CBF6AC9D59D715AEC58), # noqa: E501 - ) - # Source: lll - # {[[ 1 ]] (CALLER) [[ 2 ]] (CALLVALUE) } - addr = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x1, value=Op.CALLER) - + Op.SSTORE(key=0x2, value=Op.CALLVALUE) - + Op.STOP, - balance=23, - nonce=0, - address=Address(0x000D3F6E432D6891A965FC56D39E729652A0762A), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) tx = Transaction( sender=sender, @@ -84,13 +79,6 @@ def test_delegatecall_before_transition( gas_limit=3000000, ) - post = { - target: Account( - storage={ - 0: 1, - 1: 0xEBAF50DEBF10E08302FE4280C32DF010463CA297, - }, - ), - } + post = {target: Account(storage={0: 1, 1: sender})} state_test(env=env, pre=pre, post=post, tx=tx) diff --git a/tests/ported_static/stWalletTest/test_day_limit_construction.py b/tests/ported_static/stWalletTest/test_day_limit_construction.py index 9a10a78a2c4..4206fa7b772 100644 --- a/tests/ported_static/stWalletTest/test_day_limit_construction.py +++ b/tests/ported_static/stWalletTest/test_day_limit_construction.py @@ -93,7 +93,7 @@ def test_day_limit_construction( storage={ 0: 1, 1: 1, - 3: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, + 3: sender, 263: 0, 0x6E369836487C234B9E553EF3F787C2D8865520739D340C67B3D251A33986E58D: 1, # noqa: E501 }, diff --git a/tests/ported_static/stWalletTest/test_day_limit_construction_oog.py b/tests/ported_static/stWalletTest/test_day_limit_construction_oog.py index 9bf883cb2e7..7f48e931a50 100644 --- a/tests/ported_static/stWalletTest/test_day_limit_construction_oog.py +++ b/tests/ported_static/stWalletTest/test_day_limit_construction_oog.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -32,9 +31,7 @@ def test_day_limit_construction_oog( ) -> None: """Test_day_limit_construction_oog.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A75EF08F, nonce=1) env = Environment( fee_recipient=coinbase, @@ -45,8 +42,6 @@ def test_day_limit_construction_oog( gas_limit=10000000, ) - pre[sender] = Account(balance=0xDE0B6B3A75EF08F, nonce=1) - tx = Transaction( sender=sender, to=None, diff --git a/tests/ported_static/stWalletTest/test_day_limit_construction_partial.py b/tests/ported_static/stWalletTest/test_day_limit_construction_partial.py index 810cf7967c4..0cd3bb580e1 100644 --- a/tests/ported_static/stWalletTest/test_day_limit_construction_partial.py +++ b/tests/ported_static/stWalletTest/test_day_limit_construction_partial.py @@ -65,7 +65,7 @@ def test_day_limit_construction_partial( storage={ 0: 1, 1: 1, - 3: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, + 3: sender, 0x6E369836487C234B9E553EF3F787C2D8865520739D340C67B3D251A33986E58D: 1, # noqa: E501 }, code=bytes.fromhex( diff --git a/tests/ported_static/stWalletTest/test_day_limit_reset_spent_today.py b/tests/ported_static/stWalletTest/test_day_limit_reset_spent_today.py index 0429cb95850..8ca44bb9093 100644 --- a/tests/ported_static/stWalletTest/test_day_limit_reset_spent_today.py +++ b/tests/ported_static/stWalletTest/test_day_limit_reset_spent_today.py @@ -56,7 +56,7 @@ def test_day_limit_reset_spent_today( storage={ 0: 1, 1: 1, - 3: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, + 3: sender, 260: 1, 261: 2, 263: 0xC22E4, @@ -82,7 +82,7 @@ def test_day_limit_reset_spent_today( storage={ 0: 1, 1: 1, - 3: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, + 3: sender, 260: 2, 261: 2, 263: 0xC22E4, diff --git a/tests/ported_static/stWalletTest/test_day_limit_set_daily_limit.py b/tests/ported_static/stWalletTest/test_day_limit_set_daily_limit.py index 0d6f7e329ca..7001d5c4d51 100644 --- a/tests/ported_static/stWalletTest/test_day_limit_set_daily_limit.py +++ b/tests/ported_static/stWalletTest/test_day_limit_set_daily_limit.py @@ -57,7 +57,7 @@ def test_day_limit_set_daily_limit( storage={ 0: 1, 1: 1, - 3: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, + 3: sender, 263: 0xC22E4, 0x6E369836487C234B9E553EF3F787C2D8865520739D340C67B3D251A33986E58D: 1, # noqa: E501 }, @@ -81,7 +81,7 @@ def test_day_limit_set_daily_limit( storage={ 0: 1, 1: 1, - 3: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, + 3: sender, 260: 1, 261: 2, 263: 0xC22E4, diff --git a/tests/ported_static/stWalletTest/test_day_limit_set_daily_limit_no_data.py b/tests/ported_static/stWalletTest/test_day_limit_set_daily_limit_no_data.py index 50ecda4f17e..9f315b1ee78 100644 --- a/tests/ported_static/stWalletTest/test_day_limit_set_daily_limit_no_data.py +++ b/tests/ported_static/stWalletTest/test_day_limit_set_daily_limit_no_data.py @@ -56,7 +56,7 @@ def test_day_limit_set_daily_limit_no_data( storage={ 0: 1, 1: 1, - 3: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, + 3: sender, 263: 0xC22E4, 0x6E369836487C234B9E553EF3F787C2D8865520739D340C67B3D251A33986E58D: 1, # noqa: E501 }, @@ -80,7 +80,7 @@ def test_day_limit_set_daily_limit_no_data( storage={ 0: 1, 1: 1, - 3: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, + 3: sender, 260: 1, 263: 0xC22E4, 0x6E369836487C234B9E553EF3F787C2D8865520739D340C67B3D251A33986E58D: 1, # noqa: E501 diff --git a/tests/ported_static/stWalletTest/test_multi_owned_add_owner.py b/tests/ported_static/stWalletTest/test_multi_owned_add_owner.py index b0c190b6df0..71b81edd443 100644 --- a/tests/ported_static/stWalletTest/test_multi_owned_add_owner.py +++ b/tests/ported_static/stWalletTest/test_multi_owned_add_owner.py @@ -47,6 +47,7 @@ def test_multi_owned_add_owner( gas_limit=100000000, ) + pre[sender] = Account(balance=0xDE0B6B3A75EF08F, nonce=1) # Source: raw # 0x606060405236156100775760e060020a6000350463173825d981146100795780632f54bf6e146100d55780634123cb6b146100f95780637065cb4814610102578063746c917114610136578063b75c7dc61461013f578063ba51a6df1461016f578063c2cf7326146101a3578063f00d4b5d146101e3575b005b610077600435600060003643604051808484808284375050509091019081526040519081900360200190209050610529815b600160a060020a033316600090815261010260205260408120548180808381141561066f57610806565b61021c6004355b600160a060020a0316600090815261010260205260408120541190565b61021c60015481565b610077600435600036436040518084848082843750505090910190815260405190819003602001902090506104a1816100ab565b61021c60005481565b610077600435600160a060020a033316600090815261010260205260408120549080808381141561022e576102b0565b610077600435600036436040518084848082843750505090910190815260405190819003602001902090506105e8816100ab565b61021c600435602435600082815261010360209081526040808320600160a060020a03851684526101029092528220548290818181141561064157610665565b61007760043560243560006000364360405180848480828437505050909101908152604051908190036020019020905061033a816100ab565b60408051918252519081900360200190f35b5050506000828152610103602052604081206001810154600284900a92908316819011156102b05781546001838101805492909101845590849003905560408051600160a060020a03331681526020810187905281517fc7fb647e59b18047309aa15aad418e5d7ca96d173ad704f1031a2c3d7591734b929181900390910190a15b5050505050565b600160a060020a038316600283610100811015610002570155600160a060020a0384811660008181526101026020908152604080832083905593871680835291849020869055835192835282015281517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c929181900390910190a15b505b505050565b1561033357610348836100dc565b156103535750610335565b600160a060020a03841660009081526101026020526040812054925082141561037c5750610335565b6102b75b6101045460005b818110156107b557610104805482908110156100025760009182526000805160206108ea8339815191520154146103fa576101048054610103916000918490811015610002576000805160206108ea83398151915201548252506020919091526040812081815560018101829055600201555b600101610387565b60018054810190819055600160a060020a038316906002906101008110156100025790900160005081905550600160005054610102600050600084600160a060020a03168152602001908152602001600020600050819055507f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c3826040518082600160a060020a0316815260200191505060405180910390a15b505b50565b1561049c576104af826100dc565b156104ba575061049e565b6104c2610380565b60015460fa90106104d7576104d56104ec565b505b60015460fa9010610402575061049e565b6105a65b600060015b6001548110156107ef575b6001548110801561051c5750600281610100811015610002570154600014155b1561080f576001016104fc565b1561033557600160a060020a038316600090815261010260205260408120549250821415610557575061049c565b6001600160005054036000600050541115610572575061049c565b600060028361010081101561000257508301819055600160a060020a038416815261010260205260408120556104e8610380565b5060408051600160a060020a038516815290517f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da9181900360200190a1505050565b1561049c576001548211156105fd575061049e565b600082905561060a610380565b6040805183815290517facbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da9181900360200190a15050565b506001830154600282900a908116600014156106605760009450610665565b600194505b5050505092915050565b60008681526101036020526040812080549094509092508214156106f85781548355600183810183905561010480549182018082558280158290116106c7578183600052602060002091820191016106c791906107db565b505050600284018190556101048054889290811015610002576000919091526000805160206108ea83398151915201555b506001820154600284900a908116600014156108065760408051600160a060020a03331681526020810188905281517fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda929181900390910190a18254600190116107f35760008681526101036020526040902060020154610104805490919081101561000257604060009081206000805160206108ea83398151915292909201819055808255600180830182905560029092015595506108069050565b6101048054600080835591909152610335906000805160206108ea833981519152908101905b808211156107ef57600081556001016107db565b5090565b8254600019018355600183018054821790555b50505050919050565b5b6001805411801561083257506001546002906101008110156100025701546000145b156108465760018054600019019055610810565b600154811080156108695750600154600290610100811015610002570154600014155b801561088357506002816101008110156100025701546000145b156108e457600154600290610100811015610002578101549082610100811015610002578101919091558190610102906000908361010081101561000257810154825260209290925260408120929092556001546101008110156100025701555b6104f156004c0be60200faa20559308cb7b5a1bb3255c16cb1cab91f525b5ae7a03d02fabe # noqa: E501 contract_0 = pre.deploy_contract( # noqa: F841 @@ -56,14 +57,13 @@ def test_multi_owned_add_owner( storage={ 0: 1, 1: 1, - 3: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, + 3: sender, 0x6E369836487C234B9E553EF3F787C2D8865520739D340C67B3D251A33986E58D: 1, # noqa: E501 }, balance=100, nonce=0, address=Address(0x6295EE1B4F6DD65047762F924ECD367C17EABF8F), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A75EF08F, nonce=1) tx = Transaction( sender=sender, @@ -80,7 +80,7 @@ def test_multi_owned_add_owner( storage={ 0: 1, 1: 2, - 3: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, + 3: sender, 4: 0x3FB1CD2CD96C6D5C0B5EB3322D807B34482481D4, 0x6E369836487C234B9E553EF3F787C2D8865520739D340C67B3D251A33986E58D: 1, # noqa: E501 0xD3E69D8C7F41F7AEAF8130DDC53047AEEE8CB46A73D6BAE86B7E7D6BF8312E6B: 2, # noqa: E501 diff --git a/tests/ported_static/stWalletTest/test_multi_owned_add_owner_add_myself.py b/tests/ported_static/stWalletTest/test_multi_owned_add_owner_add_myself.py index 069ec89c9fb..da52d06e983 100644 --- a/tests/ported_static/stWalletTest/test_multi_owned_add_owner_add_myself.py +++ b/tests/ported_static/stWalletTest/test_multi_owned_add_owner_add_myself.py @@ -47,6 +47,7 @@ def test_multi_owned_add_owner_add_myself( gas_limit=100000000, ) + pre[sender] = Account(balance=0xDE0B6B3A75EF08F, nonce=1) # Source: raw # 0x606060405236156100775760e060020a6000350463173825d981146100795780632f54bf6e146100d55780634123cb6b146100f95780637065cb4814610102578063746c917114610136578063b75c7dc61461013f578063ba51a6df1461016f578063c2cf7326146101a3578063f00d4b5d146101e3575b005b610077600435600060003643604051808484808284375050509091019081526040519081900360200190209050610529815b600160a060020a033316600090815261010260205260408120548180808381141561066f57610806565b61021c6004355b600160a060020a0316600090815261010260205260408120541190565b61021c60015481565b610077600435600036436040518084848082843750505090910190815260405190819003602001902090506104a1816100ab565b61021c60005481565b610077600435600160a060020a033316600090815261010260205260408120549080808381141561022e576102b0565b610077600435600036436040518084848082843750505090910190815260405190819003602001902090506105e8816100ab565b61021c600435602435600082815261010360209081526040808320600160a060020a03851684526101029092528220548290818181141561064157610665565b61007760043560243560006000364360405180848480828437505050909101908152604051908190036020019020905061033a816100ab565b60408051918252519081900360200190f35b5050506000828152610103602052604081206001810154600284900a92908316819011156102b05781546001838101805492909101845590849003905560408051600160a060020a03331681526020810187905281517fc7fb647e59b18047309aa15aad418e5d7ca96d173ad704f1031a2c3d7591734b929181900390910190a15b5050505050565b600160a060020a038316600283610100811015610002570155600160a060020a0384811660008181526101026020908152604080832083905593871680835291849020869055835192835282015281517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c929181900390910190a15b505b505050565b1561033357610348836100dc565b156103535750610335565b600160a060020a03841660009081526101026020526040812054925082141561037c5750610335565b6102b75b6101045460005b818110156107b557610104805482908110156100025760009182526000805160206108ea8339815191520154146103fa576101048054610103916000918490811015610002576000805160206108ea83398151915201548252506020919091526040812081815560018101829055600201555b600101610387565b60018054810190819055600160a060020a038316906002906101008110156100025790900160005081905550600160005054610102600050600084600160a060020a03168152602001908152602001600020600050819055507f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c3826040518082600160a060020a0316815260200191505060405180910390a15b505b50565b1561049c576104af826100dc565b156104ba575061049e565b6104c2610380565b60015460fa90106104d7576104d56104ec565b505b60015460fa9010610402575061049e565b6105a65b600060015b6001548110156107ef575b6001548110801561051c5750600281610100811015610002570154600014155b1561080f576001016104fc565b1561033557600160a060020a038316600090815261010260205260408120549250821415610557575061049c565b6001600160005054036000600050541115610572575061049c565b600060028361010081101561000257508301819055600160a060020a038416815261010260205260408120556104e8610380565b5060408051600160a060020a038516815290517f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da9181900360200190a1505050565b1561049c576001548211156105fd575061049e565b600082905561060a610380565b6040805183815290517facbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da9181900360200190a15050565b506001830154600282900a908116600014156106605760009450610665565b600194505b5050505092915050565b60008681526101036020526040812080549094509092508214156106f85781548355600183810183905561010480549182018082558280158290116106c7578183600052602060002091820191016106c791906107db565b505050600284018190556101048054889290811015610002576000919091526000805160206108ea83398151915201555b506001820154600284900a908116600014156108065760408051600160a060020a03331681526020810188905281517fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda929181900390910190a18254600190116107f35760008681526101036020526040902060020154610104805490919081101561000257604060009081206000805160206108ea83398151915292909201819055808255600180830182905560029092015595506108069050565b6101048054600080835591909152610335906000805160206108ea833981519152908101905b808211156107ef57600081556001016107db565b5090565b8254600019018355600183018054821790555b50505050919050565b5b6001805411801561083257506001546002906101008110156100025701546000145b156108465760018054600019019055610810565b600154811080156108695750600154600290610100811015610002570154600014155b801561088357506002816101008110156100025701546000145b156108e457600154600290610100811015610002578101549082610100811015610002578101919091558190610102906000908361010081101561000257810154825260209290925260408120929092556001546101008110156100025701555b6104f156004c0be60200faa20559308cb7b5a1bb3255c16cb1cab91f525b5ae7a03d02fabe # noqa: E501 contract_0 = pre.deploy_contract( # noqa: F841 @@ -56,14 +57,13 @@ def test_multi_owned_add_owner_add_myself( storage={ 0: 1, 1: 1, - 3: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, + 3: sender, 0x6E369836487C234B9E553EF3F787C2D8865520739D340C67B3D251A33986E58D: 1, # noqa: E501 }, balance=100, nonce=0, address=Address(0x6295EE1B4F6DD65047762F924ECD367C17EABF8F), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A75EF08F, nonce=1) tx = Transaction( sender=sender, @@ -79,7 +79,7 @@ def test_multi_owned_add_owner_add_myself( storage={ 0: 1, 1: 1, - 3: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, + 3: sender, 260: 1, 0x6E369836487C234B9E553EF3F787C2D8865520739D340C67B3D251A33986E58D: 1, # noqa: E501 }, diff --git a/tests/ported_static/stWalletTest/test_multi_owned_change_owner.py b/tests/ported_static/stWalletTest/test_multi_owned_change_owner.py index 2c5d814fab0..7f24fa0623c 100644 --- a/tests/ported_static/stWalletTest/test_multi_owned_change_owner.py +++ b/tests/ported_static/stWalletTest/test_multi_owned_change_owner.py @@ -47,6 +47,7 @@ def test_multi_owned_change_owner( gas_limit=100000000, ) + pre[sender] = Account(balance=0xDE0B6B3A75EF08F, nonce=1) # Source: raw # 0x606060405236156100775760e060020a6000350463173825d981146100795780632f54bf6e146100d55780634123cb6b146100f95780637065cb4814610102578063746c917114610136578063b75c7dc61461013f578063ba51a6df1461016f578063c2cf7326146101a3578063f00d4b5d146101e3575b005b610077600435600060003643604051808484808284375050509091019081526040519081900360200190209050610529815b600160a060020a033316600090815261010260205260408120548180808381141561066f57610806565b61021c6004355b600160a060020a0316600090815261010260205260408120541190565b61021c60015481565b610077600435600036436040518084848082843750505090910190815260405190819003602001902090506104a1816100ab565b61021c60005481565b610077600435600160a060020a033316600090815261010260205260408120549080808381141561022e576102b0565b610077600435600036436040518084848082843750505090910190815260405190819003602001902090506105e8816100ab565b61021c600435602435600082815261010360209081526040808320600160a060020a03851684526101029092528220548290818181141561064157610665565b61007760043560243560006000364360405180848480828437505050909101908152604051908190036020019020905061033a816100ab565b60408051918252519081900360200190f35b5050506000828152610103602052604081206001810154600284900a92908316819011156102b05781546001838101805492909101845590849003905560408051600160a060020a03331681526020810187905281517fc7fb647e59b18047309aa15aad418e5d7ca96d173ad704f1031a2c3d7591734b929181900390910190a15b5050505050565b600160a060020a038316600283610100811015610002570155600160a060020a0384811660008181526101026020908152604080832083905593871680835291849020869055835192835282015281517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c929181900390910190a15b505b505050565b1561033357610348836100dc565b156103535750610335565b600160a060020a03841660009081526101026020526040812054925082141561037c5750610335565b6102b75b6101045460005b818110156107b557610104805482908110156100025760009182526000805160206108ea8339815191520154146103fa576101048054610103916000918490811015610002576000805160206108ea83398151915201548252506020919091526040812081815560018101829055600201555b600101610387565b60018054810190819055600160a060020a038316906002906101008110156100025790900160005081905550600160005054610102600050600084600160a060020a03168152602001908152602001600020600050819055507f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c3826040518082600160a060020a0316815260200191505060405180910390a15b505b50565b1561049c576104af826100dc565b156104ba575061049e565b6104c2610380565b60015460fa90106104d7576104d56104ec565b505b60015460fa9010610402575061049e565b6105a65b600060015b6001548110156107ef575b6001548110801561051c5750600281610100811015610002570154600014155b1561080f576001016104fc565b1561033557600160a060020a038316600090815261010260205260408120549250821415610557575061049c565b6001600160005054036000600050541115610572575061049c565b600060028361010081101561000257508301819055600160a060020a038416815261010260205260408120556104e8610380565b5060408051600160a060020a038516815290517f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da9181900360200190a1505050565b1561049c576001548211156105fd575061049e565b600082905561060a610380565b6040805183815290517facbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da9181900360200190a15050565b506001830154600282900a908116600014156106605760009450610665565b600194505b5050505092915050565b60008681526101036020526040812080549094509092508214156106f85781548355600183810183905561010480549182018082558280158290116106c7578183600052602060002091820191016106c791906107db565b505050600284018190556101048054889290811015610002576000919091526000805160206108ea83398151915201555b506001820154600284900a908116600014156108065760408051600160a060020a03331681526020810188905281517fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda929181900390910190a18254600190116107f35760008681526101036020526040902060020154610104805490919081101561000257604060009081206000805160206108ea83398151915292909201819055808255600180830182905560029092015595506108069050565b6101048054600080835591909152610335906000805160206108ea833981519152908101905b808211156107ef57600081556001016107db565b5090565b8254600019018355600183018054821790555b50505050919050565b5b6001805411801561083257506001546002906101008110156100025701546000145b156108465760018054600019019055610810565b600154811080156108695750600154600290610100811015610002570154600014155b801561088357506002816101008110156100025701546000145b156108e457600154600290610100811015610002578101549082610100811015610002578101919091558190610102906000908361010081101561000257810154825260209290925260408120929092556001546101008110156100025701555b6104f156004c0be60200faa20559308cb7b5a1bb3255c16cb1cab91f525b5ae7a03d02fabe # noqa: E501 contract_0 = pre.deploy_contract( # noqa: F841 @@ -56,14 +57,13 @@ def test_multi_owned_change_owner( storage={ 0: 1, 1: 1, - 3: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, + 3: sender, 0x6E369836487C234B9E553EF3F787C2D8865520739D340C67B3D251A33986E58D: 1, # noqa: E501 }, balance=100, nonce=0, address=Address(0x6295EE1B4F6DD65047762F924ECD367C17EABF8F), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A75EF08F, nonce=1) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stWalletTest/test_multi_owned_change_owner_from_not_owner.py b/tests/ported_static/stWalletTest/test_multi_owned_change_owner_from_not_owner.py index 264af9fef9c..cdd7d00fd01 100644 --- a/tests/ported_static/stWalletTest/test_multi_owned_change_owner_from_not_owner.py +++ b/tests/ported_static/stWalletTest/test_multi_owned_change_owner_from_not_owner.py @@ -47,6 +47,7 @@ def test_multi_owned_change_owner_from_not_owner( gas_limit=100000000, ) + pre[sender] = Account(balance=0xDE0B6B3A75EF08F, nonce=1) # Source: raw # 0x606060405236156100775760e060020a6000350463173825d981146100795780632f54bf6e146100d55780634123cb6b146100f95780637065cb4814610102578063746c917114610136578063b75c7dc61461013f578063ba51a6df1461016f578063c2cf7326146101a3578063f00d4b5d146101e3575b005b610077600435600060003643604051808484808284375050509091019081526040519081900360200190209050610529815b600160a060020a033316600090815261010260205260408120548180808381141561066f57610806565b61021c6004355b600160a060020a0316600090815261010260205260408120541190565b61021c60015481565b610077600435600036436040518084848082843750505090910190815260405190819003602001902090506104a1816100ab565b61021c60005481565b610077600435600160a060020a033316600090815261010260205260408120549080808381141561022e576102b0565b610077600435600036436040518084848082843750505090910190815260405190819003602001902090506105e8816100ab565b61021c600435602435600082815261010360209081526040808320600160a060020a03851684526101029092528220548290818181141561064157610665565b61007760043560243560006000364360405180848480828437505050909101908152604051908190036020019020905061033a816100ab565b60408051918252519081900360200190f35b5050506000828152610103602052604081206001810154600284900a92908316819011156102b05781546001838101805492909101845590849003905560408051600160a060020a03331681526020810187905281517fc7fb647e59b18047309aa15aad418e5d7ca96d173ad704f1031a2c3d7591734b929181900390910190a15b5050505050565b600160a060020a038316600283610100811015610002570155600160a060020a0384811660008181526101026020908152604080832083905593871680835291849020869055835192835282015281517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c929181900390910190a15b505b505050565b1561033357610348836100dc565b156103535750610335565b600160a060020a03841660009081526101026020526040812054925082141561037c5750610335565b6102b75b6101045460005b818110156107b557610104805482908110156100025760009182526000805160206108ea8339815191520154146103fa576101048054610103916000918490811015610002576000805160206108ea83398151915201548252506020919091526040812081815560018101829055600201555b600101610387565b60018054810190819055600160a060020a038316906002906101008110156100025790900160005081905550600160005054610102600050600084600160a060020a03168152602001908152602001600020600050819055507f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c3826040518082600160a060020a0316815260200191505060405180910390a15b505b50565b1561049c576104af826100dc565b156104ba575061049e565b6104c2610380565b60015460fa90106104d7576104d56104ec565b505b60015460fa9010610402575061049e565b6105a65b600060015b6001548110156107ef575b6001548110801561051c5750600281610100811015610002570154600014155b1561080f576001016104fc565b1561033557600160a060020a038316600090815261010260205260408120549250821415610557575061049c565b6001600160005054036000600050541115610572575061049c565b600060028361010081101561000257508301819055600160a060020a038416815261010260205260408120556104e8610380565b5060408051600160a060020a038516815290517f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da9181900360200190a1505050565b1561049c576001548211156105fd575061049e565b600082905561060a610380565b6040805183815290517facbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da9181900360200190a15050565b506001830154600282900a908116600014156106605760009450610665565b600194505b5050505092915050565b60008681526101036020526040812080549094509092508214156106f85781548355600183810183905561010480549182018082558280158290116106c7578183600052602060002091820191016106c791906107db565b505050600284018190556101048054889290811015610002576000919091526000805160206108ea83398151915201555b506001820154600284900a908116600014156108065760408051600160a060020a03331681526020810188905281517fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda929181900390910190a18254600190116107f35760008681526101036020526040902060020154610104805490919081101561000257604060009081206000805160206108ea83398151915292909201819055808255600180830182905560029092015595506108069050565b6101048054600080835591909152610335906000805160206108ea833981519152908101905b808211156107ef57600081556001016107db565b5090565b8254600019018355600183018054821790555b50505050919050565b5b6001805411801561083257506001546002906101008110156100025701546000145b156108465760018054600019019055610810565b600154811080156108695750600154600290610100811015610002570154600014155b801561088357506002816101008110156100025701546000145b156108e457600154600290610100811015610002578101549082610100811015610002578101919091558190610102906000908361010081101561000257810154825260209290925260408120929092556001546101008110156100025701555b6104f156004c0be60200faa20559308cb7b5a1bb3255c16cb1cab91f525b5ae7a03d02fabe # noqa: E501 contract_0 = pre.deploy_contract( # noqa: F841 @@ -56,14 +57,13 @@ def test_multi_owned_change_owner_from_not_owner( storage={ 0: 1, 1: 1, - 3: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, + 3: sender, 0x6E369836487C234B9E553EF3F787C2D8865520739D340C67B3D251A33986E58D: 1, # noqa: E501 }, balance=100, nonce=0, address=Address(0x6295EE1B4F6DD65047762F924ECD367C17EABF8F), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A75EF08F, nonce=1) tx = Transaction( sender=sender, @@ -81,7 +81,7 @@ def test_multi_owned_change_owner_from_not_owner( storage={ 0: 1, 1: 1, - 3: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, + 3: sender, 260: 1, 0x6E369836487C234B9E553EF3F787C2D8865520739D340C67B3D251A33986E58D: 1, # noqa: E501 }, diff --git a/tests/ported_static/stWalletTest/test_multi_owned_change_owner_no_argument.py b/tests/ported_static/stWalletTest/test_multi_owned_change_owner_no_argument.py index 19ffb07c6ad..abd28c4ca20 100644 --- a/tests/ported_static/stWalletTest/test_multi_owned_change_owner_no_argument.py +++ b/tests/ported_static/stWalletTest/test_multi_owned_change_owner_no_argument.py @@ -46,6 +46,7 @@ def test_multi_owned_change_owner_no_argument( gas_limit=10000000, ) + pre[sender] = Account(balance=0xDE0B6B3A75EF08F, nonce=1) # Source: raw # 0x606060405236156100775760e060020a6000350463173825d981146100795780632f54bf6e146100d55780634123cb6b146100f95780637065cb4814610102578063746c917114610136578063b75c7dc61461013f578063ba51a6df1461016f578063c2cf7326146101a3578063f00d4b5d146101e3575b005b610077600435600060003643604051808484808284375050509091019081526040519081900360200190209050610529815b600160a060020a033316600090815261010260205260408120548180808381141561066f57610806565b61021c6004355b600160a060020a0316600090815261010260205260408120541190565b61021c60015481565b610077600435600036436040518084848082843750505090910190815260405190819003602001902090506104a1816100ab565b61021c60005481565b610077600435600160a060020a033316600090815261010260205260408120549080808381141561022e576102b0565b610077600435600036436040518084848082843750505090910190815260405190819003602001902090506105e8816100ab565b61021c600435602435600082815261010360209081526040808320600160a060020a03851684526101029092528220548290818181141561064157610665565b61007760043560243560006000364360405180848480828437505050909101908152604051908190036020019020905061033a816100ab565b60408051918252519081900360200190f35b5050506000828152610103602052604081206001810154600284900a92908316819011156102b05781546001838101805492909101845590849003905560408051600160a060020a03331681526020810187905281517fc7fb647e59b18047309aa15aad418e5d7ca96d173ad704f1031a2c3d7591734b929181900390910190a15b5050505050565b600160a060020a038316600283610100811015610002570155600160a060020a0384811660008181526101026020908152604080832083905593871680835291849020869055835192835282015281517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c929181900390910190a15b505b505050565b1561033357610348836100dc565b156103535750610335565b600160a060020a03841660009081526101026020526040812054925082141561037c5750610335565b6102b75b6101045460005b818110156107b557610104805482908110156100025760009182526000805160206108ea8339815191520154146103fa576101048054610103916000918490811015610002576000805160206108ea83398151915201548252506020919091526040812081815560018101829055600201555b600101610387565b60018054810190819055600160a060020a038316906002906101008110156100025790900160005081905550600160005054610102600050600084600160a060020a03168152602001908152602001600020600050819055507f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c3826040518082600160a060020a0316815260200191505060405180910390a15b505b50565b1561049c576104af826100dc565b156104ba575061049e565b6104c2610380565b60015460fa90106104d7576104d56104ec565b505b60015460fa9010610402575061049e565b6105a65b600060015b6001548110156107ef575b6001548110801561051c5750600281610100811015610002570154600014155b1561080f576001016104fc565b1561033557600160a060020a038316600090815261010260205260408120549250821415610557575061049c565b6001600160005054036000600050541115610572575061049c565b600060028361010081101561000257508301819055600160a060020a038416815261010260205260408120556104e8610380565b5060408051600160a060020a038516815290517f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da9181900360200190a1505050565b1561049c576001548211156105fd575061049e565b600082905561060a610380565b6040805183815290517facbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da9181900360200190a15050565b506001830154600282900a908116600014156106605760009450610665565b600194505b5050505092915050565b60008681526101036020526040812080549094509092508214156106f85781548355600183810183905561010480549182018082558280158290116106c7578183600052602060002091820191016106c791906107db565b505050600284018190556101048054889290811015610002576000919091526000805160206108ea83398151915201555b506001820154600284900a908116600014156108065760408051600160a060020a03331681526020810188905281517fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda929181900390910190a18254600190116107f35760008681526101036020526040902060020154610104805490919081101561000257604060009081206000805160206108ea83398151915292909201819055808255600180830182905560029092015595506108069050565b6101048054600080835591909152610335906000805160206108ea833981519152908101905b808211156107ef57600081556001016107db565b5090565b8254600019018355600183018054821790555b50505050919050565b5b6001805411801561083257506001546002906101008110156100025701546000145b156108465760018054600019019055610810565b600154811080156108695750600154600290610100811015610002570154600014155b801561088357506002816101008110156100025701546000145b156108e457600154600290610100811015610002578101549082610100811015610002578101919091558190610102906000908361010081101561000257810154825260209290925260408120929092556001546101008110156100025701555b6104f156004c0be60200faa20559308cb7b5a1bb3255c16cb1cab91f525b5ae7a03d02fabe # noqa: E501 contract_0 = pre.deploy_contract( # noqa: F841 @@ -55,14 +56,13 @@ def test_multi_owned_change_owner_no_argument( storage={ 0: 1, 1: 1, - 3: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, + 3: sender, 0x6E369836487C234B9E553EF3F787C2D8865520739D340C67B3D251A33986E58D: 1, # noqa: E501 }, balance=100, nonce=0, address=Address(0x6295EE1B4F6DD65047762F924ECD367C17EABF8F), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A75EF08F, nonce=1) tx = Transaction( sender=sender, @@ -78,7 +78,7 @@ def test_multi_owned_change_owner_no_argument( storage={ 0: 1, 1: 1, - 3: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, + 3: sender, 260: 1, 0x6E369836487C234B9E553EF3F787C2D8865520739D340C67B3D251A33986E58D: 1, # noqa: E501 }, diff --git a/tests/ported_static/stWalletTest/test_multi_owned_change_owner_to_is_owner.py b/tests/ported_static/stWalletTest/test_multi_owned_change_owner_to_is_owner.py index 83a1ac1d860..aedd0a4dc9f 100644 --- a/tests/ported_static/stWalletTest/test_multi_owned_change_owner_to_is_owner.py +++ b/tests/ported_static/stWalletTest/test_multi_owned_change_owner_to_is_owner.py @@ -47,6 +47,7 @@ def test_multi_owned_change_owner_to_is_owner( gas_limit=100000000, ) + pre[sender] = Account(balance=0xDE0B6B3A75EF08F, nonce=1) # Source: raw # 0x606060405236156100775760e060020a6000350463173825d981146100795780632f54bf6e146100d55780634123cb6b146100f95780637065cb4814610102578063746c917114610136578063b75c7dc61461013f578063ba51a6df1461016f578063c2cf7326146101a3578063f00d4b5d146101e3575b005b610077600435600060003643604051808484808284375050509091019081526040519081900360200190209050610529815b600160a060020a033316600090815261010260205260408120548180808381141561066f57610806565b61021c6004355b600160a060020a0316600090815261010260205260408120541190565b61021c60015481565b610077600435600036436040518084848082843750505090910190815260405190819003602001902090506104a1816100ab565b61021c60005481565b610077600435600160a060020a033316600090815261010260205260408120549080808381141561022e576102b0565b610077600435600036436040518084848082843750505090910190815260405190819003602001902090506105e8816100ab565b61021c600435602435600082815261010360209081526040808320600160a060020a03851684526101029092528220548290818181141561064157610665565b61007760043560243560006000364360405180848480828437505050909101908152604051908190036020019020905061033a816100ab565b60408051918252519081900360200190f35b5050506000828152610103602052604081206001810154600284900a92908316819011156102b05781546001838101805492909101845590849003905560408051600160a060020a03331681526020810187905281517fc7fb647e59b18047309aa15aad418e5d7ca96d173ad704f1031a2c3d7591734b929181900390910190a15b5050505050565b600160a060020a038316600283610100811015610002570155600160a060020a0384811660008181526101026020908152604080832083905593871680835291849020869055835192835282015281517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c929181900390910190a15b505b505050565b1561033357610348836100dc565b156103535750610335565b600160a060020a03841660009081526101026020526040812054925082141561037c5750610335565b6102b75b6101045460005b818110156107b557610104805482908110156100025760009182526000805160206108ea8339815191520154146103fa576101048054610103916000918490811015610002576000805160206108ea83398151915201548252506020919091526040812081815560018101829055600201555b600101610387565b60018054810190819055600160a060020a038316906002906101008110156100025790900160005081905550600160005054610102600050600084600160a060020a03168152602001908152602001600020600050819055507f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c3826040518082600160a060020a0316815260200191505060405180910390a15b505b50565b1561049c576104af826100dc565b156104ba575061049e565b6104c2610380565b60015460fa90106104d7576104d56104ec565b505b60015460fa9010610402575061049e565b6105a65b600060015b6001548110156107ef575b6001548110801561051c5750600281610100811015610002570154600014155b1561080f576001016104fc565b1561033557600160a060020a038316600090815261010260205260408120549250821415610557575061049c565b6001600160005054036000600050541115610572575061049c565b600060028361010081101561000257508301819055600160a060020a038416815261010260205260408120556104e8610380565b5060408051600160a060020a038516815290517f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da9181900360200190a1505050565b1561049c576001548211156105fd575061049e565b600082905561060a610380565b6040805183815290517facbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da9181900360200190a15050565b506001830154600282900a908116600014156106605760009450610665565b600194505b5050505092915050565b60008681526101036020526040812080549094509092508214156106f85781548355600183810183905561010480549182018082558280158290116106c7578183600052602060002091820191016106c791906107db565b505050600284018190556101048054889290811015610002576000919091526000805160206108ea83398151915201555b506001820154600284900a908116600014156108065760408051600160a060020a03331681526020810188905281517fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda929181900390910190a18254600190116107f35760008681526101036020526040902060020154610104805490919081101561000257604060009081206000805160206108ea83398151915292909201819055808255600180830182905560029092015595506108069050565b6101048054600080835591909152610335906000805160206108ea833981519152908101905b808211156107ef57600081556001016107db565b5090565b8254600019018355600183018054821790555b50505050919050565b5b6001805411801561083257506001546002906101008110156100025701546000145b156108465760018054600019019055610810565b600154811080156108695750600154600290610100811015610002570154600014155b801561088357506002816101008110156100025701546000145b156108e457600154600290610100811015610002578101549082610100811015610002578101919091558190610102906000908361010081101561000257810154825260209290925260408120929092556001546101008110156100025701555b6104f156004c0be60200faa20559308cb7b5a1bb3255c16cb1cab91f525b5ae7a03d02fabe # noqa: E501 contract_0 = pre.deploy_contract( # noqa: F841 @@ -56,14 +57,13 @@ def test_multi_owned_change_owner_to_is_owner( storage={ 0: 1, 1: 1, - 3: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, + 3: sender, 0x6E369836487C234B9E553EF3F787C2D8865520739D340C67B3D251A33986E58D: 1, # noqa: E501 }, balance=100, nonce=0, address=Address(0x6295EE1B4F6DD65047762F924ECD367C17EABF8F), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A75EF08F, nonce=1) tx = Transaction( sender=sender, @@ -81,7 +81,7 @@ def test_multi_owned_change_owner_to_is_owner( storage={ 0: 1, 1: 1, - 3: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, + 3: sender, 260: 1, 0x6E369836487C234B9E553EF3F787C2D8865520739D340C67B3D251A33986E58D: 1, # noqa: E501 }, diff --git a/tests/ported_static/stWalletTest/test_multi_owned_change_requirement_to0.py b/tests/ported_static/stWalletTest/test_multi_owned_change_requirement_to0.py index cd81be47afb..48c0a59ad40 100644 --- a/tests/ported_static/stWalletTest/test_multi_owned_change_requirement_to0.py +++ b/tests/ported_static/stWalletTest/test_multi_owned_change_requirement_to0.py @@ -47,6 +47,7 @@ def test_multi_owned_change_requirement_to0( gas_limit=100000000, ) + pre[sender] = Account(balance=0xDE0B6B3A75EF08F, nonce=1) # Source: raw # 0x606060405236156100775760e060020a6000350463173825d981146100795780632f54bf6e146100d55780634123cb6b146100f95780637065cb4814610102578063746c917114610136578063b75c7dc61461013f578063ba51a6df1461016f578063c2cf7326146101a3578063f00d4b5d146101e3575b005b610077600435600060003643604051808484808284375050509091019081526040519081900360200190209050610529815b600160a060020a033316600090815261010260205260408120548180808381141561066f57610806565b61021c6004355b600160a060020a0316600090815261010260205260408120541190565b61021c60015481565b610077600435600036436040518084848082843750505090910190815260405190819003602001902090506104a1816100ab565b61021c60005481565b610077600435600160a060020a033316600090815261010260205260408120549080808381141561022e576102b0565b610077600435600036436040518084848082843750505090910190815260405190819003602001902090506105e8816100ab565b61021c600435602435600082815261010360209081526040808320600160a060020a03851684526101029092528220548290818181141561064157610665565b61007760043560243560006000364360405180848480828437505050909101908152604051908190036020019020905061033a816100ab565b60408051918252519081900360200190f35b5050506000828152610103602052604081206001810154600284900a92908316819011156102b05781546001838101805492909101845590849003905560408051600160a060020a03331681526020810187905281517fc7fb647e59b18047309aa15aad418e5d7ca96d173ad704f1031a2c3d7591734b929181900390910190a15b5050505050565b600160a060020a038316600283610100811015610002570155600160a060020a0384811660008181526101026020908152604080832083905593871680835291849020869055835192835282015281517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c929181900390910190a15b505b505050565b1561033357610348836100dc565b156103535750610335565b600160a060020a03841660009081526101026020526040812054925082141561037c5750610335565b6102b75b6101045460005b818110156107b557610104805482908110156100025760009182526000805160206108ea8339815191520154146103fa576101048054610103916000918490811015610002576000805160206108ea83398151915201548252506020919091526040812081815560018101829055600201555b600101610387565b60018054810190819055600160a060020a038316906002906101008110156100025790900160005081905550600160005054610102600050600084600160a060020a03168152602001908152602001600020600050819055507f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c3826040518082600160a060020a0316815260200191505060405180910390a15b505b50565b1561049c576104af826100dc565b156104ba575061049e565b6104c2610380565b60015460fa90106104d7576104d56104ec565b505b60015460fa9010610402575061049e565b6105a65b600060015b6001548110156107ef575b6001548110801561051c5750600281610100811015610002570154600014155b1561080f576001016104fc565b1561033557600160a060020a038316600090815261010260205260408120549250821415610557575061049c565b6001600160005054036000600050541115610572575061049c565b600060028361010081101561000257508301819055600160a060020a038416815261010260205260408120556104e8610380565b5060408051600160a060020a038516815290517f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da9181900360200190a1505050565b1561049c576001548211156105fd575061049e565b600082905561060a610380565b6040805183815290517facbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da9181900360200190a15050565b506001830154600282900a908116600014156106605760009450610665565b600194505b5050505092915050565b60008681526101036020526040812080549094509092508214156106f85781548355600183810183905561010480549182018082558280158290116106c7578183600052602060002091820191016106c791906107db565b505050600284018190556101048054889290811015610002576000919091526000805160206108ea83398151915201555b506001820154600284900a908116600014156108065760408051600160a060020a03331681526020810188905281517fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda929181900390910190a18254600190116107f35760008681526101036020526040902060020154610104805490919081101561000257604060009081206000805160206108ea83398151915292909201819055808255600180830182905560029092015595506108069050565b6101048054600080835591909152610335906000805160206108ea833981519152908101905b808211156107ef57600081556001016107db565b5090565b8254600019018355600183018054821790555b50505050919050565b5b6001805411801561083257506001546002906101008110156100025701546000145b156108465760018054600019019055610810565b600154811080156108695750600154600290610100811015610002570154600014155b801561088357506002816101008110156100025701546000145b156108e457600154600290610100811015610002578101549082610100811015610002578101919091558190610102906000908361010081101561000257810154825260209290925260408120929092556001546101008110156100025701555b6104f156004c0be60200faa20559308cb7b5a1bb3255c16cb1cab91f525b5ae7a03d02fabe # noqa: E501 contract_0 = pre.deploy_contract( # noqa: F841 @@ -56,14 +57,13 @@ def test_multi_owned_change_requirement_to0( storage={ 0: 1, 1: 1, - 3: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, + 3: sender, 0x6E369836487C234B9E553EF3F787C2D8865520739D340C67B3D251A33986E58D: 1, # noqa: E501 }, balance=100, nonce=0, address=Address(0x6295EE1B4F6DD65047762F924ECD367C17EABF8F), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A75EF08F, nonce=1) tx = Transaction( sender=sender, @@ -78,7 +78,7 @@ def test_multi_owned_change_requirement_to0( contract_0: Account( storage={ 1: 1, - 3: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, + 3: sender, 0x6E369836487C234B9E553EF3F787C2D8865520739D340C67B3D251A33986E58D: 1, # noqa: E501 }, code=bytes.fromhex( diff --git a/tests/ported_static/stWalletTest/test_multi_owned_change_requirement_to1.py b/tests/ported_static/stWalletTest/test_multi_owned_change_requirement_to1.py index 58574695eed..e29e02486a2 100644 --- a/tests/ported_static/stWalletTest/test_multi_owned_change_requirement_to1.py +++ b/tests/ported_static/stWalletTest/test_multi_owned_change_requirement_to1.py @@ -47,6 +47,7 @@ def test_multi_owned_change_requirement_to1( gas_limit=100000000, ) + pre[sender] = Account(balance=0xDE0B6B3A75EF08F, nonce=1) # Source: raw # 0x606060405236156100775760e060020a6000350463173825d981146100795780632f54bf6e146100d55780634123cb6b146100f95780637065cb4814610102578063746c917114610136578063b75c7dc61461013f578063ba51a6df1461016f578063c2cf7326146101a3578063f00d4b5d146101e3575b005b610077600435600060003643604051808484808284375050509091019081526040519081900360200190209050610529815b600160a060020a033316600090815261010260205260408120548180808381141561066f57610806565b61021c6004355b600160a060020a0316600090815261010260205260408120541190565b61021c60015481565b610077600435600036436040518084848082843750505090910190815260405190819003602001902090506104a1816100ab565b61021c60005481565b610077600435600160a060020a033316600090815261010260205260408120549080808381141561022e576102b0565b610077600435600036436040518084848082843750505090910190815260405190819003602001902090506105e8816100ab565b61021c600435602435600082815261010360209081526040808320600160a060020a03851684526101029092528220548290818181141561064157610665565b61007760043560243560006000364360405180848480828437505050909101908152604051908190036020019020905061033a816100ab565b60408051918252519081900360200190f35b5050506000828152610103602052604081206001810154600284900a92908316819011156102b05781546001838101805492909101845590849003905560408051600160a060020a03331681526020810187905281517fc7fb647e59b18047309aa15aad418e5d7ca96d173ad704f1031a2c3d7591734b929181900390910190a15b5050505050565b600160a060020a038316600283610100811015610002570155600160a060020a0384811660008181526101026020908152604080832083905593871680835291849020869055835192835282015281517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c929181900390910190a15b505b505050565b1561033357610348836100dc565b156103535750610335565b600160a060020a03841660009081526101026020526040812054925082141561037c5750610335565b6102b75b6101045460005b818110156107b557610104805482908110156100025760009182526000805160206108ea8339815191520154146103fa576101048054610103916000918490811015610002576000805160206108ea83398151915201548252506020919091526040812081815560018101829055600201555b600101610387565b60018054810190819055600160a060020a038316906002906101008110156100025790900160005081905550600160005054610102600050600084600160a060020a03168152602001908152602001600020600050819055507f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c3826040518082600160a060020a0316815260200191505060405180910390a15b505b50565b1561049c576104af826100dc565b156104ba575061049e565b6104c2610380565b60015460fa90106104d7576104d56104ec565b505b60015460fa9010610402575061049e565b6105a65b600060015b6001548110156107ef575b6001548110801561051c5750600281610100811015610002570154600014155b1561080f576001016104fc565b1561033557600160a060020a038316600090815261010260205260408120549250821415610557575061049c565b6001600160005054036000600050541115610572575061049c565b600060028361010081101561000257508301819055600160a060020a038416815261010260205260408120556104e8610380565b5060408051600160a060020a038516815290517f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da9181900360200190a1505050565b1561049c576001548211156105fd575061049e565b600082905561060a610380565b6040805183815290517facbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da9181900360200190a15050565b506001830154600282900a908116600014156106605760009450610665565b600194505b5050505092915050565b60008681526101036020526040812080549094509092508214156106f85781548355600183810183905561010480549182018082558280158290116106c7578183600052602060002091820191016106c791906107db565b505050600284018190556101048054889290811015610002576000919091526000805160206108ea83398151915201555b506001820154600284900a908116600014156108065760408051600160a060020a03331681526020810188905281517fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda929181900390910190a18254600190116107f35760008681526101036020526040902060020154610104805490919081101561000257604060009081206000805160206108ea83398151915292909201819055808255600180830182905560029092015595506108069050565b6101048054600080835591909152610335906000805160206108ea833981519152908101905b808211156107ef57600081556001016107db565b5090565b8254600019018355600183018054821790555b50505050919050565b5b6001805411801561083257506001546002906101008110156100025701546000145b156108465760018054600019019055610810565b600154811080156108695750600154600290610100811015610002570154600014155b801561088357506002816101008110156100025701546000145b156108e457600154600290610100811015610002578101549082610100811015610002578101919091558190610102906000908361010081101561000257810154825260209290925260408120929092556001546101008110156100025701555b6104f156004c0be60200faa20559308cb7b5a1bb3255c16cb1cab91f525b5ae7a03d02fabe # noqa: E501 contract_0 = pre.deploy_contract( # noqa: F841 @@ -56,14 +57,13 @@ def test_multi_owned_change_requirement_to1( storage={ 0: 1, 1: 1, - 3: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, + 3: sender, 0x6E369836487C234B9E553EF3F787C2D8865520739D340C67B3D251A33986E58D: 1, # noqa: E501 }, balance=100, nonce=0, address=Address(0x6295EE1B4F6DD65047762F924ECD367C17EABF8F), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A75EF08F, nonce=1) tx = Transaction( sender=sender, @@ -79,7 +79,7 @@ def test_multi_owned_change_requirement_to1( storage={ 0: 1, 1: 1, - 3: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, + 3: sender, 0x6E369836487C234B9E553EF3F787C2D8865520739D340C67B3D251A33986E58D: 1, # noqa: E501 }, code=bytes.fromhex( diff --git a/tests/ported_static/stWalletTest/test_multi_owned_change_requirement_to2.py b/tests/ported_static/stWalletTest/test_multi_owned_change_requirement_to2.py index 37ef850e805..9724b0cad39 100644 --- a/tests/ported_static/stWalletTest/test_multi_owned_change_requirement_to2.py +++ b/tests/ported_static/stWalletTest/test_multi_owned_change_requirement_to2.py @@ -47,6 +47,7 @@ def test_multi_owned_change_requirement_to2( gas_limit=100000000, ) + pre[sender] = Account(balance=0xDE0B6B3A75EF08F, nonce=1) # Source: raw # 0x606060405236156100775760e060020a6000350463173825d981146100795780632f54bf6e146100d55780634123cb6b146100f95780637065cb4814610102578063746c917114610136578063b75c7dc61461013f578063ba51a6df1461016f578063c2cf7326146101a3578063f00d4b5d146101e3575b005b610077600435600060003643604051808484808284375050509091019081526040519081900360200190209050610529815b600160a060020a033316600090815261010260205260408120548180808381141561066f57610806565b61021c6004355b600160a060020a0316600090815261010260205260408120541190565b61021c60015481565b610077600435600036436040518084848082843750505090910190815260405190819003602001902090506104a1816100ab565b61021c60005481565b610077600435600160a060020a033316600090815261010260205260408120549080808381141561022e576102b0565b610077600435600036436040518084848082843750505090910190815260405190819003602001902090506105e8816100ab565b61021c600435602435600082815261010360209081526040808320600160a060020a03851684526101029092528220548290818181141561064157610665565b61007760043560243560006000364360405180848480828437505050909101908152604051908190036020019020905061033a816100ab565b60408051918252519081900360200190f35b5050506000828152610103602052604081206001810154600284900a92908316819011156102b05781546001838101805492909101845590849003905560408051600160a060020a03331681526020810187905281517fc7fb647e59b18047309aa15aad418e5d7ca96d173ad704f1031a2c3d7591734b929181900390910190a15b5050505050565b600160a060020a038316600283610100811015610002570155600160a060020a0384811660008181526101026020908152604080832083905593871680835291849020869055835192835282015281517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c929181900390910190a15b505b505050565b1561033357610348836100dc565b156103535750610335565b600160a060020a03841660009081526101026020526040812054925082141561037c5750610335565b6102b75b6101045460005b818110156107b557610104805482908110156100025760009182526000805160206108ea8339815191520154146103fa576101048054610103916000918490811015610002576000805160206108ea83398151915201548252506020919091526040812081815560018101829055600201555b600101610387565b60018054810190819055600160a060020a038316906002906101008110156100025790900160005081905550600160005054610102600050600084600160a060020a03168152602001908152602001600020600050819055507f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c3826040518082600160a060020a0316815260200191505060405180910390a15b505b50565b1561049c576104af826100dc565b156104ba575061049e565b6104c2610380565b60015460fa90106104d7576104d56104ec565b505b60015460fa9010610402575061049e565b6105a65b600060015b6001548110156107ef575b6001548110801561051c5750600281610100811015610002570154600014155b1561080f576001016104fc565b1561033557600160a060020a038316600090815261010260205260408120549250821415610557575061049c565b6001600160005054036000600050541115610572575061049c565b600060028361010081101561000257508301819055600160a060020a038416815261010260205260408120556104e8610380565b5060408051600160a060020a038516815290517f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da9181900360200190a1505050565b1561049c576001548211156105fd575061049e565b600082905561060a610380565b6040805183815290517facbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da9181900360200190a15050565b506001830154600282900a908116600014156106605760009450610665565b600194505b5050505092915050565b60008681526101036020526040812080549094509092508214156106f85781548355600183810183905561010480549182018082558280158290116106c7578183600052602060002091820191016106c791906107db565b505050600284018190556101048054889290811015610002576000919091526000805160206108ea83398151915201555b506001820154600284900a908116600014156108065760408051600160a060020a03331681526020810188905281517fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda929181900390910190a18254600190116107f35760008681526101036020526040902060020154610104805490919081101561000257604060009081206000805160206108ea83398151915292909201819055808255600180830182905560029092015595506108069050565b6101048054600080835591909152610335906000805160206108ea833981519152908101905b808211156107ef57600081556001016107db565b5090565b8254600019018355600183018054821790555b50505050919050565b5b6001805411801561083257506001546002906101008110156100025701546000145b156108465760018054600019019055610810565b600154811080156108695750600154600290610100811015610002570154600014155b801561088357506002816101008110156100025701546000145b156108e457600154600290610100811015610002578101549082610100811015610002578101919091558190610102906000908361010081101561000257810154825260209290925260408120929092556001546101008110156100025701555b6104f156004c0be60200faa20559308cb7b5a1bb3255c16cb1cab91f525b5ae7a03d02fabe # noqa: E501 contract_0 = pre.deploy_contract( # noqa: F841 @@ -56,14 +57,13 @@ def test_multi_owned_change_requirement_to2( storage={ 0: 1, 1: 1, - 3: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, + 3: sender, 0x6E369836487C234B9E553EF3F787C2D8865520739D340C67B3D251A33986E58D: 1, # noqa: E501 }, balance=100, nonce=0, address=Address(0x6295EE1B4F6DD65047762F924ECD367C17EABF8F), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A75EF08F, nonce=1) tx = Transaction( sender=sender, @@ -79,7 +79,7 @@ def test_multi_owned_change_requirement_to2( storage={ 0: 1, 1: 1, - 3: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, + 3: sender, 260: 1, 0x6E369836487C234B9E553EF3F787C2D8865520739D340C67B3D251A33986E58D: 1, # noqa: E501 }, diff --git a/tests/ported_static/stWalletTest/test_multi_owned_construction_correct.py b/tests/ported_static/stWalletTest/test_multi_owned_construction_correct.py index df4f050384b..e8358ff7f7c 100644 --- a/tests/ported_static/stWalletTest/test_multi_owned_construction_correct.py +++ b/tests/ported_static/stWalletTest/test_multi_owned_construction_correct.py @@ -63,7 +63,7 @@ def test_multi_owned_construction_correct( storage={ 0: 1, 1: 1, - 3: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, + 3: sender, 0x6E369836487C234B9E553EF3F787C2D8865520739D340C67B3D251A33986E58D: 1, # noqa: E501 }, code=bytes.fromhex( diff --git a/tests/ported_static/stWalletTest/test_multi_owned_construction_not_enough_gas.py b/tests/ported_static/stWalletTest/test_multi_owned_construction_not_enough_gas.py index a1363dfcf33..d6be5724357 100644 --- a/tests/ported_static/stWalletTest/test_multi_owned_construction_not_enough_gas.py +++ b/tests/ported_static/stWalletTest/test_multi_owned_construction_not_enough_gas.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -25,16 +24,13 @@ ["state_tests/stWalletTest/multiOwnedConstructionNotEnoughGasFiller.json"], ) @pytest.mark.valid_from("Cancun") -@pytest.mark.pre_alloc_mutable def test_multi_owned_construction_not_enough_gas( state_test: StateTestFiller, pre: Alloc, ) -> None: """Test_multi_owned_construction_not_enough_gas.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000) env = Environment( fee_recipient=coinbase, @@ -45,8 +41,6 @@ def test_multi_owned_construction_not_enough_gas( gas_limit=1000000, ) - pre[sender] = Account(balance=0xDE0B6B3A7640000) - tx = Transaction( sender=sender, to=None, diff --git a/tests/ported_static/stWalletTest/test_multi_owned_is_owner_false.py b/tests/ported_static/stWalletTest/test_multi_owned_is_owner_false.py index 0113979f70a..4b84b80aaf0 100644 --- a/tests/ported_static/stWalletTest/test_multi_owned_is_owner_false.py +++ b/tests/ported_static/stWalletTest/test_multi_owned_is_owner_false.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -34,9 +33,7 @@ def test_multi_owned_is_owner_false( """Test_multi_owned_is_owner_false.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) contract_0 = Address(0x6295EE1B4F6DD65047762F924ECD367C17EABF8F) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A75EF08F, nonce=1) env = Environment( fee_recipient=coinbase, @@ -56,14 +53,12 @@ def test_multi_owned_is_owner_false( storage={ 0: 1, 1: 1, - 3: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, + 3: sender, 0x6E369836487C234B9E553EF3F787C2D8865520739D340C67B3D251A33986E58D: 1, # noqa: E501 }, balance=100, nonce=0, - address=Address(0x6295EE1B4F6DD65047762F924ECD367C17EABF8F), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A75EF08F, nonce=1) tx = Transaction( sender=sender, @@ -80,7 +75,7 @@ def test_multi_owned_is_owner_false( storage={ 0: 1, 1: 1, - 3: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, + 3: sender, 0x6E369836487C234B9E553EF3F787C2D8865520739D340C67B3D251A33986E58D: 1, # noqa: E501 }, code=bytes.fromhex( diff --git a/tests/ported_static/stWalletTest/test_multi_owned_is_owner_true.py b/tests/ported_static/stWalletTest/test_multi_owned_is_owner_true.py index 358b2a4a5b5..aeec0e20a27 100644 --- a/tests/ported_static/stWalletTest/test_multi_owned_is_owner_true.py +++ b/tests/ported_static/stWalletTest/test_multi_owned_is_owner_true.py @@ -47,6 +47,7 @@ def test_multi_owned_is_owner_true( gas_limit=100000000, ) + pre[sender] = Account(balance=0xDE0B6B3A75EF08F, nonce=1) # Source: raw # 0x606060405236156100775760e060020a6000350463173825d981146100795780632f54bf6e146100d55780634123cb6b146100f95780637065cb4814610102578063746c917114610136578063b75c7dc61461013f578063ba51a6df1461016f578063c2cf7326146101a3578063f00d4b5d146101e3575b005b610077600435600060003643604051808484808284375050509091019081526040519081900360200190209050610529815b600160a060020a033316600090815261010260205260408120548180808381141561066f57610806565b61021c6004355b600160a060020a0316600090815261010260205260408120541190565b61021c60015481565b610077600435600036436040518084848082843750505090910190815260405190819003602001902090506104a1816100ab565b61021c60005481565b610077600435600160a060020a033316600090815261010260205260408120549080808381141561022e576102b0565b610077600435600036436040518084848082843750505090910190815260405190819003602001902090506105e8816100ab565b61021c600435602435600082815261010360209081526040808320600160a060020a03851684526101029092528220548290818181141561064157610665565b61007760043560243560006000364360405180848480828437505050909101908152604051908190036020019020905061033a816100ab565b60408051918252519081900360200190f35b5050506000828152610103602052604081206001810154600284900a92908316819011156102b05781546001838101805492909101845590849003905560408051600160a060020a03331681526020810187905281517fc7fb647e59b18047309aa15aad418e5d7ca96d173ad704f1031a2c3d7591734b929181900390910190a15b5050505050565b600160a060020a038316600283610100811015610002570155600160a060020a0384811660008181526101026020908152604080832083905593871680835291849020869055835192835282015281517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c929181900390910190a15b505b505050565b1561033357610348836100dc565b156103535750610335565b600160a060020a03841660009081526101026020526040812054925082141561037c5750610335565b6102b75b6101045460005b818110156107b557610104805482908110156100025760009182526000805160206108ea8339815191520154146103fa576101048054610103916000918490811015610002576000805160206108ea83398151915201548252506020919091526040812081815560018101829055600201555b600101610387565b60018054810190819055600160a060020a038316906002906101008110156100025790900160005081905550600160005054610102600050600084600160a060020a03168152602001908152602001600020600050819055507f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c3826040518082600160a060020a0316815260200191505060405180910390a15b505b50565b1561049c576104af826100dc565b156104ba575061049e565b6104c2610380565b60015460fa90106104d7576104d56104ec565b505b60015460fa9010610402575061049e565b6105a65b600060015b6001548110156107ef575b6001548110801561051c5750600281610100811015610002570154600014155b1561080f576001016104fc565b1561033557600160a060020a038316600090815261010260205260408120549250821415610557575061049c565b6001600160005054036000600050541115610572575061049c565b600060028361010081101561000257508301819055600160a060020a038416815261010260205260408120556104e8610380565b5060408051600160a060020a038516815290517f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da9181900360200190a1505050565b1561049c576001548211156105fd575061049e565b600082905561060a610380565b6040805183815290517facbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da9181900360200190a15050565b506001830154600282900a908116600014156106605760009450610665565b600194505b5050505092915050565b60008681526101036020526040812080549094509092508214156106f85781548355600183810183905561010480549182018082558280158290116106c7578183600052602060002091820191016106c791906107db565b505050600284018190556101048054889290811015610002576000919091526000805160206108ea83398151915201555b506001820154600284900a908116600014156108065760408051600160a060020a03331681526020810188905281517fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda929181900390910190a18254600190116107f35760008681526101036020526040902060020154610104805490919081101561000257604060009081206000805160206108ea83398151915292909201819055808255600180830182905560029092015595506108069050565b6101048054600080835591909152610335906000805160206108ea833981519152908101905b808211156107ef57600081556001016107db565b5090565b8254600019018355600183018054821790555b50505050919050565b5b6001805411801561083257506001546002906101008110156100025701546000145b156108465760018054600019019055610810565b600154811080156108695750600154600290610100811015610002570154600014155b801561088357506002816101008110156100025701546000145b156108e457600154600290610100811015610002578101549082610100811015610002578101919091558190610102906000908361010081101561000257810154825260209290925260408120929092556001546101008110156100025701555b6104f156004c0be60200faa20559308cb7b5a1bb3255c16cb1cab91f525b5ae7a03d02fabe # noqa: E501 contract_0 = pre.deploy_contract( # noqa: F841 @@ -56,14 +57,13 @@ def test_multi_owned_is_owner_true( storage={ 0: 1, 1: 1, - 3: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, + 3: sender, 0x6E369836487C234B9E553EF3F787C2D8865520739D340C67B3D251A33986E58D: 1, # noqa: E501 }, balance=100, nonce=0, address=Address(0x6295EE1B4F6DD65047762F924ECD367C17EABF8F), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A75EF08F, nonce=1) tx = Transaction( sender=sender, @@ -79,7 +79,7 @@ def test_multi_owned_is_owner_true( storage={ 0: 1, 1: 1, - 3: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, + 3: sender, 0x6E369836487C234B9E553EF3F787C2D8865520739D340C67B3D251A33986E58D: 1, # noqa: E501 }, code=bytes.fromhex( diff --git a/tests/ported_static/stWalletTest/test_multi_owned_remove_owner.py b/tests/ported_static/stWalletTest/test_multi_owned_remove_owner.py index e017ed9dbb5..9947931cf21 100644 --- a/tests/ported_static/stWalletTest/test_multi_owned_remove_owner.py +++ b/tests/ported_static/stWalletTest/test_multi_owned_remove_owner.py @@ -48,6 +48,7 @@ def test_multi_owned_remove_owner( gas_limit=100000000, ) + pre[sender] = Account(balance=0xDE0B6B3A75EF08F, nonce=1) # Source: raw # 0x7c01000000000000000000000000000000000000000000000000000000006000350463173825d981146100655780632f54bf6e146100b75780637065cb48146100e8578063b75c7dc614610105578063ba51a6df14610142578063f00d4b5d1461015f57005b6101816004356000604060003680828437909120905061046d815b73ffffffffffffffffffffffffffffffffffffffff3316600090815261010260205260408120548180808381141561058f57610586565b6101876004355b73ffffffffffffffffffffffffffffffffffffffff16600090815261010260205260408120541190565b610181600435604060003680828437909120905061037c81610080565b61018160043573ffffffffffffffffffffffffffffffffffffffff3316600090815261010260205260408120549080808381141561019157610213565b610181600435604060003680828437909120905061053381610080565b6101816004356024356000604060003680828437909120905061028681610080565b60006000f35b8060005260206000f35b5050506000828152610103602052604081206001810154600284900a929083168190111561021357815460018084018054919092018455849003905573ffffffffffffffffffffffffffffffffffffffff3316604090815260608690527fc7fb647e59b18047309aa15aad418e5d7ca96d173ad704f1031a2c3d7591734b9080a15b5050505050565b015573ffffffffffffffffffffffffffffffffffffffff84811660008181526101026020526040808220829055928616808252908390208590559082526060527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9080a15b505b505050565b1561027f57610294836100be565b1561029f5750610281565b73ffffffffffffffffffffffffffffffffffffffff84166000908152610102602052604081205492508214156102d55750610281565b6102f75b6101045460005b8181101561080c5761010480548290811061085457005b73ffffffffffffffffffffffffffffffffffffffff8316600283610100811061021a57005b015560015473ffffffffffffffffffffffffffffffffffffffff831660008181526101026020908152604091829020939093559081527f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c39190a15b505b50565b156103775761038a826100be565b156103955750610379565b61039d6102d9565b60015460fa901015156103b4576103b26103cb565b505b60015460fa901015156103f55750610379565b6104255b600060015b6001548110156106f7575b600154811080156107535750600281610100811061074c57005b6001805481019081905573ffffffffffffffffffffffffffffffffffffffff831690600290610100811061031c57005b5073ffffffffffffffffffffffffffffffffffffffff831660409081527f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da90602090a1505050565b156102815773ffffffffffffffffffffffffffffffffffffffff83166000908152610102602052604081205492508214156104a85750610377565b60016001600050540360006000505411156104c35750610377565b600060028361010081106104d357005b015573ffffffffffffffffffffffffffffffffffffffff8316600090815261010260205260408120556103c76102d9565b60408281527facbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da90602090a15050565b15610377576001548211156105485750610379565b60008290556105046102d9565b82547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018355600183018054821790555b50505050919050565b600086815261010360205260408120805490945090925082141561061a5781548355600183810183905561010480549182018082558280158290116106a6578286527f4c0be60200faa20559308cb7b5a1bb3255c16cb1cab91f525b5ae7a03d02fabe9081019082015b808211156106a457600081556001016105f9565b6000918252602090912001555b506001820154600284900a908116600014156105865773ffffffffffffffffffffffffffffffffffffffff3316604090815260608790527fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda9080a182546001901115156105555760008681526101036020526101048054604090922060020154909181106106c057005b505b505050600284018190556101048054889290811061060d57005b6000918252602080832090910182905587825261010390526040812081815560018181018390556002909101919091559450610586565b5090565b01546000145b1561076057600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190555b60018054118015610701575060015460029061010081106106fb57005b0154600014155b1561072f576001016103db565b600154811080156107845750600154600290610100811061077d57005b0154600014155b801561079f5750600281610100811061079957005b01546000145b156107b85760015460029061010081106107bd57005b01555b6103d0565b015460028261010081106107cd57005b015580610102600060028361010081106107e357005b01548152602081019190915260400160009081209190915560015460029061010081106107b557005b61010480546000808355919091527f4c0be60200faa20559308cb7b5a1bb3255c16cb1cab91f525b5ae7a03d02fabe908101905b8082111561027f5760008155600101610840565b60009182526020822001541415156108a6576101048054610103916000918490811061087c57005b60009182526020808320909101548352820192909252604001812081815560018101829055600201555b6001016102e056 # noqa: E501 contract_0 = pre.deploy_contract( # noqa: F841 @@ -831,7 +832,7 @@ def test_multi_owned_remove_owner( storage={ 0: 1, 1: 2, - 3: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, + 3: sender, 4: 0x3FB1CD2CD96C6D5C0B5EB3322D807B34482481D4, 0x6E369836487C234B9E553EF3F787C2D8865520739D340C67B3D251A33986E58D: 1, # noqa: E501 0xD3E69D8C7F41F7AEAF8130DDC53047AEEE8CB46A73D6BAE86B7E7D6BF8312E6B: 2, # noqa: E501 @@ -840,7 +841,6 @@ def test_multi_owned_remove_owner( nonce=0, address=Address(0x6295EE1B4F6DD65047762F924ECD367C17EABF8F), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A75EF08F, nonce=1) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stWalletTest/test_multi_owned_remove_owner_by_non_owner.py b/tests/ported_static/stWalletTest/test_multi_owned_remove_owner_by_non_owner.py index 46762788de2..646b72dc0d8 100644 --- a/tests/ported_static/stWalletTest/test_multi_owned_remove_owner_by_non_owner.py +++ b/tests/ported_static/stWalletTest/test_multi_owned_remove_owner_by_non_owner.py @@ -58,7 +58,7 @@ def test_multi_owned_remove_owner_by_non_owner( storage={ 0: 1, 1: 1, - 3: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, + 3: contract_1, 0x6E369836487C234B9E553EF3F787C2D8865520739D340C67B3D251A33986E58D: 1, # noqa: E501 }, balance=100, @@ -89,7 +89,7 @@ def test_multi_owned_remove_owner_by_non_owner( storage={ 0: 1, 1: 1, - 3: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, + 3: contract_1, 0x6E369836487C234B9E553EF3F787C2D8865520739D340C67B3D251A33986E58D: 1, # noqa: E501 }, code=bytes.fromhex( diff --git a/tests/ported_static/stWalletTest/test_multi_owned_remove_owner_my_self.py b/tests/ported_static/stWalletTest/test_multi_owned_remove_owner_my_self.py index 187c70793ba..c71db42578f 100644 --- a/tests/ported_static/stWalletTest/test_multi_owned_remove_owner_my_self.py +++ b/tests/ported_static/stWalletTest/test_multi_owned_remove_owner_my_self.py @@ -47,6 +47,7 @@ def test_multi_owned_remove_owner_my_self( gas_limit=100000000, ) + pre[sender] = Account(balance=0xDE0B6B3A75EF08F, nonce=1) # Source: raw # 0x606060405236156100775760e060020a6000350463173825d981146100795780632f54bf6e146100d55780634123cb6b146100f95780637065cb4814610102578063746c917114610136578063b75c7dc61461013f578063ba51a6df1461016f578063c2cf7326146101a3578063f00d4b5d146101e3575b005b610077600435600060003643604051808484808284375050509091019081526040519081900360200190209050610529815b600160a060020a033316600090815261010260205260408120548180808381141561066f57610806565b61021c6004355b600160a060020a0316600090815261010260205260408120541190565b61021c60015481565b610077600435600036436040518084848082843750505090910190815260405190819003602001902090506104a1816100ab565b61021c60005481565b610077600435600160a060020a033316600090815261010260205260408120549080808381141561022e576102b0565b610077600435600036436040518084848082843750505090910190815260405190819003602001902090506105e8816100ab565b61021c600435602435600082815261010360209081526040808320600160a060020a03851684526101029092528220548290818181141561064157610665565b61007760043560243560006000364360405180848480828437505050909101908152604051908190036020019020905061033a816100ab565b60408051918252519081900360200190f35b5050506000828152610103602052604081206001810154600284900a92908316819011156102b05781546001838101805492909101845590849003905560408051600160a060020a03331681526020810187905281517fc7fb647e59b18047309aa15aad418e5d7ca96d173ad704f1031a2c3d7591734b929181900390910190a15b5050505050565b600160a060020a038316600283610100811015610002570155600160a060020a0384811660008181526101026020908152604080832083905593871680835291849020869055835192835282015281517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c929181900390910190a15b505b505050565b1561033357610348836100dc565b156103535750610335565b600160a060020a03841660009081526101026020526040812054925082141561037c5750610335565b6102b75b6101045460005b818110156107b557610104805482908110156100025760009182526000805160206108ea8339815191520154146103fa576101048054610103916000918490811015610002576000805160206108ea83398151915201548252506020919091526040812081815560018101829055600201555b600101610387565b60018054810190819055600160a060020a038316906002906101008110156100025790900160005081905550600160005054610102600050600084600160a060020a03168152602001908152602001600020600050819055507f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c3826040518082600160a060020a0316815260200191505060405180910390a15b505b50565b1561049c576104af826100dc565b156104ba575061049e565b6104c2610380565b60015460fa90106104d7576104d56104ec565b505b60015460fa9010610402575061049e565b6105a65b600060015b6001548110156107ef575b6001548110801561051c5750600281610100811015610002570154600014155b1561080f576001016104fc565b1561033557600160a060020a038316600090815261010260205260408120549250821415610557575061049c565b6001600160005054036000600050541115610572575061049c565b600060028361010081101561000257508301819055600160a060020a038416815261010260205260408120556104e8610380565b5060408051600160a060020a038516815290517f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da9181900360200190a1505050565b1561049c576001548211156105fd575061049e565b600082905561060a610380565b6040805183815290517facbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da9181900360200190a15050565b506001830154600282900a908116600014156106605760009450610665565b600194505b5050505092915050565b60008681526101036020526040812080549094509092508214156106f85781548355600183810183905561010480549182018082558280158290116106c7578183600052602060002091820191016106c791906107db565b505050600284018190556101048054889290811015610002576000919091526000805160206108ea83398151915201555b506001820154600284900a908116600014156108065760408051600160a060020a03331681526020810188905281517fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda929181900390910190a18254600190116107f35760008681526101036020526040902060020154610104805490919081101561000257604060009081206000805160206108ea83398151915292909201819055808255600180830182905560029092015595506108069050565b6101048054600080835591909152610335906000805160206108ea833981519152908101905b808211156107ef57600081556001016107db565b5090565b8254600019018355600183018054821790555b50505050919050565b5b6001805411801561083257506001546002906101008110156100025701546000145b156108465760018054600019019055610810565b600154811080156108695750600154600290610100811015610002570154600014155b801561088357506002816101008110156100025701546000145b156108e457600154600290610100811015610002578101549082610100811015610002578101919091558190610102906000908361010081101561000257810154825260209290925260408120929092556001546101008110156100025701555b6104f156004c0be60200faa20559308cb7b5a1bb3255c16cb1cab91f525b5ae7a03d02fabe # noqa: E501 contract_0 = pre.deploy_contract( # noqa: F841 @@ -56,14 +57,13 @@ def test_multi_owned_remove_owner_my_self( storage={ 0: 1, 1: 1, - 3: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, + 3: sender, 0x6E369836487C234B9E553EF3F787C2D8865520739D340C67B3D251A33986E58D: 1, # noqa: E501 }, balance=100, nonce=0, address=Address(0x6295EE1B4F6DD65047762F924ECD367C17EABF8F), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A75EF08F, nonce=1) tx = Transaction( sender=sender, @@ -79,7 +79,7 @@ def test_multi_owned_remove_owner_my_self( storage={ 0: 1, 1: 1, - 3: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, + 3: sender, 260: 1, 0x6E369836487C234B9E553EF3F787C2D8865520739D340C67B3D251A33986E58D: 1, # noqa: E501 }, diff --git a/tests/ported_static/stWalletTest/test_multi_owned_remove_owner_owner_is_not_owner.py b/tests/ported_static/stWalletTest/test_multi_owned_remove_owner_owner_is_not_owner.py index 883a6cb445e..1462457ee5d 100644 --- a/tests/ported_static/stWalletTest/test_multi_owned_remove_owner_owner_is_not_owner.py +++ b/tests/ported_static/stWalletTest/test_multi_owned_remove_owner_owner_is_not_owner.py @@ -49,6 +49,7 @@ def test_multi_owned_remove_owner_owner_is_not_owner( gas_limit=100000000, ) + pre[sender] = Account(balance=0xDE0B6B3A75EF08F, nonce=1) # Source: raw # 0x606060405236156100775760e060020a6000350463173825d981146100795780632f54bf6e146100d55780634123cb6b146100f95780637065cb4814610102578063746c917114610136578063b75c7dc61461013f578063ba51a6df1461016f578063c2cf7326146101a3578063f00d4b5d146101e3575b005b610077600435600060003643604051808484808284375050509091019081526040519081900360200190209050610529815b600160a060020a033316600090815261010260205260408120548180808381141561066f57610806565b61021c6004355b600160a060020a0316600090815261010260205260408120541190565b61021c60015481565b610077600435600036436040518084848082843750505090910190815260405190819003602001902090506104a1816100ab565b61021c60005481565b610077600435600160a060020a033316600090815261010260205260408120549080808381141561022e576102b0565b610077600435600036436040518084848082843750505090910190815260405190819003602001902090506105e8816100ab565b61021c600435602435600082815261010360209081526040808320600160a060020a03851684526101029092528220548290818181141561064157610665565b61007760043560243560006000364360405180848480828437505050909101908152604051908190036020019020905061033a816100ab565b60408051918252519081900360200190f35b5050506000828152610103602052604081206001810154600284900a92908316819011156102b05781546001838101805492909101845590849003905560408051600160a060020a03331681526020810187905281517fc7fb647e59b18047309aa15aad418e5d7ca96d173ad704f1031a2c3d7591734b929181900390910190a15b5050505050565b600160a060020a038316600283610100811015610002570155600160a060020a0384811660008181526101026020908152604080832083905593871680835291849020869055835192835282015281517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c929181900390910190a15b505b505050565b1561033357610348836100dc565b156103535750610335565b600160a060020a03841660009081526101026020526040812054925082141561037c5750610335565b6102b75b6101045460005b818110156107b557610104805482908110156100025760009182526000805160206108ea8339815191520154146103fa576101048054610103916000918490811015610002576000805160206108ea83398151915201548252506020919091526040812081815560018101829055600201555b600101610387565b60018054810190819055600160a060020a038316906002906101008110156100025790900160005081905550600160005054610102600050600084600160a060020a03168152602001908152602001600020600050819055507f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c3826040518082600160a060020a0316815260200191505060405180910390a15b505b50565b1561049c576104af826100dc565b156104ba575061049e565b6104c2610380565b60015460fa90106104d7576104d56104ec565b505b60015460fa9010610402575061049e565b6105a65b600060015b6001548110156107ef575b6001548110801561051c5750600281610100811015610002570154600014155b1561080f576001016104fc565b1561033557600160a060020a038316600090815261010260205260408120549250821415610557575061049c565b6001600160005054036000600050541115610572575061049c565b600060028361010081101561000257508301819055600160a060020a038416815261010260205260408120556104e8610380565b5060408051600160a060020a038516815290517f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da9181900360200190a1505050565b1561049c576001548211156105fd575061049e565b600082905561060a610380565b6040805183815290517facbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da9181900360200190a15050565b506001830154600282900a908116600014156106605760009450610665565b600194505b5050505092915050565b60008681526101036020526040812080549094509092508214156106f85781548355600183810183905561010480549182018082558280158290116106c7578183600052602060002091820191016106c791906107db565b505050600284018190556101048054889290811015610002576000919091526000805160206108ea83398151915201555b506001820154600284900a908116600014156108065760408051600160a060020a03331681526020810188905281517fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda929181900390910190a18254600190116107f35760008681526101036020526040902060020154610104805490919081101561000257604060009081206000805160206108ea83398151915292909201819055808255600180830182905560029092015595506108069050565b6101048054600080835591909152610335906000805160206108ea833981519152908101905b808211156107ef57600081556001016107db565b5090565b8254600019018355600183018054821790555b50505050919050565b5b6001805411801561083257506001546002906101008110156100025701546000145b156108465760018054600019019055610810565b600154811080156108695750600154600290610100811015610002570154600014155b801561088357506002816101008110156100025701546000145b156108e457600154600290610100811015610002578101549082610100811015610002578101919091558190610102906000908361010081101561000257810154825260209290925260408120929092556001546101008110156100025701555b6104f156004c0be60200faa20559308cb7b5a1bb3255c16cb1cab91f525b5ae7a03d02fabe # noqa: E501 contract_0 = pre.deploy_contract( # noqa: F841 @@ -58,14 +59,13 @@ def test_multi_owned_remove_owner_owner_is_not_owner( storage={ 0: 1, 1: 1, - 3: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, + 3: sender, 0x6E369836487C234B9E553EF3F787C2D8865520739D340C67B3D251A33986E58D: 1, # noqa: E501 }, balance=100, nonce=0, address=Address(0x6295EE1B4F6DD65047762F924ECD367C17EABF8F), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A75EF08F, nonce=1) tx = Transaction( sender=sender, @@ -82,7 +82,7 @@ def test_multi_owned_remove_owner_owner_is_not_owner( storage={ 0: 1, 1: 1, - 3: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, + 3: sender, 260: 1, 0x6E369836487C234B9E553EF3F787C2D8865520739D340C67B3D251A33986E58D: 1, # noqa: E501 }, diff --git a/tests/ported_static/stWalletTest/test_multi_owned_revoke_nothing.py b/tests/ported_static/stWalletTest/test_multi_owned_revoke_nothing.py index 486af5b7585..35e97313538 100644 --- a/tests/ported_static/stWalletTest/test_multi_owned_revoke_nothing.py +++ b/tests/ported_static/stWalletTest/test_multi_owned_revoke_nothing.py @@ -47,6 +47,7 @@ def test_multi_owned_revoke_nothing( gas_limit=100000000, ) + pre[sender] = Account(balance=0xDE0B6B3A75EF08F, nonce=1) # Source: raw # 0x606060405236156100775760e060020a6000350463173825d981146100795780632f54bf6e146100d55780634123cb6b146100f95780637065cb4814610102578063746c917114610136578063b75c7dc61461013f578063ba51a6df1461016f578063c2cf7326146101a3578063f00d4b5d146101e3575b005b610077600435600060003643604051808484808284375050509091019081526040519081900360200190209050610529815b600160a060020a033316600090815261010260205260408120548180808381141561066f57610806565b61021c6004355b600160a060020a0316600090815261010260205260408120541190565b61021c60015481565b610077600435600036436040518084848082843750505090910190815260405190819003602001902090506104a1816100ab565b61021c60005481565b610077600435600160a060020a033316600090815261010260205260408120549080808381141561022e576102b0565b610077600435600036436040518084848082843750505090910190815260405190819003602001902090506105e8816100ab565b61021c600435602435600082815261010360209081526040808320600160a060020a03851684526101029092528220548290818181141561064157610665565b61007760043560243560006000364360405180848480828437505050909101908152604051908190036020019020905061033a816100ab565b60408051918252519081900360200190f35b5050506000828152610103602052604081206001810154600284900a92908316819011156102b05781546001838101805492909101845590849003905560408051600160a060020a03331681526020810187905281517fc7fb647e59b18047309aa15aad418e5d7ca96d173ad704f1031a2c3d7591734b929181900390910190a15b5050505050565b600160a060020a038316600283610100811015610002570155600160a060020a0384811660008181526101026020908152604080832083905593871680835291849020869055835192835282015281517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c929181900390910190a15b505b505050565b1561033357610348836100dc565b156103535750610335565b600160a060020a03841660009081526101026020526040812054925082141561037c5750610335565b6102b75b6101045460005b818110156107b557610104805482908110156100025760009182526000805160206108ea8339815191520154146103fa576101048054610103916000918490811015610002576000805160206108ea83398151915201548252506020919091526040812081815560018101829055600201555b600101610387565b60018054810190819055600160a060020a038316906002906101008110156100025790900160005081905550600160005054610102600050600084600160a060020a03168152602001908152602001600020600050819055507f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c3826040518082600160a060020a0316815260200191505060405180910390a15b505b50565b1561049c576104af826100dc565b156104ba575061049e565b6104c2610380565b60015460fa90106104d7576104d56104ec565b505b60015460fa9010610402575061049e565b6105a65b600060015b6001548110156107ef575b6001548110801561051c5750600281610100811015610002570154600014155b1561080f576001016104fc565b1561033557600160a060020a038316600090815261010260205260408120549250821415610557575061049c565b6001600160005054036000600050541115610572575061049c565b600060028361010081101561000257508301819055600160a060020a038416815261010260205260408120556104e8610380565b5060408051600160a060020a038516815290517f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da9181900360200190a1505050565b1561049c576001548211156105fd575061049e565b600082905561060a610380565b6040805183815290517facbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da9181900360200190a15050565b506001830154600282900a908116600014156106605760009450610665565b600194505b5050505092915050565b60008681526101036020526040812080549094509092508214156106f85781548355600183810183905561010480549182018082558280158290116106c7578183600052602060002091820191016106c791906107db565b505050600284018190556101048054889290811015610002576000919091526000805160206108ea83398151915201555b506001820154600284900a908116600014156108065760408051600160a060020a03331681526020810188905281517fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda929181900390910190a18254600190116107f35760008681526101036020526040902060020154610104805490919081101561000257604060009081206000805160206108ea83398151915292909201819055808255600180830182905560029092015595506108069050565b6101048054600080835591909152610335906000805160206108ea833981519152908101905b808211156107ef57600081556001016107db565b5090565b8254600019018355600183018054821790555b50505050919050565b5b6001805411801561083257506001546002906101008110156100025701546000145b156108465760018054600019019055610810565b600154811080156108695750600154600290610100811015610002570154600014155b801561088357506002816101008110156100025701546000145b156108e457600154600290610100811015610002578101549082610100811015610002578101919091558190610102906000908361010081101561000257810154825260209290925260408120929092556001546101008110156100025701555b6104f156004c0be60200faa20559308cb7b5a1bb3255c16cb1cab91f525b5ae7a03d02fabe # noqa: E501 contract_0 = pre.deploy_contract( # noqa: F841 @@ -56,14 +57,13 @@ def test_multi_owned_revoke_nothing( storage={ 0: 1, 1: 1, - 3: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, + 3: sender, 0x6E369836487C234B9E553EF3F787C2D8865520739D340C67B3D251A33986E58D: 1, # noqa: E501 }, balance=100, nonce=0, address=Address(0x6295EE1B4F6DD65047762F924ECD367C17EABF8F), # noqa: E501 ) - pre[sender] = Account(balance=0xDE0B6B3A75EF08F, nonce=1) tx = Transaction( sender=sender, @@ -82,7 +82,7 @@ def test_multi_owned_revoke_nothing( storage={ 0: 1, 1: 1, - 3: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, + 3: sender, 0x6E369836487C234B9E553EF3F787C2D8865520739D340C67B3D251A33986E58D: 1, # noqa: E501 }, code=bytes.fromhex( diff --git a/tests/ported_static/stWalletTest/test_wallet_add_owner_remove_pending_transaction.py b/tests/ported_static/stWalletTest/test_wallet_add_owner_remove_pending_transaction.py index 2ecaae0031b..ac91046d380 100644 --- a/tests/ported_static/stWalletTest/test_wallet_add_owner_remove_pending_transaction.py +++ b/tests/ported_static/stWalletTest/test_wallet_add_owner_remove_pending_transaction.py @@ -68,8 +68,8 @@ def test_wallet_add_owner_remove_pending_transaction( storage={ 0: 1, 1: 2, - 3: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, - 4: 0x3FB1CD2CD96C6D5C0B5EB3322D807B34482481D4, + 3: contract_0, + 4: sender, 260: 1, 263: 0xC22E4, 0x3736DCA762B6FCB9A97D5EAFDA4032FDBA21DBFA25F875001D51E03EFF955FB2: 1, # noqa: E501 @@ -100,8 +100,8 @@ def test_wallet_add_owner_remove_pending_transaction( storage={ 0: 1, 1: 3, - 3: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, - 4: 0x3FB1CD2CD96C6D5C0B5EB3322D807B34482481D4, + 3: contract_0, + 4: sender, 5: 0xBBB1CD2CD96C6D5C0B5EB3322D807B34482481D4, 263: 0xC22E4, 0x3412A0F379BAD2D2F891E4DB16A42D964DD63A031E22596F10B4DAB2AAA1D252: 3, # noqa: E501 diff --git a/tests/ported_static/stWalletTest/test_wallet_change_owner_remove_pending_transaction.py b/tests/ported_static/stWalletTest/test_wallet_change_owner_remove_pending_transaction.py index 4341d8b15b2..a3f01e84bbb 100644 --- a/tests/ported_static/stWalletTest/test_wallet_change_owner_remove_pending_transaction.py +++ b/tests/ported_static/stWalletTest/test_wallet_change_owner_remove_pending_transaction.py @@ -68,8 +68,8 @@ def test_wallet_change_owner_remove_pending_transaction( storage={ 0: 1, 1: 2, - 3: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, - 4: 0x3FB1CD2CD96C6D5C0B5EB3322D807B34482481D4, + 3: contract_0, + 4: sender, 260: 1, 263: 0xC22E4, 0x3736DCA762B6FCB9A97D5EAFDA4032FDBA21DBFA25F875001D51E03EFF955FB2: 1, # noqa: E501 @@ -102,7 +102,7 @@ def test_wallet_change_owner_remove_pending_transaction( 0: 1, 1: 2, 3: 0xAAAF5374FCE5EDBC8E2A8697C15331677E6EBAAA, - 4: 0x3FB1CD2CD96C6D5C0B5EB3322D807B34482481D4, + 4: sender, 263: 0xC22E4, 0x62CE4F671906BE9A217487BB98E428B08E12100FB0007DF10572CA00206E7D73: 1, # noqa: E501 0xD3E69D8C7F41F7AEAF8130DDC53047AEEE8CB46A73D6BAE86B7E7D6BF8312E6B: 2, # noqa: E501 diff --git a/tests/ported_static/stWalletTest/test_wallet_change_requirement_remove_pending_transaction.py b/tests/ported_static/stWalletTest/test_wallet_change_requirement_remove_pending_transaction.py index 98756462e16..86a14063092 100644 --- a/tests/ported_static/stWalletTest/test_wallet_change_requirement_remove_pending_transaction.py +++ b/tests/ported_static/stWalletTest/test_wallet_change_requirement_remove_pending_transaction.py @@ -68,8 +68,8 @@ def test_wallet_change_requirement_remove_pending_transaction( storage={ 0: 1, 1: 2, - 3: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, - 4: 0x3FB1CD2CD96C6D5C0B5EB3322D807B34482481D4, + 3: contract_0, + 4: sender, 260: 1, 263: 0xC22E4, 0x3736DCA762B6FCB9A97D5EAFDA4032FDBA21DBFA25F875001D51E03EFF955FB2: 1, # noqa: E501 @@ -99,8 +99,8 @@ def test_wallet_change_requirement_remove_pending_transaction( storage={ 0: 2, 1: 2, - 3: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, - 4: 0x3FB1CD2CD96C6D5C0B5EB3322D807B34482481D4, + 3: contract_0, + 4: sender, 263: 0xC22E4, 0x6E369836487C234B9E553EF3F787C2D8865520739D340C67B3D251A33986E58D: 1, # noqa: E501 0xD3E69D8C7F41F7AEAF8130DDC53047AEEE8CB46A73D6BAE86B7E7D6BF8312E6B: 2, # noqa: E501 diff --git a/tests/ported_static/stWalletTest/test_wallet_confirm.py b/tests/ported_static/stWalletTest/test_wallet_confirm.py index 7044c682df9..addf5a88ad6 100644 --- a/tests/ported_static/stWalletTest/test_wallet_confirm.py +++ b/tests/ported_static/stWalletTest/test_wallet_confirm.py @@ -66,8 +66,8 @@ def test_wallet_confirm( storage={ 0: 2, 1: 2, - 3: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, - 4: 0x3FB1CD2CD96C6D5C0B5EB3322D807B34482481D4, + 3: contract_0, + 4: sender, 260: 1, 263: 0xC22E4, 0x3736DCA762B6FCB9A97D5EAFDA4032FDBA21DBFA25F875001D51E03EFF955FB2: 1, # noqa: E501 @@ -103,8 +103,8 @@ def test_wallet_confirm( storage={ 0: 2, 1: 2, - 3: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, - 4: 0x3FB1CD2CD96C6D5C0B5EB3322D807B34482481D4, + 3: contract_0, + 4: sender, 260: 1, 263: 0xC22E4, 0x6E369836487C234B9E553EF3F787C2D8865520739D340C67B3D251A33986E58D: 1, # noqa: E501 diff --git a/tests/ported_static/stWalletTest/test_wallet_construction.py b/tests/ported_static/stWalletTest/test_wallet_construction.py index 98e1d81013d..3127da7cf6b 100644 --- a/tests/ported_static/stWalletTest/test_wallet_construction.py +++ b/tests/ported_static/stWalletTest/test_wallet_construction.py @@ -93,7 +93,7 @@ def test_wallet_construction( storage={ 0: 1, 1: 1, - 3: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, + 3: sender, 263: 0, 0x6E369836487C234B9E553EF3F787C2D8865520739D340C67B3D251A33986E58D: 1, # noqa: E501 }, diff --git a/tests/ported_static/stWalletTest/test_wallet_construction_partial.py b/tests/ported_static/stWalletTest/test_wallet_construction_partial.py index 5db84bc9cef..90aaebc9d2f 100644 --- a/tests/ported_static/stWalletTest/test_wallet_construction_partial.py +++ b/tests/ported_static/stWalletTest/test_wallet_construction_partial.py @@ -65,7 +65,7 @@ def test_wallet_construction_partial( storage={ 0: 1, 1: 1, - 3: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, + 3: sender, 263: 0, 0x6E369836487C234B9E553EF3F787C2D8865520739D340C67B3D251A33986E58D: 1, # noqa: E501 }, diff --git a/tests/ported_static/stWalletTest/test_wallet_default.py b/tests/ported_static/stWalletTest/test_wallet_default.py index 0dd71c4e1d6..92582b8fc42 100644 --- a/tests/ported_static/stWalletTest/test_wallet_default.py +++ b/tests/ported_static/stWalletTest/test_wallet_default.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_wallet_default( """Test_wallet_default.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) contract_0 = Address(0xEC0E71AD0A90FFE1909D27DAC207F7680ABBA42D) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A75EF08F, nonce=1) env = Environment( fee_recipient=coinbase, @@ -46,7 +43,6 @@ def test_wallet_default( gas_limit=100000000, ) - pre[sender] = Account(balance=0xDE0B6B3A75EF08F, nonce=1) # Source: raw # 0x606060405236156100b95760e060020a6000350463173825d9811461010b5780632f54bf6e146101675780634123cb6b1461018f5780635c52c2f5146101985780637065cb48146101c9578063746c9171146101fd578063797af62714610206578063b20d30a914610219578063b61d27f61461024d578063b75c7dc61461026e578063ba51a6df1461029e578063c2cf7326146102d2578063cbf0b0c014610312578063f00d4b5d14610346578063f1736d861461037f575b61038960003411156101095760408051600160a060020a033316815234602082015281517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c929181900390910190a15b565b610389600435600060003643604051808484808284375050509091019081526040519081900360200190209050610693815b600160a060020a0333166000908152610102602052604081205481808083811415610c1357610d6c565b61038b6004355b600160a060020a03811660009081526101026020526040812054115b919050565b61038b60015481565b610389600036436040518084848082843750505090910190815260405190819003602001902090506107e58161013d565b6103896004356000364360405180848480828437505050909101908152604051908190036020019020905061060b8161013d565b61038b60005481565b61038b6004355b600081610a4b8161013d565b610389600435600036436040518084848082843750505090910190815260405190819003602001902090506107d98161013d565b61038b6004803590602480359160443591820191013560006108043361016e565b610389600435600160a060020a033316600090815261010260205260408120549080808381141561039d5761041f565b610389600435600036436040518084848082843750505090910190815260405190819003602001902090506107528161013d565b61038b600435602435600082815261010360209081526040808320600160a060020a0385168452610102909252822054829081818114156107ab576107cf565b610389600435600036436040518084848082843750505090910190815260405190819003602001902090506107f38161013d565b6103896004356024356000600036436040518084848082843750505090910190815260405190819003602001902090506104ac8161013d565b61038b6101055481565b005b60408051918252519081900360200190f35b5050506000828152610103602052604081206001810154600284900a929083168190111561041f5781546001838101805492909101845590849003905560408051600160a060020a03331681526020810187905281517fc7fb647e59b18047309aa15aad418e5d7ca96d173ad704f1031a2c3d7591734b929181900390910190a15b5050505050565b600160a060020a03831660028361010081101561000257508301819055600160a060020a03851660008181526101026020908152604080832083905584835291829020869055815192835282019290925281517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c929181900390910190a15b505b505050565b156104a5576104ba8361016e565b156104c557506104a7565b600160a060020a0384166000908152610102602052604081205492508214156104ee57506104a7565b6104265b6101045460005b81811015610eba57610104805461010891600091849081101561000257600080516020610f7583398151915201548252506020918252604081208054600160a060020a0319168155600181018290556002810180548382559083528383209193610f3f92601f9290920104810190610a33565b60018054810190819055600160a060020a038316906002906101008110156100025790900160005081905550600160005054610102600050600084600160a060020a03168152602001908152602001600020600050819055507f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c3826040518082600160a060020a0316815260200191505060405180910390a15b505b50565b15610606576106198261016e565b156106245750610608565b61062c6104f2565b60015460fa90106106415761063f610656565b505b60015460fa901061056c5750610608565b6107105b600060015b600154811015610a47575b600154811080156106865750600281610100811015610002570154600014155b15610d7557600101610666565b156104a757600160a060020a0383166000908152610102602052604081205492508214156106c15750610606565b60016001600050540360006000505411156106dc5750610606565b600060028361010081101561000257508301819055600160a060020a038416815261010260205260408120556106526104f2565b5060408051600160a060020a038516815290517f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da9181900360200190a1505050565b15610606576001548211156107675750610608565b60008290556107746104f2565b6040805183815290517facbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da9181900360200190a15050565b506001830154600282900a908116600014156107ca57600094506107cf565b600194505b5050505092915050565b15610606575061010555565b156106085760006101065550565b156106065781600160a060020a0316ff5b15610a2357610818846000610e4f3361016e565b156108d4577f92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd00433858786866040518086600160a060020a0316815260200185815260200184600160a060020a031681526020018060200182810382528484828181526020019250808284378201915050965050505050505060405180910390a184600160a060020a03168484846040518083838082843750505090810191506000908083038185876185025a03f15060009350610a2392505050565b6000364360405180848480828437505050909101908152604051908190036020019020915061090490508161020d565b158015610927575060008181526101086020526040812054600160a060020a0316145b15610a235760008181526101086020908152604082208054600160a060020a03191688178155600181018790556002018054858255818452928290209092601f01919091048101908490868215610a2b579182015b82811115610a2b57823582600050559160200191906001019061097c565b50600050507f1733cbb53659d713b79580f79f3f9ff215f78a7c7aa45890f3b89fc5cddfbf328133868887876040518087815260200186600160a060020a0316815260200185815260200184600160a060020a03168152602001806020018281038252848482818152602001925080828437820191505097505050505050505060405180910390a15b949350505050565b5061099a9291505b80821115610a475760008155600101610a33565b5090565b15610c005760008381526101086020526040812054600160a060020a031614610c0057604080516000918220805460018201546002929092018054600160a060020a0392909216949293909291819084908015610acd57820191906000526020600020905b815481529060010190602001808311610ab057829003601f168201915b50509250505060006040518083038185876185025a03f1505050600084815261010860209081526040805181842080546001820154600160a060020a033381811686529685018c905294840181905293166060830181905260a06080840181815260029390930180549185018290527fe7c957c06e9a662c1a6c77366179f5b702b97651dc28eee7d5bf1dff6e40bb4a985095968b969294929390929160c083019085908015610ba257820191906000526020600020905b815481529060010190602001808311610b8557829003601f168201915b505097505050505050505060405180910390a160008381526101086020908152604082208054600160a060020a031916815560018101839055600281018054848255908452828420919392610c0692601f9290920104810190610a33565b50919050565b505050600191505061018a565b6000868152610103602052604081208054909450909250821415610c9c578154835560018381018390556101048054918201808255828015829011610c6b57818360005260206000209182019101610c6b9190610a33565b50505060028401819055610104805488929081101561000257600091909152600080516020610f7583398151915201555b506001820154600284900a90811660001415610d6c5760408051600160a060020a03331681526020810188905281517fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda929181900390910190a1825460019011610d59576000868152610103602052604090206002015461010480549091908110156100025760406000908120600080516020610f758339815191529290920181905580825560018083018290556002909201559550610d6c9050565b8254600019018355600183018054821790555b50505050919050565b5b60018054118015610d9857506001546002906101008110156100025701546000145b15610dac5760018054600019019055610d76565b60015481108015610dcf5750600154600290610100811015610002570154600014155b8015610de957506002816101008110156100025701546000145b15610e4a57600154600290610100811015610002578101549082610100811015610002578101919091558190610102906000908361010081101561000257810154825260209290925260408120929092556001546101008110156100025701555b61065b565b1561018a5761010754610e655b62015180420490565b1115610e7e57600061010655610e79610e5c565b610107555b6101065480830110801590610e9c5750610106546101055490830111155b15610eb25750610106805482019055600161018a565b50600061018a565b6106066101045460005b81811015610f4a5761010480548290811015610002576000918252600080516020610f75833981519152015414610f3757610104805461010391600091849081101561000257600080516020610f7583398151915201548252506020919091526040812081815560018101829055600201555b600101610ec4565b5050506001016104f9565b61010480546000808355919091526104a790600080516020610f7583398151915290810190610a3356004c0be60200faa20559308cb7b5a1bb3255c16cb1cab91f525b5ae7a03d02fabe # noqa: E501 contract_0 = pre.deploy_contract( # noqa: F841 @@ -56,13 +52,12 @@ def test_wallet_default( storage={ 0: 1, 1: 1, - 3: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, + 3: sender, 262: 0xC22E4, 0x6E369836487C234B9E553EF3F787C2D8865520739D340C67B3D251A33986E58D: 1, # noqa: E501 }, balance=100, nonce=0, - address=Address(0xEC0E71AD0A90FFE1909D27DAC207F7680ABBA42D), # noqa: E501 ) tx = Transaction( @@ -80,7 +75,7 @@ def test_wallet_default( storage={ 0: 1, 1: 1, - 3: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, + 3: sender, 262: 0xC22E4, 0x6E369836487C234B9E553EF3F787C2D8865520739D340C67B3D251A33986E58D: 1, # noqa: E501 }, diff --git a/tests/ported_static/stWalletTest/test_wallet_default_with_out_value.py b/tests/ported_static/stWalletTest/test_wallet_default_with_out_value.py index 8694af8452a..944b60d6d4f 100644 --- a/tests/ported_static/stWalletTest/test_wallet_default_with_out_value.py +++ b/tests/ported_static/stWalletTest/test_wallet_default_with_out_value.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_wallet_default_with_out_value( """Test_wallet_default_with_out_value.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) contract_0 = Address(0xEC0E71AD0A90FFE1909D27DAC207F7680ABBA42D) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A75EF08F, nonce=1) env = Environment( fee_recipient=coinbase, @@ -46,7 +43,6 @@ def test_wallet_default_with_out_value( gas_limit=100000000, ) - pre[sender] = Account(balance=0xDE0B6B3A75EF08F, nonce=1) # Source: raw # 0x606060405236156100b95760e060020a6000350463173825d9811461010b5780632f54bf6e146101675780634123cb6b1461018f5780635c52c2f5146101985780637065cb48146101c9578063746c9171146101fd578063797af62714610206578063b20d30a914610219578063b61d27f61461024d578063b75c7dc61461026e578063ba51a6df1461029e578063c2cf7326146102d2578063cbf0b0c014610312578063f00d4b5d14610346578063f1736d861461037f575b61038960003411156101095760408051600160a060020a033316815234602082015281517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c929181900390910190a15b565b610389600435600060003643604051808484808284375050509091019081526040519081900360200190209050610693815b600160a060020a0333166000908152610102602052604081205481808083811415610c1357610d6c565b61038b6004355b600160a060020a03811660009081526101026020526040812054115b919050565b61038b60015481565b610389600036436040518084848082843750505090910190815260405190819003602001902090506107e58161013d565b6103896004356000364360405180848480828437505050909101908152604051908190036020019020905061060b8161013d565b61038b60005481565b61038b6004355b600081610a4b8161013d565b610389600435600036436040518084848082843750505090910190815260405190819003602001902090506107d98161013d565b61038b6004803590602480359160443591820191013560006108043361016e565b610389600435600160a060020a033316600090815261010260205260408120549080808381141561039d5761041f565b610389600435600036436040518084848082843750505090910190815260405190819003602001902090506107528161013d565b61038b600435602435600082815261010360209081526040808320600160a060020a0385168452610102909252822054829081818114156107ab576107cf565b610389600435600036436040518084848082843750505090910190815260405190819003602001902090506107f38161013d565b6103896004356024356000600036436040518084848082843750505090910190815260405190819003602001902090506104ac8161013d565b61038b6101055481565b005b60408051918252519081900360200190f35b5050506000828152610103602052604081206001810154600284900a929083168190111561041f5781546001838101805492909101845590849003905560408051600160a060020a03331681526020810187905281517fc7fb647e59b18047309aa15aad418e5d7ca96d173ad704f1031a2c3d7591734b929181900390910190a15b5050505050565b600160a060020a03831660028361010081101561000257508301819055600160a060020a03851660008181526101026020908152604080832083905584835291829020869055815192835282019290925281517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c929181900390910190a15b505b505050565b156104a5576104ba8361016e565b156104c557506104a7565b600160a060020a0384166000908152610102602052604081205492508214156104ee57506104a7565b6104265b6101045460005b81811015610eba57610104805461010891600091849081101561000257600080516020610f7583398151915201548252506020918252604081208054600160a060020a0319168155600181018290556002810180548382559083528383209193610f3f92601f9290920104810190610a33565b60018054810190819055600160a060020a038316906002906101008110156100025790900160005081905550600160005054610102600050600084600160a060020a03168152602001908152602001600020600050819055507f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c3826040518082600160a060020a0316815260200191505060405180910390a15b505b50565b15610606576106198261016e565b156106245750610608565b61062c6104f2565b60015460fa90106106415761063f610656565b505b60015460fa901061056c5750610608565b6107105b600060015b600154811015610a47575b600154811080156106865750600281610100811015610002570154600014155b15610d7557600101610666565b156104a757600160a060020a0383166000908152610102602052604081205492508214156106c15750610606565b60016001600050540360006000505411156106dc5750610606565b600060028361010081101561000257508301819055600160a060020a038416815261010260205260408120556106526104f2565b5060408051600160a060020a038516815290517f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da9181900360200190a1505050565b15610606576001548211156107675750610608565b60008290556107746104f2565b6040805183815290517facbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da9181900360200190a15050565b506001830154600282900a908116600014156107ca57600094506107cf565b600194505b5050505092915050565b15610606575061010555565b156106085760006101065550565b156106065781600160a060020a0316ff5b15610a2357610818846000610e4f3361016e565b156108d4577f92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd00433858786866040518086600160a060020a0316815260200185815260200184600160a060020a031681526020018060200182810382528484828181526020019250808284378201915050965050505050505060405180910390a184600160a060020a03168484846040518083838082843750505090810191506000908083038185876185025a03f15060009350610a2392505050565b6000364360405180848480828437505050909101908152604051908190036020019020915061090490508161020d565b158015610927575060008181526101086020526040812054600160a060020a0316145b15610a235760008181526101086020908152604082208054600160a060020a03191688178155600181018790556002018054858255818452928290209092601f01919091048101908490868215610a2b579182015b82811115610a2b57823582600050559160200191906001019061097c565b50600050507f1733cbb53659d713b79580f79f3f9ff215f78a7c7aa45890f3b89fc5cddfbf328133868887876040518087815260200186600160a060020a0316815260200185815260200184600160a060020a03168152602001806020018281038252848482818152602001925080828437820191505097505050505050505060405180910390a15b949350505050565b5061099a9291505b80821115610a475760008155600101610a33565b5090565b15610c005760008381526101086020526040812054600160a060020a031614610c0057604080516000918220805460018201546002929092018054600160a060020a0392909216949293909291819084908015610acd57820191906000526020600020905b815481529060010190602001808311610ab057829003601f168201915b50509250505060006040518083038185876185025a03f1505050600084815261010860209081526040805181842080546001820154600160a060020a033381811686529685018c905294840181905293166060830181905260a06080840181815260029390930180549185018290527fe7c957c06e9a662c1a6c77366179f5b702b97651dc28eee7d5bf1dff6e40bb4a985095968b969294929390929160c083019085908015610ba257820191906000526020600020905b815481529060010190602001808311610b8557829003601f168201915b505097505050505050505060405180910390a160008381526101086020908152604082208054600160a060020a031916815560018101839055600281018054848255908452828420919392610c0692601f9290920104810190610a33565b50919050565b505050600191505061018a565b6000868152610103602052604081208054909450909250821415610c9c578154835560018381018390556101048054918201808255828015829011610c6b57818360005260206000209182019101610c6b9190610a33565b50505060028401819055610104805488929081101561000257600091909152600080516020610f7583398151915201555b506001820154600284900a90811660001415610d6c5760408051600160a060020a03331681526020810188905281517fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda929181900390910190a1825460019011610d59576000868152610103602052604090206002015461010480549091908110156100025760406000908120600080516020610f758339815191529290920181905580825560018083018290556002909201559550610d6c9050565b8254600019018355600183018054821790555b50505050919050565b5b60018054118015610d9857506001546002906101008110156100025701546000145b15610dac5760018054600019019055610d76565b60015481108015610dcf5750600154600290610100811015610002570154600014155b8015610de957506002816101008110156100025701546000145b15610e4a57600154600290610100811015610002578101549082610100811015610002578101919091558190610102906000908361010081101561000257810154825260209290925260408120929092556001546101008110156100025701555b61065b565b1561018a5761010754610e655b62015180420490565b1115610e7e57600061010655610e79610e5c565b610107555b6101065480830110801590610e9c5750610106546101055490830111155b15610eb25750610106805482019055600161018a565b50600061018a565b6106066101045460005b81811015610f4a5761010480548290811015610002576000918252600080516020610f75833981519152015414610f3757610104805461010391600091849081101561000257600080516020610f7583398151915201548252506020919091526040812081815560018101829055600201555b600101610ec4565b5050506001016104f9565b61010480546000808355919091526104a790600080516020610f7583398151915290810190610a3356004c0be60200faa20559308cb7b5a1bb3255c16cb1cab91f525b5ae7a03d02fabe # noqa: E501 contract_0 = pre.deploy_contract( # noqa: F841 @@ -56,13 +52,12 @@ def test_wallet_default_with_out_value( storage={ 0: 1, 1: 1, - 3: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, + 3: sender, 262: 0xC22E4, 0x6E369836487C234B9E553EF3F787C2D8865520739D340C67B3D251A33986E58D: 1, # noqa: E501 }, balance=100, nonce=0, - address=Address(0xEC0E71AD0A90FFE1909D27DAC207F7680ABBA42D), # noqa: E501 ) tx = Transaction( @@ -79,7 +74,7 @@ def test_wallet_default_with_out_value( storage={ 0: 1, 1: 1, - 3: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, + 3: sender, 262: 0xC22E4, 0x6E369836487C234B9E553EF3F787C2D8865520739D340C67B3D251A33986E58D: 1, # noqa: E501 }, diff --git a/tests/ported_static/stWalletTest/test_wallet_execute_over_daily_limit_multi_owner.py b/tests/ported_static/stWalletTest/test_wallet_execute_over_daily_limit_multi_owner.py index 7638b1c8965..0b55aad076c 100644 --- a/tests/ported_static/stWalletTest/test_wallet_execute_over_daily_limit_multi_owner.py +++ b/tests/ported_static/stWalletTest/test_wallet_execute_over_daily_limit_multi_owner.py @@ -59,7 +59,7 @@ def test_wallet_execute_over_daily_limit_multi_owner( storage={ 0: 2, 1: 2, - 3: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, + 3: sender, 4: 0x3FB1CD2CD96C6D5C0B5EB3322D807B34482481D4, 0x6E369836487C234B9E553EF3F787C2D8865520739D340C67B3D251A33986E58D: 1, # noqa: E501 0xD3E69D8C7F41F7AEAF8130DDC53047AEEE8CB46A73D6BAE86B7E7D6BF8312E6B: 2, # noqa: E501 @@ -86,7 +86,7 @@ def test_wallet_execute_over_daily_limit_multi_owner( storage={ 0: 2, 1: 2, - 3: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, + 3: sender, 4: 0x3FB1CD2CD96C6D5C0B5EB3322D807B34482481D4, 260: 1, 263: 0, diff --git a/tests/ported_static/stWalletTest/test_wallet_execute_over_daily_limit_only_one_owner.py b/tests/ported_static/stWalletTest/test_wallet_execute_over_daily_limit_only_one_owner.py index f26d28872ba..444a6a1b747 100644 --- a/tests/ported_static/stWalletTest/test_wallet_execute_over_daily_limit_only_one_owner.py +++ b/tests/ported_static/stWalletTest/test_wallet_execute_over_daily_limit_only_one_owner.py @@ -59,7 +59,7 @@ def test_wallet_execute_over_daily_limit_only_one_owner( storage={ 0: 1, 1: 1, - 3: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, + 3: sender, 261: 4, 0x6E369836487C234B9E553EF3F787C2D8865520739D340C67B3D251A33986E58D: 1, # noqa: E501 }, @@ -85,7 +85,7 @@ def test_wallet_execute_over_daily_limit_only_one_owner( storage={ 0: 1, 1: 1, - 3: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, + 3: sender, 260: 1, 261: 4, 263: 0, diff --git a/tests/ported_static/stWalletTest/test_wallet_execute_over_daily_limit_only_one_owner_new.py b/tests/ported_static/stWalletTest/test_wallet_execute_over_daily_limit_only_one_owner_new.py index 3389e6bd7f1..3cc6e54b407 100644 --- a/tests/ported_static/stWalletTest/test_wallet_execute_over_daily_limit_only_one_owner_new.py +++ b/tests/ported_static/stWalletTest/test_wallet_execute_over_daily_limit_only_one_owner_new.py @@ -59,7 +59,7 @@ def test_wallet_execute_over_daily_limit_only_one_owner_new( storage={ 0: 1, 1: 1, - 3: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, + 3: sender, 262: 4, 263: 0xC22E4, 0x6E369836487C234B9E553EF3F787C2D8865520739D340C67B3D251A33986E58D: 1, # noqa: E501 @@ -86,7 +86,7 @@ def test_wallet_execute_over_daily_limit_only_one_owner_new( storage={ 0: 1, 1: 1, - 3: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, + 3: sender, 260: 1, 262: 4, 263: 0xC22E4, diff --git a/tests/ported_static/stWalletTest/test_wallet_execute_under_daily_limit.py b/tests/ported_static/stWalletTest/test_wallet_execute_under_daily_limit.py index a22312370ea..2399d447e41 100644 --- a/tests/ported_static/stWalletTest/test_wallet_execute_under_daily_limit.py +++ b/tests/ported_static/stWalletTest/test_wallet_execute_under_daily_limit.py @@ -57,7 +57,7 @@ def test_wallet_execute_under_daily_limit( storage={ 0: 1, 1: 1, - 3: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, + 3: sender, 261: 255, 262: 0xC22E4, 0x6E369836487C234B9E553EF3F787C2D8865520739D340C67B3D251A33986E58D: 1, # noqa: E501 @@ -84,7 +84,7 @@ def test_wallet_execute_under_daily_limit( storage={ 0: 1, 1: 1, - 3: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, + 3: sender, 260: 1, 261: 255, 262: 0xC22E4, diff --git a/tests/ported_static/stWalletTest/test_wallet_kill.py b/tests/ported_static/stWalletTest/test_wallet_kill.py index 144f52e089d..9bd09c31dcf 100644 --- a/tests/ported_static/stWalletTest/test_wallet_kill.py +++ b/tests/ported_static/stWalletTest/test_wallet_kill.py @@ -57,7 +57,7 @@ def test_wallet_kill( storage={ 0: 1, 1: 1, - 3: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, + 3: sender, 262: 0xC22E4, 0x6E369836487C234B9E553EF3F787C2D8865520739D340C67B3D251A33986E58D: 1, # noqa: E501 }, @@ -81,7 +81,7 @@ def test_wallet_kill( storage={ 0: 1, 1: 1, - 3: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, + 3: sender, 260: 1, 262: 0xC22E4, 0x6E369836487C234B9E553EF3F787C2D8865520739D340C67B3D251A33986E58D: 1, # noqa: E501 diff --git a/tests/ported_static/stWalletTest/test_wallet_kill_not_by_owner.py b/tests/ported_static/stWalletTest/test_wallet_kill_not_by_owner.py index 2023f062962..23e2f51e2aa 100644 --- a/tests/ported_static/stWalletTest/test_wallet_kill_not_by_owner.py +++ b/tests/ported_static/stWalletTest/test_wallet_kill_not_by_owner.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,9 +34,7 @@ def test_wallet_kill_not_by_owner( coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) contract_0 = Address(0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) contract_1 = Address(0xEC0E71AD0A90FFE1909D27DAC207F7680ABBA42D) - sender = EOA( - key=0xA95DEFE70EBEA7804F9C3BE42D20D24375E2A92B9D9666B832069C5F3CD423DD - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A75EF08F, nonce=1) env = Environment( fee_recipient=coinbase, @@ -48,14 +45,12 @@ def test_wallet_kill_not_by_owner( gas_limit=100000000, ) - pre[sender] = Account(balance=0xDE0B6B3A75EF08F, nonce=1) # Source: hex # 0x contract_0 = pre.deploy_contract( # noqa: F841 code="", balance=0xDE0B6B3A75EF08F, nonce=1, - address=Address(0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B), # noqa: E501 ) # Source: raw # 0x606060405236156100b95760e060020a6000350463173825d9811461010b5780632f54bf6e146101675780634123cb6b1461018f5780635c52c2f5146101985780637065cb48146101c9578063746c9171146101fd578063797af62714610206578063b20d30a914610219578063b61d27f61461024d578063b75c7dc61461026e578063ba51a6df1461029e578063c2cf7326146102d2578063cbf0b0c014610312578063f00d4b5d14610346578063f1736d861461037f575b61038960003411156101095760408051600160a060020a033316815234602082015281517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c929181900390910190a15b565b610389600435600060003643604051808484808284375050509091019081526040519081900360200190209050610693815b600160a060020a0333166000908152610102602052604081205481808083811415610c1357610d6c565b61038b6004355b600160a060020a03811660009081526101026020526040812054115b919050565b61038b60015481565b610389600036436040518084848082843750505090910190815260405190819003602001902090506107e58161013d565b6103896004356000364360405180848480828437505050909101908152604051908190036020019020905061060b8161013d565b61038b60005481565b61038b6004355b600081610a4b8161013d565b610389600435600036436040518084848082843750505090910190815260405190819003602001902090506107d98161013d565b61038b6004803590602480359160443591820191013560006108043361016e565b610389600435600160a060020a033316600090815261010260205260408120549080808381141561039d5761041f565b610389600435600036436040518084848082843750505090910190815260405190819003602001902090506107528161013d565b61038b600435602435600082815261010360209081526040808320600160a060020a0385168452610102909252822054829081818114156107ab576107cf565b610389600435600036436040518084848082843750505090910190815260405190819003602001902090506107f38161013d565b6103896004356024356000600036436040518084848082843750505090910190815260405190819003602001902090506104ac8161013d565b61038b6101055481565b005b60408051918252519081900360200190f35b5050506000828152610103602052604081206001810154600284900a929083168190111561041f5781546001838101805492909101845590849003905560408051600160a060020a03331681526020810187905281517fc7fb647e59b18047309aa15aad418e5d7ca96d173ad704f1031a2c3d7591734b929181900390910190a15b5050505050565b600160a060020a03831660028361010081101561000257508301819055600160a060020a03851660008181526101026020908152604080832083905584835291829020869055815192835282019290925281517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c929181900390910190a15b505b505050565b156104a5576104ba8361016e565b156104c557506104a7565b600160a060020a0384166000908152610102602052604081205492508214156104ee57506104a7565b6104265b6101045460005b81811015610eba57610104805461010891600091849081101561000257600080516020610f7583398151915201548252506020918252604081208054600160a060020a0319168155600181018290556002810180548382559083528383209193610f3f92601f9290920104810190610a33565b60018054810190819055600160a060020a038316906002906101008110156100025790900160005081905550600160005054610102600050600084600160a060020a03168152602001908152602001600020600050819055507f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c3826040518082600160a060020a0316815260200191505060405180910390a15b505b50565b15610606576106198261016e565b156106245750610608565b61062c6104f2565b60015460fa90106106415761063f610656565b505b60015460fa901061056c5750610608565b6107105b600060015b600154811015610a47575b600154811080156106865750600281610100811015610002570154600014155b15610d7557600101610666565b156104a757600160a060020a0383166000908152610102602052604081205492508214156106c15750610606565b60016001600050540360006000505411156106dc5750610606565b600060028361010081101561000257508301819055600160a060020a038416815261010260205260408120556106526104f2565b5060408051600160a060020a038516815290517f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da9181900360200190a1505050565b15610606576001548211156107675750610608565b60008290556107746104f2565b6040805183815290517facbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da9181900360200190a15050565b506001830154600282900a908116600014156107ca57600094506107cf565b600194505b5050505092915050565b15610606575061010555565b156106085760006101065550565b156106065781600160a060020a0316ff5b15610a2357610818846000610e4f3361016e565b156108d4577f92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd00433858786866040518086600160a060020a0316815260200185815260200184600160a060020a031681526020018060200182810382528484828181526020019250808284378201915050965050505050505060405180910390a184600160a060020a03168484846040518083838082843750505090810191506000908083038185876185025a03f15060009350610a2392505050565b6000364360405180848480828437505050909101908152604051908190036020019020915061090490508161020d565b158015610927575060008181526101086020526040812054600160a060020a0316145b15610a235760008181526101086020908152604082208054600160a060020a03191688178155600181018790556002018054858255818452928290209092601f01919091048101908490868215610a2b579182015b82811115610a2b57823582600050559160200191906001019061097c565b50600050507f1733cbb53659d713b79580f79f3f9ff215f78a7c7aa45890f3b89fc5cddfbf328133868887876040518087815260200186600160a060020a0316815260200185815260200184600160a060020a03168152602001806020018281038252848482818152602001925080828437820191505097505050505050505060405180910390a15b949350505050565b5061099a9291505b80821115610a475760008155600101610a33565b5090565b15610c005760008381526101086020526040812054600160a060020a031614610c0057604080516000918220805460018201546002929092018054600160a060020a0392909216949293909291819084908015610acd57820191906000526020600020905b815481529060010190602001808311610ab057829003601f168201915b50509250505060006040518083038185876185025a03f1505050600084815261010860209081526040805181842080546001820154600160a060020a033381811686529685018c905294840181905293166060830181905260a06080840181815260029390930180549185018290527fe7c957c06e9a662c1a6c77366179f5b702b97651dc28eee7d5bf1dff6e40bb4a985095968b969294929390929160c083019085908015610ba257820191906000526020600020905b815481529060010190602001808311610b8557829003601f168201915b505097505050505050505060405180910390a160008381526101086020908152604082208054600160a060020a031916815560018101839055600281018054848255908452828420919392610c0692601f9290920104810190610a33565b50919050565b505050600191505061018a565b6000868152610103602052604081208054909450909250821415610c9c578154835560018381018390556101048054918201808255828015829011610c6b57818360005260206000209182019101610c6b9190610a33565b50505060028401819055610104805488929081101561000257600091909152600080516020610f7583398151915201555b506001820154600284900a90811660001415610d6c5760408051600160a060020a03331681526020810188905281517fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda929181900390910190a1825460019011610d59576000868152610103602052604090206002015461010480549091908110156100025760406000908120600080516020610f758339815191529290920181905580825560018083018290556002909201559550610d6c9050565b8254600019018355600183018054821790555b50505050919050565b5b60018054118015610d9857506001546002906101008110156100025701546000145b15610dac5760018054600019019055610d76565b60015481108015610dcf5750600154600290610100811015610002570154600014155b8015610de957506002816101008110156100025701546000145b15610e4a57600154600290610100811015610002578101549082610100811015610002578101919091558190610102906000908361010081101561000257810154825260209290925260408120929092556001546101008110156100025701555b61065b565b1561018a5761010754610e655b62015180420490565b1115610e7e57600061010655610e79610e5c565b610107555b6101065480830110801590610e9c5750610106546101055490830111155b15610eb25750610106805482019055600161018a565b50600061018a565b6106066101045460005b81811015610f4a5761010480548290811015610002576000918252600080516020610f75833981519152015414610f3757610104805461010391600091849081101561000257600080516020610f7583398151915201548252506020919091526040812081815560018101829055600201555b600101610ec4565b5050506001016104f9565b61010480546000808355919091526104a790600080516020610f7583398151915290810190610a3356004c0be60200faa20559308cb7b5a1bb3255c16cb1cab91f525b5ae7a03d02fabe # noqa: E501 @@ -66,13 +61,12 @@ def test_wallet_kill_not_by_owner( storage={ 0: 1, 1: 1, - 3: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, + 3: contract_0, 262: 0xC22E4, 0x6E369836487C234B9E553EF3F787C2D8865520739D340C67B3D251A33986E58D: 1, # noqa: E501 }, balance=100, nonce=0, - address=Address(0xEC0E71AD0A90FFE1909D27DAC207F7680ABBA42D), # noqa: E501 ) tx = Transaction( @@ -92,7 +86,7 @@ def test_wallet_kill_not_by_owner( storage={ 0: 1, 1: 1, - 3: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, + 3: contract_0, 262: 0xC22E4, 0x6E369836487C234B9E553EF3F787C2D8865520739D340C67B3D251A33986E58D: 1, # noqa: E501 }, diff --git a/tests/ported_static/stWalletTest/test_wallet_kill_to_wallet.py b/tests/ported_static/stWalletTest/test_wallet_kill_to_wallet.py index fe65cfeb309..248a076edb5 100644 --- a/tests/ported_static/stWalletTest/test_wallet_kill_to_wallet.py +++ b/tests/ported_static/stWalletTest/test_wallet_kill_to_wallet.py @@ -57,7 +57,7 @@ def test_wallet_kill_to_wallet( storage={ 0: 1, 1: 1, - 3: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, + 3: sender, 262: 0xC22E4, 0x6E369836487C234B9E553EF3F787C2D8865520739D340C67B3D251A33986E58D: 1, # noqa: E501 }, @@ -81,7 +81,7 @@ def test_wallet_kill_to_wallet( storage={ 0: 1, 1: 1, - 3: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, + 3: sender, 260: 1, 262: 0xC22E4, 0x6E369836487C234B9E553EF3F787C2D8865520739D340C67B3D251A33986E58D: 1, # noqa: E501 diff --git a/tests/ported_static/stWalletTest/test_wallet_remove_owner_remove_pending_transaction.py b/tests/ported_static/stWalletTest/test_wallet_remove_owner_remove_pending_transaction.py index 7aa23367925..cc9fedeb207 100644 --- a/tests/ported_static/stWalletTest/test_wallet_remove_owner_remove_pending_transaction.py +++ b/tests/ported_static/stWalletTest/test_wallet_remove_owner_remove_pending_transaction.py @@ -68,8 +68,8 @@ def test_wallet_remove_owner_remove_pending_transaction( storage={ 0: 1, 1: 2, - 3: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B, - 4: 0x3FB1CD2CD96C6D5C0B5EB3322D807B34482481D4, + 3: contract_0, + 4: sender, 260: 1, 263: 0xC22E4, 0x3736DCA762B6FCB9A97D5EAFDA4032FDBA21DBFA25F875001D51E03EFF955FB2: 1, # noqa: E501 @@ -99,7 +99,7 @@ def test_wallet_remove_owner_remove_pending_transaction( storage={ 0: 1, 1: 1, - 3: 0x3FB1CD2CD96C6D5C0B5EB3322D807B34482481D4, + 3: sender, 263: 0xC22E4, 0xD3E69D8C7F41F7AEAF8130DDC53047AEEE8CB46A73D6BAE86B7E7D6BF8312E6B: 1, # noqa: E501 }, diff --git a/tests/ported_static/stZeroCallsTest/test_zero_value_call_to_empty_paris.py b/tests/ported_static/stZeroCallsTest/test_zero_value_call_to_empty_paris.py index 04359d4d00a..9153b52e963 100644 --- a/tests/ported_static/stZeroCallsTest/test_zero_value_call_to_empty_paris.py +++ b/tests/ported_static/stZeroCallsTest/test_zero_value_call_to_empty_paris.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,10 +32,7 @@ def test_zero_value_call_to_empty_paris( ) -> None: """Test_zero_value_call_to_empty_paris.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - addr = Address(0x76FAE819612A29489A1A43208613D8F8557B8898) - sender = EOA( - key=0x4F31B3206FBF0E0E598B9B1A7D8AC86302A0FF1D8930738F1BEBAE9B67173E52 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -47,7 +43,7 @@ def test_zero_value_call_to_empty_paris( gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) + addr = pre.fund_eoa(amount=10) # noqa: F841 # Source: lll # { [[0]](GAS) [[1]] (CALL 60000 0 0 0 0 0) [[100]] 1 } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -56,7 +52,7 @@ def test_zero_value_call_to_empty_paris( key=0x1, value=Op.CALL( gas=0xEA60, - address=0x76FAE819612A29489A1A43208613D8F8557B8898, + address=addr, value=0x0, args_offset=0x0, args_size=0x0, @@ -67,9 +63,7 @@ def test_zero_value_call_to_empty_paris( + Op.SSTORE(key=0x64, value=0x1) + Op.STOP, nonce=0, - address=Address(0xF202BAE278AC09857F5A56991C7A4679632F5841), # noqa: E501 ) - pre[addr] = Account(balance=10) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stZeroCallsTest/test_zero_value_call_to_non_zero_balance.py b/tests/ported_static/stZeroCallsTest/test_zero_value_call_to_non_zero_balance.py index ffcdfb6e038..50c861952c0 100644 --- a/tests/ported_static/stZeroCallsTest/test_zero_value_call_to_non_zero_balance.py +++ b/tests/ported_static/stZeroCallsTest/test_zero_value_call_to_non_zero_balance.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,10 +32,7 @@ def test_zero_value_call_to_non_zero_balance( ) -> None: """Test_zero_value_call_to_non_zero_balance.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - addr = Address(0x9089DA66E8BBC08846842A301905501BC8525DC4) - sender = EOA( - key=0x4F31B3206FBF0E0E598B9B1A7D8AC86302A0FF1D8930738F1BEBAE9B67173E52 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -47,7 +43,7 @@ def test_zero_value_call_to_non_zero_balance( gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) + addr = pre.fund_eoa(amount=100) # noqa: F841 # Source: lll # { [[0]](GAS) [[1]] (CALL 60000 0 0 0 0 0) [[100]] 1 } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -56,7 +52,7 @@ def test_zero_value_call_to_non_zero_balance( key=0x1, value=Op.CALL( gas=0xEA60, - address=0x9089DA66E8BBC08846842A301905501BC8525DC4, + address=addr, value=0x0, args_offset=0x0, args_size=0x0, @@ -67,9 +63,7 @@ def test_zero_value_call_to_non_zero_balance( + Op.SSTORE(key=0x64, value=0x1) + Op.STOP, nonce=0, - address=Address(0xF202BAE278AC09857F5A56991C7A4679632F5841), # noqa: E501 ) - pre[addr] = Account(balance=100) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stZeroCallsTest/test_zero_value_call_to_one_storage_key_paris.py b/tests/ported_static/stZeroCallsTest/test_zero_value_call_to_one_storage_key_paris.py index 44075302b5e..a073612b73b 100644 --- a/tests/ported_static/stZeroCallsTest/test_zero_value_call_to_one_storage_key_paris.py +++ b/tests/ported_static/stZeroCallsTest/test_zero_value_call_to_one_storage_key_paris.py @@ -50,6 +50,7 @@ def test_zero_value_call_to_one_storage_key_paris( ) pre[sender] = Account(balance=0xE8D4A51000) + pre[addr] = Account(balance=10, storage={0: 1}) # Source: lll # { [[0]](GAS) [[1]] (CALL 60000 0 0 0 0 0) [[100]] 1 } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -71,7 +72,6 @@ def test_zero_value_call_to_one_storage_key_paris( nonce=0, address=Address(0xF202BAE278AC09857F5A56991C7A4679632F5841), # noqa: E501 ) - pre[addr] = Account(balance=10, storage={0: 1}) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stZeroCallsTest/test_zero_value_callcode_to_empty_paris.py b/tests/ported_static/stZeroCallsTest/test_zero_value_callcode_to_empty_paris.py index a65b1d96d56..8117720261d 100644 --- a/tests/ported_static/stZeroCallsTest/test_zero_value_callcode_to_empty_paris.py +++ b/tests/ported_static/stZeroCallsTest/test_zero_value_callcode_to_empty_paris.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,10 +34,7 @@ def test_zero_value_callcode_to_empty_paris( ) -> None: """Test_zero_value_callcode_to_empty_paris.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - addr = Address(0x76FAE819612A29489A1A43208613D8F8557B8898) - sender = EOA( - key=0x4F31B3206FBF0E0E598B9B1A7D8AC86302A0FF1D8930738F1BEBAE9B67173E52 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -49,7 +45,7 @@ def test_zero_value_callcode_to_empty_paris( gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) + addr = pre.fund_eoa(amount=10) # noqa: F841 # Source: lll # { [[0]](GAS) [[1]] (CALLCODE 60000 0 0 0 0 0) [[100]] 1 } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -58,7 +54,7 @@ def test_zero_value_callcode_to_empty_paris( key=0x1, value=Op.CALLCODE( gas=0xEA60, - address=0x76FAE819612A29489A1A43208613D8F8557B8898, + address=addr, value=0x0, args_offset=0x0, args_size=0x0, @@ -69,9 +65,7 @@ def test_zero_value_callcode_to_empty_paris( + Op.SSTORE(key=0x64, value=0x1) + Op.STOP, nonce=0, - address=Address(0xA93AE635B4FA4D618045C019AC32ED9ADC8F54EA), # noqa: E501 ) - pre[addr] = Account(balance=10) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stZeroCallsTest/test_zero_value_callcode_to_non_zero_balance.py b/tests/ported_static/stZeroCallsTest/test_zero_value_callcode_to_non_zero_balance.py index 9e3780f2704..9b5ab5f0cae 100644 --- a/tests/ported_static/stZeroCallsTest/test_zero_value_callcode_to_non_zero_balance.py +++ b/tests/ported_static/stZeroCallsTest/test_zero_value_callcode_to_non_zero_balance.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,10 +34,7 @@ def test_zero_value_callcode_to_non_zero_balance( ) -> None: """Test_zero_value_callcode_to_non_zero_balance.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - addr = Address(0x9089DA66E8BBC08846842A301905501BC8525DC4) - sender = EOA( - key=0x4F31B3206FBF0E0E598B9B1A7D8AC86302A0FF1D8930738F1BEBAE9B67173E52 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -49,7 +45,7 @@ def test_zero_value_callcode_to_non_zero_balance( gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) + addr = pre.fund_eoa(amount=100) # noqa: F841 # Source: lll # { [[0]](GAS) [[1]] (CALLCODE 60000 0 0 0 0 0) [[100]] 1 } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -58,7 +54,7 @@ def test_zero_value_callcode_to_non_zero_balance( key=0x1, value=Op.CALLCODE( gas=0xEA60, - address=0x9089DA66E8BBC08846842A301905501BC8525DC4, + address=addr, value=0x0, args_offset=0x0, args_size=0x0, @@ -69,9 +65,7 @@ def test_zero_value_callcode_to_non_zero_balance( + Op.SSTORE(key=0x64, value=0x1) + Op.STOP, nonce=0, - address=Address(0xA93AE635B4FA4D618045C019AC32ED9ADC8F54EA), # noqa: E501 ) - pre[addr] = Account(balance=100) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stZeroCallsTest/test_zero_value_callcode_to_one_storage_key_paris.py b/tests/ported_static/stZeroCallsTest/test_zero_value_callcode_to_one_storage_key_paris.py index 5f615dbd305..6872e5b24d9 100644 --- a/tests/ported_static/stZeroCallsTest/test_zero_value_callcode_to_one_storage_key_paris.py +++ b/tests/ported_static/stZeroCallsTest/test_zero_value_callcode_to_one_storage_key_paris.py @@ -50,6 +50,7 @@ def test_zero_value_callcode_to_one_storage_key_paris( ) pre[sender] = Account(balance=0xE8D4A51000) + pre[addr] = Account(balance=10, storage={0: 1}) # Source: lll # { [[0]](GAS) [[1]] (CALLCODE 60000 0 0 0 0 0) [[100]] 1 } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -71,7 +72,6 @@ def test_zero_value_callcode_to_one_storage_key_paris( nonce=0, address=Address(0xA93AE635B4FA4D618045C019AC32ED9ADC8F54EA), # noqa: E501 ) - pre[addr] = Account(balance=10, storage={0: 1}) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stZeroCallsTest/test_zero_value_delegatecall_to_empty_paris.py b/tests/ported_static/stZeroCallsTest/test_zero_value_delegatecall_to_empty_paris.py index 665a556440b..a92303da1cc 100644 --- a/tests/ported_static/stZeroCallsTest/test_zero_value_delegatecall_to_empty_paris.py +++ b/tests/ported_static/stZeroCallsTest/test_zero_value_delegatecall_to_empty_paris.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,10 +34,7 @@ def test_zero_value_delegatecall_to_empty_paris( ) -> None: """Test_zero_value_delegatecall_to_empty_paris.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - addr = Address(0x76FAE819612A29489A1A43208613D8F8557B8898) - sender = EOA( - key=0x4F31B3206FBF0E0E598B9B1A7D8AC86302A0FF1D8930738F1BEBAE9B67173E52 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -49,7 +45,7 @@ def test_zero_value_delegatecall_to_empty_paris( gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) + addr = pre.fund_eoa(amount=10) # noqa: F841 # Source: lll # { [[0]](GAS) [[1]] (DELEGATECALL 60000 0 0 0 0) [[100]] 1 } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -58,7 +54,7 @@ def test_zero_value_delegatecall_to_empty_paris( key=0x1, value=Op.DELEGATECALL( gas=0xEA60, - address=0x76FAE819612A29489A1A43208613D8F8557B8898, + address=addr, args_offset=0x0, args_size=0x0, ret_offset=0x0, @@ -68,9 +64,7 @@ def test_zero_value_delegatecall_to_empty_paris( + Op.SSTORE(key=0x64, value=0x1) + Op.STOP, nonce=0, - address=Address(0xC8881A7E48D37B4A4CDD6338CE7076D6A116283D), # noqa: E501 ) - pre[addr] = Account(balance=10) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stZeroCallsTest/test_zero_value_delegatecall_to_non_zero_balance.py b/tests/ported_static/stZeroCallsTest/test_zero_value_delegatecall_to_non_zero_balance.py index 5430c258458..a02b7615016 100644 --- a/tests/ported_static/stZeroCallsTest/test_zero_value_delegatecall_to_non_zero_balance.py +++ b/tests/ported_static/stZeroCallsTest/test_zero_value_delegatecall_to_non_zero_balance.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -35,10 +34,7 @@ def test_zero_value_delegatecall_to_non_zero_balance( ) -> None: """Test_zero_value_delegatecall_to_non_zero_balance.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - addr = Address(0x9089DA66E8BBC08846842A301905501BC8525DC4) - sender = EOA( - key=0x4F31B3206FBF0E0E598B9B1A7D8AC86302A0FF1D8930738F1BEBAE9B67173E52 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -49,7 +45,7 @@ def test_zero_value_delegatecall_to_non_zero_balance( gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) + addr = pre.fund_eoa(amount=100) # noqa: F841 # Source: lll # { [[0]](GAS) [[1]] (DELEGATECALL 60000 0 0 0 0) [[100]] 1 } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -58,7 +54,7 @@ def test_zero_value_delegatecall_to_non_zero_balance( key=0x1, value=Op.DELEGATECALL( gas=0xEA60, - address=0x9089DA66E8BBC08846842A301905501BC8525DC4, + address=addr, args_offset=0x0, args_size=0x0, ret_offset=0x0, @@ -68,9 +64,7 @@ def test_zero_value_delegatecall_to_non_zero_balance( + Op.SSTORE(key=0x64, value=0x1) + Op.STOP, nonce=0, - address=Address(0xC8881A7E48D37B4A4CDD6338CE7076D6A116283D), # noqa: E501 ) - pre[addr] = Account(balance=100) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stZeroCallsTest/test_zero_value_delegatecall_to_one_storage_key_paris.py b/tests/ported_static/stZeroCallsTest/test_zero_value_delegatecall_to_one_storage_key_paris.py index cc6f59d0cc4..d4e3d2fad43 100644 --- a/tests/ported_static/stZeroCallsTest/test_zero_value_delegatecall_to_one_storage_key_paris.py +++ b/tests/ported_static/stZeroCallsTest/test_zero_value_delegatecall_to_one_storage_key_paris.py @@ -50,6 +50,7 @@ def test_zero_value_delegatecall_to_one_storage_key_paris( ) pre[sender] = Account(balance=0xE8D4A51000) + pre[addr] = Account(balance=10, storage={0: 1}) # Source: lll # { [[0]](GAS) [[1]] (DELEGATECALL 60000 0 0 0 0) [[100]] 1 } # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -70,7 +71,6 @@ def test_zero_value_delegatecall_to_one_storage_key_paris( nonce=0, address=Address(0xC8881A7E48D37B4A4CDD6338CE7076D6A116283D), # noqa: E501 ) - pre[addr] = Account(balance=10, storage={0: 1}) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stZeroCallsTest/test_zero_value_suicide_to_empty_paris.py b/tests/ported_static/stZeroCallsTest/test_zero_value_suicide_to_empty_paris.py index a606727e91f..f82de945298 100644 --- a/tests/ported_static/stZeroCallsTest/test_zero_value_suicide_to_empty_paris.py +++ b/tests/ported_static/stZeroCallsTest/test_zero_value_suicide_to_empty_paris.py @@ -48,6 +48,7 @@ def test_zero_value_suicide_to_empty_paris( ) pre[sender] = Account(balance=0xE8D4A51000) + pre[addr] = Account(balance=10) # Source: lll # { (SELFDESTRUCT ) } target = pre.deploy_contract( # noqa: F841 @@ -58,7 +59,6 @@ def test_zero_value_suicide_to_empty_paris( nonce=0, address=Address(0x888748026558F849C1B2433EA5E1DAF1444DFC60), # noqa: E501 ) - pre[addr] = Account(balance=10) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stZeroCallsTest/test_zero_value_suicide_to_non_zero_balance.py b/tests/ported_static/stZeroCallsTest/test_zero_value_suicide_to_non_zero_balance.py index e7e358d1b9e..59a84123da5 100644 --- a/tests/ported_static/stZeroCallsTest/test_zero_value_suicide_to_non_zero_balance.py +++ b/tests/ported_static/stZeroCallsTest/test_zero_value_suicide_to_non_zero_balance.py @@ -50,6 +50,7 @@ def test_zero_value_suicide_to_non_zero_balance( ) pre[sender] = Account(balance=0xE8D4A51000) + pre[addr] = Account(balance=100) # Source: lll # { (SELFDESTRUCT ) } target = pre.deploy_contract( # noqa: F841 @@ -60,7 +61,6 @@ def test_zero_value_suicide_to_non_zero_balance( nonce=0, address=Address(0x888748026558F849C1B2433EA5E1DAF1444DFC60), # noqa: E501 ) - pre[addr] = Account(balance=100) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stZeroCallsTest/test_zero_value_suicide_to_one_storage_key_paris.py b/tests/ported_static/stZeroCallsTest/test_zero_value_suicide_to_one_storage_key_paris.py index ce425aa0f3a..0b7f85d5370 100644 --- a/tests/ported_static/stZeroCallsTest/test_zero_value_suicide_to_one_storage_key_paris.py +++ b/tests/ported_static/stZeroCallsTest/test_zero_value_suicide_to_one_storage_key_paris.py @@ -50,6 +50,7 @@ def test_zero_value_suicide_to_one_storage_key_paris( ) pre[sender] = Account(balance=0xE8D4A51000) + pre[addr] = Account(balance=10, storage={0: 1}) # Source: lll # { (SELFDESTRUCT ) } target = pre.deploy_contract( # noqa: F841 @@ -61,7 +62,6 @@ def test_zero_value_suicide_to_one_storage_key_paris( nonce=0, address=Address(0x8D444744833C9B79FDFE630F155CF1F3BBEB92E3), # noqa: E501 ) - pre[addr] = Account(balance=10, storage={0: 1}) tx = Transaction( sender=sender, diff --git a/tests/ported_static/stZeroCallsTest/test_zero_value_transaction_cal_lwith_data_to_empty_paris.py b/tests/ported_static/stZeroCallsTest/test_zero_value_transaction_cal_lwith_data_to_empty_paris.py index e7c20c3f3c1..8a9f12d67e4 100644 --- a/tests/ported_static/stZeroCallsTest/test_zero_value_transaction_cal_lwith_data_to_empty_paris.py +++ b/tests/ported_static/stZeroCallsTest/test_zero_value_transaction_cal_lwith_data_to_empty_paris.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -26,17 +25,13 @@ ], ) @pytest.mark.valid_from("Cancun") -@pytest.mark.pre_alloc_mutable def test_zero_value_transaction_cal_lwith_data_to_empty_paris( state_test: StateTestFiller, pre: Alloc, ) -> None: """Test_zero_value_transaction_cal_lwith_data_to_empty_paris.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - addr = Address(0x76FAE819612A29489A1A43208613D8F8557B8898) - sender = EOA( - key=0x4F31B3206FBF0E0E598B9B1A7D8AC86302A0FF1D8930738F1BEBAE9B67173E52 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -47,8 +42,7 @@ def test_zero_value_transaction_cal_lwith_data_to_empty_paris( gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) - pre[addr] = Account(balance=10) + addr = pre.fund_eoa(amount=10) # noqa: F841 tx = Transaction( sender=sender, diff --git a/tests/ported_static/stZeroCallsTest/test_zero_value_transaction_cal_lwith_data_to_non_zero_balance.py b/tests/ported_static/stZeroCallsTest/test_zero_value_transaction_cal_lwith_data_to_non_zero_balance.py index a3b3873c2c6..861f03a1aa1 100644 --- a/tests/ported_static/stZeroCallsTest/test_zero_value_transaction_cal_lwith_data_to_non_zero_balance.py +++ b/tests/ported_static/stZeroCallsTest/test_zero_value_transaction_cal_lwith_data_to_non_zero_balance.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -26,17 +25,13 @@ ], ) @pytest.mark.valid_from("Cancun") -@pytest.mark.pre_alloc_mutable def test_zero_value_transaction_cal_lwith_data_to_non_zero_balance( state_test: StateTestFiller, pre: Alloc, ) -> None: """Test_zero_value_transaction_cal_lwith_data_to_non_zero_balance.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - addr = Address(0x9089DA66E8BBC08846842A301905501BC8525DC4) - sender = EOA( - key=0x4F31B3206FBF0E0E598B9B1A7D8AC86302A0FF1D8930738F1BEBAE9B67173E52 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -47,8 +42,7 @@ def test_zero_value_transaction_cal_lwith_data_to_non_zero_balance( gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) - pre[addr] = Account(balance=100) + addr = pre.fund_eoa(amount=100) # noqa: F841 tx = Transaction( sender=sender, diff --git a/tests/ported_static/stZeroCallsTest/test_zero_value_transaction_call_to_empty_paris.py b/tests/ported_static/stZeroCallsTest/test_zero_value_transaction_call_to_empty_paris.py index 719271c4801..62a4ac96ba2 100644 --- a/tests/ported_static/stZeroCallsTest/test_zero_value_transaction_call_to_empty_paris.py +++ b/tests/ported_static/stZeroCallsTest/test_zero_value_transaction_call_to_empty_paris.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -27,17 +26,13 @@ ], ) @pytest.mark.valid_from("Cancun") -@pytest.mark.pre_alloc_mutable def test_zero_value_transaction_call_to_empty_paris( state_test: StateTestFiller, pre: Alloc, ) -> None: """Test_zero_value_transaction_call_to_empty_paris.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - addr = Address(0x76FAE819612A29489A1A43208613D8F8557B8898) - sender = EOA( - key=0x4F31B3206FBF0E0E598B9B1A7D8AC86302A0FF1D8930738F1BEBAE9B67173E52 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -48,8 +43,7 @@ def test_zero_value_transaction_call_to_empty_paris( gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) - pre[addr] = Account(balance=10) + addr = pre.fund_eoa(amount=10) # noqa: F841 tx = Transaction( sender=sender, diff --git a/tests/ported_static/stZeroCallsTest/test_zero_value_transaction_call_to_non_zero_balance.py b/tests/ported_static/stZeroCallsTest/test_zero_value_transaction_call_to_non_zero_balance.py index b8fe07bca01..546b407404d 100644 --- a/tests/ported_static/stZeroCallsTest/test_zero_value_transaction_call_to_non_zero_balance.py +++ b/tests/ported_static/stZeroCallsTest/test_zero_value_transaction_call_to_non_zero_balance.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -27,17 +26,13 @@ ], ) @pytest.mark.valid_from("Cancun") -@pytest.mark.pre_alloc_mutable def test_zero_value_transaction_call_to_non_zero_balance( state_test: StateTestFiller, pre: Alloc, ) -> None: """Test_zero_value_transaction_call_to_non_zero_balance.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - addr = Address(0x9089DA66E8BBC08846842A301905501BC8525DC4) - sender = EOA( - key=0x4F31B3206FBF0E0E598B9B1A7D8AC86302A0FF1D8930738F1BEBAE9B67173E52 - ) + sender = pre.fund_eoa(amount=0xE8D4A51000) env = Environment( fee_recipient=coinbase, @@ -48,8 +43,7 @@ def test_zero_value_transaction_call_to_non_zero_balance( gas_limit=10000000, ) - pre[sender] = Account(balance=0xE8D4A51000) - pre[addr] = Account(balance=100) + addr = pre.fund_eoa(amount=100) # noqa: F841 tx = Transaction( sender=sender, diff --git a/tests/ported_static/stZeroKnowledge/test_pairing_test.py b/tests/ported_static/stZeroKnowledge/test_pairing_test.py index 11ed3d532db..bf844166115 100644 --- a/tests/ported_static/stZeroKnowledge/test_pairing_test.py +++ b/tests/ported_static/stZeroKnowledge/test_pairing_test.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -193,9 +192,7 @@ def test_pairing_test( contract_0 = Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) contract_1 = Address(0xC94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) contract_2 = Address(0xD94F5374FCE5EDBC8E2A8697C15331677E6EBF0B) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0xDE0B6B3A7640000, nonce=1) env = Environment( fee_recipient=coinbase, @@ -206,7 +203,6 @@ def test_pairing_test( gas_limit=14012015, ) - pre[sender] = Account(balance=0xDE0B6B3A7640000, nonce=1) # Source: lll # {(MSTORE 32 (CALLDATALOAD 32)) (MSTORE 64 (CALLDATALOAD 64)) (MSTORE 96 (CALLDATALOAD 96)) (MSTORE 128 (CALLDATALOAD 128)) (MSTORE 160 (CALLDATALOAD 160)) (MSTORE 192 (CALLDATALOAD 192)) (MSTORE 224 (CALLDATALOAD 224)) (MSTORE 256 (CALLDATALOAD 256)) (MSTORE 288 (CALLDATALOAD 288)) (MSTORE 320 (CALLDATALOAD 320)) (MSTORE 352 (CALLDATALOAD 352)) (MSTORE 384 (CALLDATALOAD 384)) (MSTORE 416 (CALLDATALOAD 416)) (MSTORE 448 (CALLDATALOAD 448)) (MSTORE 480 (CALLDATALOAD 480)) (MSTORE 512 (CALLDATALOAD 512)) (MSTORE 544 (CALLDATALOAD 544)) (MSTORE 576 (CALLDATALOAD 576)) (MSTORE 608 (CALLDATALOAD 608)) (MSTORE 640 (CALLDATALOAD 640)) (MSTORE 672 (CALLDATALOAD 672)) (MSTORE 704 (CALLDATALOAD 704)) (MSTORE 736 (CALLDATALOAD 736)) [[0]](CALLCODE 500000 8 0 32 (CALLDATALOAD 0) 1000 32) [[1]] (MLOAD 1000) } # noqa: E501 contract_0 = pre.deploy_contract( # noqa: F841 @@ -248,7 +244,6 @@ def test_pairing_test( + Op.SSTORE(key=0x1, value=Op.MLOAD(offset=0x3E8)) + Op.STOP, nonce=0, - address=Address(0xB94F5374FCE5EDBC8E2A8697C15331677E6EBF0B), # noqa: E501 ) # Source: lll # { (MSTORE 0 (CALLDATALOAD 0)) (MSTORE 32 (CALLDATALOAD 32)) (MSTORE 64 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000000) [[0]](CALLCODE 5000000 7 0 0 96 1000 64) [[1]](MLOAD 1000) [[2]](MLOAD 1032) } # noqa: E501 @@ -275,7 +270,6 @@ def test_pairing_test( + Op.SSTORE(key=0x2, value=Op.MLOAD(offset=0x408)) + Op.STOP, nonce=0, - address=Address(0xC94F5374FCE5EDBC8E2A8697C15331677E6EBF0B), # noqa: E501 ) # Source: lll # { (MSTORE 0 (CALLDATALOAD 0)) (MSTORE 32 (CALLDATALOAD 32)) (MSTORE 64 (CALLDATALOAD 64)) (MSTORE 96 (CALLDATALOAD 96)) [[0]](CALLCODE 5000000 6 0 0 128 1000 64) [[1]](MLOAD 1000) [[2]](MLOAD 1032) } # noqa: E501 @@ -300,7 +294,6 @@ def test_pairing_test( + Op.SSTORE(key=0x2, value=Op.MLOAD(offset=0x408)) + Op.STOP, nonce=0, - address=Address(0xD94F5374FCE5EDBC8E2A8697C15331677E6EBF0B), # noqa: E501 ) expect_entries_: list[dict] = [ diff --git a/tests/ported_static/vmArithmeticTest/test_add.py b/tests/ported_static/vmArithmeticTest/test_add.py index 0806f92e1fe..38a910bcf77 100644 --- a/tests/ported_static/vmArithmeticTest/test_add.py +++ b/tests/ported_static/vmArithmeticTest/test_add.py @@ -96,6 +96,7 @@ def test_add( gas_limit=100000000, ) + pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE) # Source: lll # { # ; -1+-1 = -2 @@ -201,7 +202,6 @@ def test_add( nonce=0, address=Address(0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC), # noqa: E501 ) - pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/vmArithmeticTest/test_addmod.py b/tests/ported_static/vmArithmeticTest/test_addmod.py index 2d78b510024..122864ca167 100644 --- a/tests/ported_static/vmArithmeticTest/test_addmod.py +++ b/tests/ported_static/vmArithmeticTest/test_addmod.py @@ -173,6 +173,7 @@ def test_addmod( gas_limit=100000000, ) + pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE) # Source: lll # { # [[0]] (addmod 1 2 2) @@ -390,7 +391,6 @@ def test_addmod( nonce=0, address=Address(0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC), # noqa: E501 ) - pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/vmArithmeticTest/test_arith.py b/tests/ported_static/vmArithmeticTest/test_arith.py index 18265c1f3f3..e482886f634 100644 --- a/tests/ported_static/vmArithmeticTest/test_arith.py +++ b/tests/ported_static/vmArithmeticTest/test_arith.py @@ -46,6 +46,7 @@ def test_arith( gas_limit=100000000, ) + pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE) # Source: raw # 0x600160019001600702600501600290046004906021900560170160030260059007600303600960110A60005560086000F3 # noqa: E501 target = pre.deploy_contract( # noqa: F841 @@ -69,7 +70,6 @@ def test_arith( nonce=0, address=Address(0x14814D06E93EFB1102A15D5881432C9FF6C91362), # noqa: E501 ) - pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE) tx = Transaction( sender=sender, diff --git a/tests/ported_static/vmArithmeticTest/test_div.py b/tests/ported_static/vmArithmeticTest/test_div.py index 8a478377d89..5a13e87254f 100644 --- a/tests/ported_static/vmArithmeticTest/test_div.py +++ b/tests/ported_static/vmArithmeticTest/test_div.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -104,9 +103,7 @@ def test_div( contract_6 = Address(0x0000000000000000000000000000000000001006) contract_7 = Address(0x0000000000000000000000000000000000001007) contract_8 = Address(0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0xBA1A9CE0BA1A9CE) env = Environment( fee_recipient=coinbase, @@ -236,7 +233,6 @@ def test_div( nonce=0, address=Address(0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC), # noqa: E501 ) - pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/vmArithmeticTest/test_div_by_zero.py b/tests/ported_static/vmArithmeticTest/test_div_by_zero.py index a42490e493a..30720aeba88 100644 --- a/tests/ported_static/vmArithmeticTest/test_div_by_zero.py +++ b/tests/ported_static/vmArithmeticTest/test_div_by_zero.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -632,9 +631,7 @@ def test_div_by_zero( ) -> None: """Ori Pomerantz qbzzt1@gmail.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x40AC0FC28C27E961EE46EC43355A094DE205856EDBD4654CF2577C2608D4EC1E - ) + sender = pre.fund_eoa(amount=0xBA1A9CE0BA1A9CE) env = Environment( fee_recipient=coinbase, @@ -711,9 +708,7 @@ def test_div_by_zero( + Op.STOP, balance=0xBA1A9CE0BA1A9CE, nonce=0, - address=Address(0x935E36EE6CD0F1602D1ABCA9A391C696CFA4C04D), # noqa: E501 ) - pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE) tx_data = [ Bytes("1a8451e6") + Hash(0x4) + Hash(0x2), diff --git a/tests/ported_static/vmArithmeticTest/test_exp.py b/tests/ported_static/vmArithmeticTest/test_exp.py index 734f99ae030..5514c6d2f91 100644 --- a/tests/ported_static/vmArithmeticTest/test_exp.py +++ b/tests/ported_static/vmArithmeticTest/test_exp.py @@ -138,6 +138,7 @@ def test_exp( gas_limit=100000000, ) + pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE) # Source: lll # { # [[0]] (exp 2 2) @@ -280,7 +281,6 @@ def test_exp( nonce=0, address=Address(0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC), # noqa: E501 ) - pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/vmArithmeticTest/test_exp_power2.py b/tests/ported_static/vmArithmeticTest/test_exp_power2.py index 252c1022462..9fb0bd5388c 100644 --- a/tests/ported_static/vmArithmeticTest/test_exp_power2.py +++ b/tests/ported_static/vmArithmeticTest/test_exp_power2.py @@ -47,6 +47,7 @@ def test_exp_power2( gas_limit=100000000, ) + pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE) # Source: lll # { # (def 'storageJump 0x10) @@ -149,7 +150,6 @@ def test_exp_power2( nonce=0, address=Address(0x5A18B275908AD6766155191A40654188FE012DC6), # noqa: E501 ) - pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE) tx = Transaction( sender=sender, diff --git a/tests/ported_static/vmArithmeticTest/test_exp_power256.py b/tests/ported_static/vmArithmeticTest/test_exp_power256.py index 25a804fa0bf..37bb7b44bf3 100644 --- a/tests/ported_static/vmArithmeticTest/test_exp_power256.py +++ b/tests/ported_static/vmArithmeticTest/test_exp_power256.py @@ -47,6 +47,7 @@ def test_exp_power256( gas_limit=100000000, ) + pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE) # Source: lll # { # (def 'storageJump 0x10) @@ -323,7 +324,6 @@ def test_exp_power256( nonce=0, address=Address(0xE660D528E4A7AD36825F9D64F5F141596FEFF7AE), # noqa: E501 ) - pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE) tx = Transaction( sender=sender, diff --git a/tests/ported_static/vmArithmeticTest/test_exp_power256_of256.py b/tests/ported_static/vmArithmeticTest/test_exp_power256_of256.py index 8183b190b38..3a4d820a4be 100644 --- a/tests/ported_static/vmArithmeticTest/test_exp_power256_of256.py +++ b/tests/ported_static/vmArithmeticTest/test_exp_power256_of256.py @@ -47,6 +47,7 @@ def test_exp_power256_of256( gas_limit=100000000, ) + pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE) # Source: lll # { # (def 'storageJump 0x10) @@ -1275,7 +1276,6 @@ def test_exp_power256_of256( nonce=0, address=Address(0x9F233EF2D697929EDF542064B125E7D620270363), # noqa: E501 ) - pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE) tx = Transaction( sender=sender, diff --git a/tests/ported_static/vmArithmeticTest/test_fib.py b/tests/ported_static/vmArithmeticTest/test_fib.py index 27895062753..55d6b52f0d9 100644 --- a/tests/ported_static/vmArithmeticTest/test_fib.py +++ b/tests/ported_static/vmArithmeticTest/test_fib.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -33,9 +32,7 @@ def test_fib( ) -> None: """Ori Pomerantz qbzzt1@gmail.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0x40AC0FC28C27E961EE46EC43355A094DE205856EDBD4654CF2577C2608D4EC1E - ) + sender = pre.fund_eoa(amount=0xBA1A9CE0BA1A9CE) env = Environment( fee_recipient=coinbase, @@ -118,9 +115,7 @@ def test_fib( storage={0: 0, 1: 1}, balance=0xBA1A9CE0BA1A9CE, nonce=0, - address=Address(0xF8D9FF3E0CF16ACF51098C85F2CB8F082EF588C2), # noqa: E501 ) - pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE) tx = Transaction( sender=sender, diff --git a/tests/ported_static/vmArithmeticTest/test_mod.py b/tests/ported_static/vmArithmeticTest/test_mod.py index 55c74f62a3b..44970acfe0f 100644 --- a/tests/ported_static/vmArithmeticTest/test_mod.py +++ b/tests/ported_static/vmArithmeticTest/test_mod.py @@ -103,6 +103,7 @@ def test_mod( gas_limit=100000000, ) + pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE) # Source: lll # { # [[0]] (% 2 3) @@ -207,7 +208,6 @@ def test_mod( nonce=0, address=Address(0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC), # noqa: E501 ) - pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/vmArithmeticTest/test_mul.py b/tests/ported_static/vmArithmeticTest/test_mul.py index 163daa67afb..dd176fbf7cd 100644 --- a/tests/ported_static/vmArithmeticTest/test_mul.py +++ b/tests/ported_static/vmArithmeticTest/test_mul.py @@ -124,6 +124,7 @@ def test_mul( gas_limit=100000000, ) + pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE) # Source: lll # { # [[0]] (* 2 3) @@ -296,7 +297,6 @@ def test_mul( nonce=0, address=Address(0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC), # noqa: E501 ) - pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/vmArithmeticTest/test_mulmod.py b/tests/ported_static/vmArithmeticTest/test_mulmod.py index 35c8ec19e9d..173ad89d1cc 100644 --- a/tests/ported_static/vmArithmeticTest/test_mulmod.py +++ b/tests/ported_static/vmArithmeticTest/test_mulmod.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -160,9 +159,7 @@ def test_mulmod( contract_14 = Address(0x000000000000000000000000000000000000100E) contract_15 = Address(0x000000000000000000000000000000000000100F) contract_16 = Address(0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0xBA1A9CE0BA1A9CE) env = Environment( fee_recipient=coinbase, @@ -441,7 +438,6 @@ def test_mulmod( nonce=0, address=Address(0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC), # noqa: E501 ) - pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/vmArithmeticTest/test_not.py b/tests/ported_static/vmArithmeticTest/test_not.py index fd38fc7f33d..2bea92ca4e8 100644 --- a/tests/ported_static/vmArithmeticTest/test_not.py +++ b/tests/ported_static/vmArithmeticTest/test_not.py @@ -49,6 +49,7 @@ def test_not( gas_limit=100000000, ) + pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE) # Source: lll # { # [[0]] (not 0x0123456789abcdef) @@ -78,7 +79,6 @@ def test_not( nonce=0, address=Address(0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC), # noqa: E501 ) - pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE) tx = Transaction( sender=sender, diff --git a/tests/ported_static/vmArithmeticTest/test_sdiv.py b/tests/ported_static/vmArithmeticTest/test_sdiv.py index e5487c50cbf..7c360e52047 100644 --- a/tests/ported_static/vmArithmeticTest/test_sdiv.py +++ b/tests/ported_static/vmArithmeticTest/test_sdiv.py @@ -180,6 +180,7 @@ def test_sdiv( gas_limit=100000000, ) + pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE) # Source: lll # { ; (0 - (-1)) / (-1) = 1/(-1) = -1 # ; @@ -520,7 +521,6 @@ def test_sdiv( nonce=0, address=Address(0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC), # noqa: E501 ) - pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/vmArithmeticTest/test_signextend.py b/tests/ported_static/vmArithmeticTest/test_signextend.py index d3563a3c42f..d05e6c2c264 100644 --- a/tests/ported_static/vmArithmeticTest/test_signextend.py +++ b/tests/ported_static/vmArithmeticTest/test_signextend.py @@ -166,6 +166,7 @@ def test_signextend( gas_limit=100000000, ) + pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE) # Source: lll # { # [[0]] (signextend 80 0x126af4) @@ -386,7 +387,6 @@ def test_signextend( nonce=0, address=Address(0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC), # noqa: E501 ) - pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/vmArithmeticTest/test_smod.py b/tests/ported_static/vmArithmeticTest/test_smod.py index 071f1a290e1..728f89a210b 100644 --- a/tests/ported_static/vmArithmeticTest/test_smod.py +++ b/tests/ported_static/vmArithmeticTest/test_smod.py @@ -103,6 +103,7 @@ def test_smod( gas_limit=100000000, ) + pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE) # Source: lll # { # [[0]] (smod 2 3) @@ -203,7 +204,6 @@ def test_smod( nonce=0, address=Address(0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC), # noqa: E501 ) - pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/vmArithmeticTest/test_sub.py b/tests/ported_static/vmArithmeticTest/test_sub.py index 7f658b6ef98..2d8d2654766 100644 --- a/tests/ported_static/vmArithmeticTest/test_sub.py +++ b/tests/ported_static/vmArithmeticTest/test_sub.py @@ -96,6 +96,7 @@ def test_sub( gas_limit=100000000, ) + pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE) # Source: lll # { # [[0]] (- 23 1) @@ -185,7 +186,6 @@ def test_sub( nonce=0, address=Address(0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC), # noqa: E501 ) - pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/vmBitwiseLogicOperation/test_and.py b/tests/ported_static/vmBitwiseLogicOperation/test_and.py index 2e1e6e6c5aa..919c2763837 100644 --- a/tests/ported_static/vmBitwiseLogicOperation/test_and.py +++ b/tests/ported_static/vmBitwiseLogicOperation/test_and.py @@ -96,6 +96,7 @@ def test_and( gas_limit=100000000, ) + pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE) # Source: lll # { # [[0]] (and 2 2) @@ -187,7 +188,6 @@ def test_and( nonce=0, address=Address(0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC), # noqa: E501 ) - pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/vmBitwiseLogicOperation/test_byte.py b/tests/ported_static/vmBitwiseLogicOperation/test_byte.py index cef895aa73f..56887a82b99 100644 --- a/tests/ported_static/vmBitwiseLogicOperation/test_byte.py +++ b/tests/ported_static/vmBitwiseLogicOperation/test_byte.py @@ -145,6 +145,7 @@ def test_byte( gas_limit=100000000, ) + pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE) # Source: lll # { # [[0]] (byte (- 31 0) 0x8040201008040201) @@ -339,7 +340,6 @@ def test_byte( nonce=0, address=Address(0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC), # noqa: E501 ) - pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/vmBitwiseLogicOperation/test_eq.py b/tests/ported_static/vmBitwiseLogicOperation/test_eq.py index 984a6ac969d..3c20ccd8773 100644 --- a/tests/ported_static/vmBitwiseLogicOperation/test_eq.py +++ b/tests/ported_static/vmBitwiseLogicOperation/test_eq.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -69,9 +68,7 @@ def test_eq( contract_1 = Address(0x0000000000000000000000000000000000001001) contract_2 = Address(0x0000000000000000000000000000000000001002) contract_3 = Address(0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0xBA1A9CE0BA1A9CE) env = Environment( fee_recipient=coinbase, @@ -143,7 +140,6 @@ def test_eq( nonce=0, address=Address(0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC), # noqa: E501 ) - pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/vmBitwiseLogicOperation/test_gt.py b/tests/ported_static/vmBitwiseLogicOperation/test_gt.py index cb2b7a338f9..06e1b39c681 100644 --- a/tests/ported_static/vmBitwiseLogicOperation/test_gt.py +++ b/tests/ported_static/vmBitwiseLogicOperation/test_gt.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -76,9 +75,7 @@ def test_gt( contract_2 = Address(0x0000000000000000000000000000000000001002) contract_3 = Address(0x0000000000000000000000000000000000001003) contract_4 = Address(0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0xBA1A9CE0BA1A9CE) env = Environment( fee_recipient=coinbase, @@ -168,7 +165,6 @@ def test_gt( nonce=0, address=Address(0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC), # noqa: E501 ) - pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/vmBitwiseLogicOperation/test_iszero.py b/tests/ported_static/vmBitwiseLogicOperation/test_iszero.py index e5322abb38d..e83fe80b0d8 100644 --- a/tests/ported_static/vmBitwiseLogicOperation/test_iszero.py +++ b/tests/ported_static/vmBitwiseLogicOperation/test_iszero.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -69,9 +68,7 @@ def test_iszero( contract_1 = Address(0x0000000000000000000000000000000000001001) contract_2 = Address(0x0000000000000000000000000000000000001002) contract_3 = Address(0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0xBA1A9CE0BA1A9CE) env = Environment( fee_recipient=coinbase, @@ -139,7 +136,6 @@ def test_iszero( nonce=0, address=Address(0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC), # noqa: E501 ) - pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/vmBitwiseLogicOperation/test_lt.py b/tests/ported_static/vmBitwiseLogicOperation/test_lt.py index 919c01b21b5..d2be95c3d03 100644 --- a/tests/ported_static/vmBitwiseLogicOperation/test_lt.py +++ b/tests/ported_static/vmBitwiseLogicOperation/test_lt.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -76,9 +75,7 @@ def test_lt( contract_2 = Address(0x0000000000000000000000000000000000001002) contract_3 = Address(0x0000000000000000000000000000000000001003) contract_4 = Address(0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0xBA1A9CE0BA1A9CE) env = Environment( fee_recipient=coinbase, @@ -168,7 +165,6 @@ def test_lt( nonce=0, address=Address(0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC), # noqa: E501 ) - pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/vmBitwiseLogicOperation/test_not.py b/tests/ported_static/vmBitwiseLogicOperation/test_not.py index a9140b8e8e7..4b4e07d8dd0 100644 --- a/tests/ported_static/vmBitwiseLogicOperation/test_not.py +++ b/tests/ported_static/vmBitwiseLogicOperation/test_not.py @@ -103,6 +103,7 @@ def test_not( gas_limit=100000000, ) + pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE) # Source: lll # { # [[0]] (not 0) @@ -208,7 +209,6 @@ def test_not( nonce=0, address=Address(0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC), # noqa: E501 ) - pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/vmBitwiseLogicOperation/test_or.py b/tests/ported_static/vmBitwiseLogicOperation/test_or.py index b6fb91037cd..7fc19e60d81 100644 --- a/tests/ported_static/vmBitwiseLogicOperation/test_or.py +++ b/tests/ported_static/vmBitwiseLogicOperation/test_or.py @@ -103,6 +103,7 @@ def test_or( gas_limit=100000000, ) + pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE) # Source: lll # { # [[0]] (or 2 2) @@ -215,7 +216,6 @@ def test_or( nonce=0, address=Address(0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC), # noqa: E501 ) - pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/vmBitwiseLogicOperation/test_sgt.py b/tests/ported_static/vmBitwiseLogicOperation/test_sgt.py index 9ef6611e112..5164480e359 100644 --- a/tests/ported_static/vmBitwiseLogicOperation/test_sgt.py +++ b/tests/ported_static/vmBitwiseLogicOperation/test_sgt.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -76,9 +75,7 @@ def test_sgt( contract_2 = Address(0x0000000000000000000000000000000000001002) contract_3 = Address(0x0000000000000000000000000000000000001003) contract_4 = Address(0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0xBA1A9CE0BA1A9CE) env = Environment( fee_recipient=coinbase, @@ -168,7 +165,6 @@ def test_sgt( nonce=0, address=Address(0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC), # noqa: E501 ) - pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/vmBitwiseLogicOperation/test_slt.py b/tests/ported_static/vmBitwiseLogicOperation/test_slt.py index 08f97475d62..fc950a2787d 100644 --- a/tests/ported_static/vmBitwiseLogicOperation/test_slt.py +++ b/tests/ported_static/vmBitwiseLogicOperation/test_slt.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -76,9 +75,7 @@ def test_slt( contract_2 = Address(0x0000000000000000000000000000000000001002) contract_3 = Address(0x0000000000000000000000000000000000001003) contract_4 = Address(0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0xBA1A9CE0BA1A9CE) env = Environment( fee_recipient=coinbase, @@ -168,7 +165,6 @@ def test_slt( nonce=0, address=Address(0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC), # noqa: E501 ) - pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/vmBitwiseLogicOperation/test_xor.py b/tests/ported_static/vmBitwiseLogicOperation/test_xor.py index 556ace51848..b5bdb7b26bf 100644 --- a/tests/ported_static/vmBitwiseLogicOperation/test_xor.py +++ b/tests/ported_static/vmBitwiseLogicOperation/test_xor.py @@ -103,6 +103,7 @@ def test_xor( gas_limit=100000000, ) + pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE) # Source: lll # { # [[0]] (xor 2 2) @@ -215,7 +216,6 @@ def test_xor( nonce=0, address=Address(0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC), # noqa: E501 ) - pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/vmIOandFlowOperations/test_codecopy.py b/tests/ported_static/vmIOandFlowOperations/test_codecopy.py index b3fca1334fe..bfc509a4799 100644 --- a/tests/ported_static/vmIOandFlowOperations/test_codecopy.py +++ b/tests/ported_static/vmIOandFlowOperations/test_codecopy.py @@ -96,6 +96,7 @@ def test_codecopy( gas_limit=100000000, ) + pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE) # Source: lll # { # ; Copy our code into [[0]] and [[1]] @@ -130,22 +131,6 @@ def test_codecopy( ) # Source: lll # { - # ; Copy our code into [[0]] and [[1]] - # (codecopy 0 0 0x1000) - # [[0]] @0 - # [[1]] @0x20 - # } - contract_2 = pre.deploy_contract( # noqa: F841 - code=Op.CODECOPY(dest_offset=0x0, offset=0x0, size=0x1000) - + Op.SSTORE(key=0x0, value=Op.MLOAD(offset=0x0)) - + Op.SSTORE(key=0x1, value=Op.MLOAD(offset=0x20)) - + Op.STOP, - balance=0xBA1A9CE0BA1A9CE, - nonce=0, - address=Address(0x0000000000000000000000000000000000001002), # noqa: E501 - ) - # Source: lll - # { # ; Waste some space so we'll be over 0x20 bytes of code # [0x100] (+ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16) # @@ -289,7 +274,22 @@ def test_codecopy( nonce=0, address=Address(0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC), # noqa: E501 ) - pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE) + # Source: lll + # { + # ; Copy our code into [[0]] and [[1]] + # (codecopy 0 0 0x1000) + # [[0]] @0 + # [[1]] @0x20 + # } + contract_2 = pre.deploy_contract( # noqa: F841 + code=Op.CODECOPY(dest_offset=0x0, offset=0x0, size=0x1000) + + Op.SSTORE(key=0x0, value=Op.MLOAD(offset=0x0)) + + Op.SSTORE(key=0x1, value=Op.MLOAD(offset=0x20)) + + Op.STOP, + balance=0xBA1A9CE0BA1A9CE, + nonce=0, + address=Address(0x0000000000000000000000000000000000001002), # noqa: E501 + ) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/vmIOandFlowOperations/test_gas.py b/tests/ported_static/vmIOandFlowOperations/test_gas.py index 34d8c2f72cb..fdfe01710a7 100644 --- a/tests/ported_static/vmIOandFlowOperations/test_gas.py +++ b/tests/ported_static/vmIOandFlowOperations/test_gas.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -63,9 +62,7 @@ def test_gas( contract_0 = Address(0x0000000000000000000000000000000000001000) contract_1 = Address(0x0000000000000000000000000000000000001001) contract_2 = Address(0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0x100000000000) env = Environment( fee_recipient=coinbase, @@ -120,7 +117,6 @@ def test_gas( nonce=0, address=Address(0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC), # noqa: E501 ) - pre[sender] = Account(balance=0x100000000000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/vmIOandFlowOperations/test_jump.py b/tests/ported_static/vmIOandFlowOperations/test_jump.py index ed898e71509..ba214f9deca 100644 --- a/tests/ported_static/vmIOandFlowOperations/test_jump.py +++ b/tests/ported_static/vmIOandFlowOperations/test_jump.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -167,9 +166,7 @@ def test_jump( contract_15 = Address(0x000000000000000000000000000000000000100F) contract_16 = Address(0x0000000000000000000000000000000000001010) contract_17 = Address(0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0x100000000000) env = Environment( fee_recipient=coinbase, @@ -402,7 +399,6 @@ def test_jump( nonce=0, address=Address(0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC), # noqa: E501 ) - pre[sender] = Account(balance=0x100000000000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/vmIOandFlowOperations/test_jump_to_push.py b/tests/ported_static/vmIOandFlowOperations/test_jump_to_push.py index 8bc1c31d636..f3168e3b044 100644 --- a/tests/ported_static/vmIOandFlowOperations/test_jump_to_push.py +++ b/tests/ported_static/vmIOandFlowOperations/test_jump_to_push.py @@ -624,26 +624,7 @@ def test_jump_to_push( gas_limit=100000000, ) - # Source: raw - # 0x6001600055600A56605B5B - contract_0 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x0, value=0x1) - + Op.JUMP(pc=0xA) - + Op.PUSH1[0x5B] - + Op.JUMPDEST, - nonce=0, - address=Address(0x000000000000000000000000000000000000001A), # noqa: E501 - ) - # Source: raw - # 0x6001600055600956605B5B - contract_1 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x0, value=0x1) - + Op.JUMP(pc=0x9) - + Op.PUSH1[0x5B] - + Op.JUMPDEST, - nonce=0, - address=Address(0x000000000000000000000000000000000000001B), # noqa: E501 - ) + pre[sender] = Account(balance=0x100000000000) # Source: raw # 0x6001600055600B56615B5B5B contract_2 = pre.deploy_contract( # noqa: F841 @@ -1095,16 +1076,6 @@ def test_jump_to_push( address=Address(0x000000000000000000000000000000000000010C), # noqa: E501 ) # Source: raw - # 0x6001600055601A56705B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B - contract_47 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x0, value=0x1) - + Op.JUMP(pc=0x1A) - + Op.PUSH17[0x5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B] - + Op.JUMPDEST, - nonce=0, - address=Address(0x000000000000000000000000000000000000011A), # noqa: E501 - ) - # Source: raw # 0x6001600055600956705B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B contract_48 = pre.deploy_contract( # noqa: F841 code=Op.SSTORE(key=0x0, value=0x1) @@ -1125,16 +1096,6 @@ def test_jump_to_push( address=Address(0x000000000000000000000000000000000000011C), # noqa: E501 ) # Source: raw - # 0x6001600055601B56715B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B - contract_50 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x0, value=0x1) - + Op.JUMP(pc=0x1B) - + Op.PUSH18[0x5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B] - + Op.JUMPDEST, - nonce=0, - address=Address(0x000000000000000000000000000000000000012A), # noqa: E501 - ) - # Source: raw # 0x6001600055600956715B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B contract_51 = pre.deploy_contract( # noqa: F841 code=Op.SSTORE(key=0x0, value=0x1) @@ -1145,16 +1106,6 @@ def test_jump_to_push( address=Address(0x000000000000000000000000000000000000012B), # noqa: E501 ) # Source: raw - # 0x6001600055601A56715B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B - contract_52 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x0, value=0x1) - + Op.JUMP(pc=0x1A) - + Op.PUSH18[0x5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B] - + Op.JUMPDEST, - nonce=0, - address=Address(0x000000000000000000000000000000000000012C), # noqa: E501 - ) - # Source: raw # 0x6001600055601C56725B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B contract_53 = pre.deploy_contract( # noqa: F841 code=Op.SSTORE(key=0x0, value=0x1) @@ -1175,16 +1126,6 @@ def test_jump_to_push( address=Address(0x000000000000000000000000000000000000013B), # noqa: E501 ) # Source: raw - # 0x6001600055601B56725B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B - contract_55 = pre.deploy_contract( # noqa: F841 - code=Op.SSTORE(key=0x0, value=0x1) - + Op.JUMP(pc=0x1B) - + Op.PUSH19[0x5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B] - + Op.JUMPDEST, - nonce=0, - address=Address(0x000000000000000000000000000000000000013C), # noqa: E501 - ) - # Source: raw # 0x6001600055601D56735B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B contract_56 = pre.deploy_contract( # noqa: F841 code=Op.SSTORE(key=0x0, value=0x1) @@ -1617,7 +1558,66 @@ def test_jump_to_push( nonce=0, address=Address(0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC), # noqa: E501 ) - pre[sender] = Account(balance=0x100000000000) + # Source: raw + # 0x6001600055600956605B5B + contract_1 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x0, value=0x1) + + Op.JUMP(pc=0x9) + + Op.PUSH1[0x5B] + + Op.JUMPDEST, + nonce=0, + address=Address(0x000000000000000000000000000000000000001B), # noqa: E501 + ) + # Source: raw + # 0x6001600055600A56605B5B + contract_0 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x0, value=0x1) + + Op.JUMP(pc=0xA) + + Op.PUSH1[0x5B] + + Op.JUMPDEST, + nonce=0, + address=Address(0x000000000000000000000000000000000000001A), # noqa: E501 + ) + # Source: raw + # 0x6001600055601B56725B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B + contract_55 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x0, value=0x1) + + Op.JUMP(pc=0x1B) + + Op.PUSH19[0x5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B] + + Op.JUMPDEST, + nonce=0, + address=Address(0x000000000000000000000000000000000000013C), # noqa: E501 + ) + # Source: raw + # 0x6001600055601B56715B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B + contract_50 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x0, value=0x1) + + Op.JUMP(pc=0x1B) + + Op.PUSH18[0x5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B] + + Op.JUMPDEST, + nonce=0, + address=Address(0x000000000000000000000000000000000000012A), # noqa: E501 + ) + # Source: raw + # 0x6001600055601A56705B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B + contract_47 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x0, value=0x1) + + Op.JUMP(pc=0x1A) + + Op.PUSH17[0x5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B] + + Op.JUMPDEST, + nonce=0, + address=Address(0x000000000000000000000000000000000000011A), # noqa: E501 + ) + # Source: raw + # 0x6001600055601A56715B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B + contract_52 = pre.deploy_contract( # noqa: F841 + code=Op.SSTORE(key=0x0, value=0x1) + + Op.JUMP(pc=0x1A) + + Op.PUSH18[0x5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B] + + Op.JUMPDEST, + nonce=0, + address=Address(0x000000000000000000000000000000000000012C), # noqa: E501 + ) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/vmIOandFlowOperations/test_jumpi.py b/tests/ported_static/vmIOandFlowOperations/test_jumpi.py index 8fe20ed7ef8..c2da7dde412 100644 --- a/tests/ported_static/vmIOandFlowOperations/test_jumpi.py +++ b/tests/ported_static/vmIOandFlowOperations/test_jumpi.py @@ -243,6 +243,7 @@ def test_jumpi( gas_limit=100000000, ) + pre[sender] = Account(balance=0x100000000000) # Source: lll # { # [[0]] 0x600D @@ -580,7 +581,6 @@ def test_jumpi( nonce=0, address=Address(0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC), # noqa: E501 ) - pre[sender] = Account(balance=0x100000000000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/vmIOandFlowOperations/test_loop_stacklimit.py b/tests/ported_static/vmIOandFlowOperations/test_loop_stacklimit.py index d9b82c03b62..ec1cf83e0b3 100644 --- a/tests/ported_static/vmIOandFlowOperations/test_loop_stacklimit.py +++ b/tests/ported_static/vmIOandFlowOperations/test_loop_stacklimit.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -56,9 +55,7 @@ def test_loop_stacklimit( ) -> None: """Ori Pomerantz qbzzt1@gmail.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xA62D63F95900B04CCD3FEE13360DE78966F24695945E8B2C09E646352BC5AF94 - ) + sender = pre.fund_eoa(amount=0x100000000000) env = Environment( fee_recipient=coinbase, @@ -138,7 +135,6 @@ def test_loop_stacklimit( nonce=0, address=Address(0xF9B46C1D708104B4E6007D17AE485B0A00D8E952), # noqa: E501 ) - pre[sender] = Account(balance=0x100000000000) tx_data = [ Bytes("693c6139") + Hash(0x0), diff --git a/tests/ported_static/vmIOandFlowOperations/test_loops_conditionals.py b/tests/ported_static/vmIOandFlowOperations/test_loops_conditionals.py index fd2842c2cc3..ec091a54e3d 100644 --- a/tests/ported_static/vmIOandFlowOperations/test_loops_conditionals.py +++ b/tests/ported_static/vmIOandFlowOperations/test_loops_conditionals.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -125,9 +124,7 @@ def test_loops_conditionals( contract_9 = Address(0x0000000000000000000000000000000000001009) contract_10 = Address(0x000000000000000000000000000000000000100A) contract_11 = Address(0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0x100000000000) env = Environment( fee_recipient=coinbase, @@ -381,7 +378,6 @@ def test_loops_conditionals( nonce=0, address=Address(0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC), # noqa: E501 ) - pre[sender] = Account(balance=0x100000000000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/vmIOandFlowOperations/test_mload.py b/tests/ported_static/vmIOandFlowOperations/test_mload.py index a70c6c7b6c1..cf11bf25816 100644 --- a/tests/ported_static/vmIOandFlowOperations/test_mload.py +++ b/tests/ported_static/vmIOandFlowOperations/test_mload.py @@ -82,6 +82,7 @@ def test_mload( gas_limit=100000000, ) + pre[sender] = Account(balance=0x100000000000) # Source: lll # { # [0] 0x0000111122223333444455556666777788889999aaaabbbbccccddddeeeeffff # noqa: E501 @@ -140,7 +141,6 @@ def test_mload( nonce=0, address=Address(0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC), # noqa: E501 ) - pre[sender] = Account(balance=0x100000000000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/vmIOandFlowOperations/test_msize.py b/tests/ported_static/vmIOandFlowOperations/test_msize.py index 053751fd9ce..5cc3faad9f2 100644 --- a/tests/ported_static/vmIOandFlowOperations/test_msize.py +++ b/tests/ported_static/vmIOandFlowOperations/test_msize.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -91,9 +90,7 @@ def test_msize( contract_4 = Address(0x0000000000000000000000000000000000001004) contract_5 = Address(0x0000000000000000000000000000000000001005) contract_6 = Address(0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0x100000000000) env = Environment( fee_recipient=coinbase, @@ -229,7 +226,6 @@ def test_msize( nonce=0, address=Address(0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC), # noqa: E501 ) - pre[sender] = Account(balance=0x100000000000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/vmIOandFlowOperations/test_mstore.py b/tests/ported_static/vmIOandFlowOperations/test_mstore.py index 0ca59b2ff18..8ab043b473a 100644 --- a/tests/ported_static/vmIOandFlowOperations/test_mstore.py +++ b/tests/ported_static/vmIOandFlowOperations/test_mstore.py @@ -96,6 +96,7 @@ def test_mstore( gas_limit=100000000, ) + pre[sender] = Account(balance=0x100000000000) # Source: lll # { # (mstore 1 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) # noqa: E501 @@ -189,7 +190,6 @@ def test_mstore( nonce=0, address=Address(0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC), # noqa: E501 ) - pre[sender] = Account(balance=0x100000000000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/vmIOandFlowOperations/test_mstore8.py b/tests/ported_static/vmIOandFlowOperations/test_mstore8.py index 77b52f677e6..23cc67ce2c1 100644 --- a/tests/ported_static/vmIOandFlowOperations/test_mstore8.py +++ b/tests/ported_static/vmIOandFlowOperations/test_mstore8.py @@ -82,6 +82,7 @@ def test_mstore8( gas_limit=100000000, ) + pre[sender] = Account(balance=0x100000000000) # Source: lll # { # ; It ignores all but one byte, the least significant one @@ -144,7 +145,6 @@ def test_mstore8( nonce=0, address=Address(0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC), # noqa: E501 ) - pre[sender] = Account(balance=0x100000000000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/vmIOandFlowOperations/test_pc.py b/tests/ported_static/vmIOandFlowOperations/test_pc.py index 92cb22f05e4..fc3df94d285 100644 --- a/tests/ported_static/vmIOandFlowOperations/test_pc.py +++ b/tests/ported_static/vmIOandFlowOperations/test_pc.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -62,9 +61,7 @@ def test_pc( contract_0 = Address(0x0000000000000000000000000000000000001000) contract_1 = Address(0x0000000000000000000000000000000000001001) contract_2 = Address(0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0x100000000000) env = Environment( fee_recipient=coinbase, @@ -117,7 +114,6 @@ def test_pc( nonce=0, address=Address(0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC), # noqa: E501 ) - pre[sender] = Account(balance=0x100000000000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/vmIOandFlowOperations/test_pop.py b/tests/ported_static/vmIOandFlowOperations/test_pop.py index e419cc12536..9e49f6e31bc 100644 --- a/tests/ported_static/vmIOandFlowOperations/test_pop.py +++ b/tests/ported_static/vmIOandFlowOperations/test_pop.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -62,9 +61,7 @@ def test_pop( contract_0 = Address(0x0000000000000000000000000000000000001000) contract_1 = Address(0x0000000000000000000000000000000000001001) contract_2 = Address(0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0x100000000000) env = Environment( fee_recipient=coinbase, @@ -109,7 +106,6 @@ def test_pop( nonce=0, address=Address(0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC), # noqa: E501 ) - pre[sender] = Account(balance=0x100000000000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/vmIOandFlowOperations/test_return.py b/tests/ported_static/vmIOandFlowOperations/test_return.py index c7b15bac935..17e39f195f8 100644 --- a/tests/ported_static/vmIOandFlowOperations/test_return.py +++ b/tests/ported_static/vmIOandFlowOperations/test_return.py @@ -96,6 +96,7 @@ def test_return( gas_limit=100000000, ) + pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE) # Source: lll # { # [0] 0x0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef @@ -136,24 +137,6 @@ def test_return( # { # [0] 0x0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef # [[0xFF]] 0x600D - # (return 0x00 0x1000) - # } - contract_2 = pre.deploy_contract( # noqa: F841 - code=Op.MSTORE( - offset=0x0, - value=0x123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF, # noqa: E501 - ) - + Op.SSTORE(key=0xFF, value=0x600D) - + Op.RETURN(offset=0x0, size=0x1000) - + Op.STOP, - balance=0xBA1A9CE0BA1A9CE, - nonce=0, - address=Address(0x0000000000000000000000000000000000001002), # noqa: E501 - ) - # Source: lll - # { - # [0] 0x0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef - # [[0xFF]] 0x600D # (return 0x05 0x20) # } contract_3 = pre.deploy_contract( # noqa: F841 @@ -213,7 +196,24 @@ def test_return( nonce=0, address=Address(0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC), # noqa: E501 ) - pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE) + # Source: lll + # { + # [0] 0x0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef + # [[0xFF]] 0x600D + # (return 0x00 0x1000) + # } + contract_2 = pre.deploy_contract( # noqa: F841 + code=Op.MSTORE( + offset=0x0, + value=0x123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF, # noqa: E501 + ) + + Op.SSTORE(key=0xFF, value=0x600D) + + Op.RETURN(offset=0x0, size=0x1000) + + Op.STOP, + balance=0xBA1A9CE0BA1A9CE, + nonce=0, + address=Address(0x0000000000000000000000000000000000001002), # noqa: E501 + ) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/vmIOandFlowOperations/test_sstore_sload.py b/tests/ported_static/vmIOandFlowOperations/test_sstore_sload.py index 810c9dabdd4..21b82a91fe5 100644 --- a/tests/ported_static/vmIOandFlowOperations/test_sstore_sload.py +++ b/tests/ported_static/vmIOandFlowOperations/test_sstore_sload.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -69,9 +68,7 @@ def test_sstore_sload( contract_1 = Address(0x0000000000000000000000000000000000001001) contract_2 = Address(0x0000000000000000000000000000000000001002) contract_3 = Address(0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0x100000000000) env = Environment( fee_recipient=coinbase, @@ -150,7 +147,6 @@ def test_sstore_sload( nonce=0, address=Address(0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC), # noqa: E501 ) - pre[sender] = Account(balance=0x100000000000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/vmLogTest/test_log0.py b/tests/ported_static/vmLogTest/test_log0.py index dab95e1ab8e..d743762ab28 100644 --- a/tests/ported_static/vmLogTest/test_log0.py +++ b/tests/ported_static/vmLogTest/test_log0.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -104,9 +103,7 @@ def test_log0( contract_6 = Address(0x0000000000000000000000000000000000001006) contract_7 = Address(0x000000000000000000000000000000000000100A) contract_8 = Address(0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0x100000000000) env = Environment( fee_recipient=coinbase, @@ -284,7 +281,6 @@ def test_log0( nonce=0, address=Address(0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC), # noqa: E501 ) - pre[sender] = Account(balance=0x100000000000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/vmLogTest/test_log1.py b/tests/ported_static/vmLogTest/test_log1.py index c34f0bd9fae..b4309d454e6 100644 --- a/tests/ported_static/vmLogTest/test_log1.py +++ b/tests/ported_static/vmLogTest/test_log1.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -111,9 +110,7 @@ def test_log1( contract_7 = Address(0x0000000000000000000000000000000000001007) contract_8 = Address(0x0000000000000000000000000000000000001008) contract_9 = Address(0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0x100000000000) env = Environment( fee_recipient=coinbase, @@ -308,7 +305,6 @@ def test_log1( nonce=0, address=Address(0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC), # noqa: E501 ) - pre[sender] = Account(balance=0x100000000000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/vmLogTest/test_log2.py b/tests/ported_static/vmLogTest/test_log2.py index ccba83f956d..95fa656fe44 100644 --- a/tests/ported_static/vmLogTest/test_log2.py +++ b/tests/ported_static/vmLogTest/test_log2.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -111,9 +110,7 @@ def test_log2( contract_7 = Address(0x0000000000000000000000000000000000001007) contract_8 = Address(0x0000000000000000000000000000000000001008) contract_9 = Address(0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0x100000000000) env = Environment( fee_recipient=coinbase, @@ -309,7 +306,6 @@ def test_log2( nonce=0, address=Address(0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC), # noqa: E501 ) - pre[sender] = Account(balance=0x100000000000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/vmLogTest/test_log3.py b/tests/ported_static/vmLogTest/test_log3.py index d2157c11d13..a763ee5fd27 100644 --- a/tests/ported_static/vmLogTest/test_log3.py +++ b/tests/ported_static/vmLogTest/test_log3.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -118,9 +117,7 @@ def test_log3( contract_8 = Address(0x0000000000000000000000000000000000001008) contract_9 = Address(0x0000000000000000000000000000000000001009) contract_10 = Address(0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0x100000000000) env = Environment( fee_recipient=coinbase, @@ -353,7 +350,6 @@ def test_log3( nonce=0, address=Address(0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC), # noqa: E501 ) - pre[sender] = Account(balance=0x100000000000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/vmLogTest/test_log4.py b/tests/ported_static/vmLogTest/test_log4.py index 90163b8a93b..3266265017a 100644 --- a/tests/ported_static/vmLogTest/test_log4.py +++ b/tests/ported_static/vmLogTest/test_log4.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -118,9 +117,7 @@ def test_log4( contract_8 = Address(0x0000000000000000000000000000000000001008) contract_9 = Address(0x0000000000000000000000000000000000001009) contract_10 = Address(0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0x100000000000) env = Environment( fee_recipient=coinbase, @@ -399,7 +396,6 @@ def test_log4( nonce=0, address=Address(0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC), # noqa: E501 ) - pre[sender] = Account(balance=0x100000000000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/vmTests/test_block_info.py b/tests/ported_static/vmTests/test_block_info.py index 97511d5c869..57fc33cc47d 100644 --- a/tests/ported_static/vmTests/test_block_info.py +++ b/tests/ported_static/vmTests/test_block_info.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -83,9 +82,7 @@ def test_block_info( contract_3 = Address(0x0000000000000000000000000000000000001003) contract_4 = Address(0x0000000000000000000000000000000000001004) contract_5 = Address(0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC) - sender = EOA( - key=0x45A915E4D060149EB4365960E6A7A45F334393093061116B197E3240065FF2D8 - ) + sender = pre.fund_eoa(amount=0xBA1A9CE0BA1A9CE) env = Environment( fee_recipient=coinbase, @@ -165,17 +162,12 @@ def test_block_info( nonce=0, address=Address(0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC), # noqa: E501 ) - pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE) expect_entries_: list[dict] = [ { "indexes": {"data": [0], "gas": -1, "value": -1}, "network": [">=Cancun"], - "result": { - contract_0: Account( - storage={0: 0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA}, - ), - }, + "result": {contract_0: Account(storage={0: coinbase})}, }, { "indexes": {"data": [1], "gas": -1, "value": -1}, diff --git a/tests/ported_static/vmTests/test_env_info.py b/tests/ported_static/vmTests/test_env_info.py index a2a3dd0f4f4..67c2e62f6d6 100644 --- a/tests/ported_static/vmTests/test_env_info.py +++ b/tests/ported_static/vmTests/test_env_info.py @@ -131,6 +131,7 @@ def test_env_info( gas_limit=100000000, ) + pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE) # Source: lll # { # [[0]] (address) @@ -269,13 +270,12 @@ def test_env_info( nonce=0, address=Address(0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC), # noqa: E501 ) - pre[sender] = Account(balance=0xBA1A9CE0BA1A9CE) expect_entries_: list[dict] = [ { "indexes": {"data": [0], "gas": -1, "value": -1}, "network": [">=Cancun"], - "result": {contract_0: Account(storage={0: 4096})}, + "result": {contract_0: Account(storage={0: contract_0})}, }, { "indexes": {"data": [1], "gas": -1, "value": -1}, @@ -301,11 +301,7 @@ def test_env_info( { "indexes": {"data": [4], "gas": -1, "value": -1}, "network": [">=Cancun"], - "result": { - contract_4: Account( - storage={0: 0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC}, - ), - }, + "result": {contract_4: Account(storage={0: contract_10})}, }, { "indexes": {"data": [5], "gas": -1, "value": -1}, @@ -325,11 +321,7 @@ def test_env_info( { "indexes": {"data": [8], "gas": -1, "value": -1}, "network": [">=Cancun"], - "result": { - contract_8: Account( - storage={0: 0xA94F5374FCE5EDBC8E2A8697C15331677E6EBF0B}, - ), - }, + "result": {contract_8: Account(storage={0: sender})}, }, { "indexes": {"data": [9], "gas": -1, "value": -1}, diff --git a/tests/ported_static/vmTests/test_random.py b/tests/ported_static/vmTests/test_random.py index 6e042591b1b..5a64236ce99 100644 --- a/tests/ported_static/vmTests/test_random.py +++ b/tests/ported_static/vmTests/test_random.py @@ -7,7 +7,6 @@ import pytest from execution_testing import ( - EOA, Account, Address, Alloc, @@ -83,9 +82,7 @@ def test_random( ) -> None: """Ori Pomerantz qbzzt1@gmail.""" coinbase = Address(0x2ADC25665018AA1FE0E6BC666DAC8FC2697FF9BA) - sender = EOA( - key=0xF3630C36A29EC9AF814AE38E4D48056A3368BB1435C5C2B3289763E4C77A3DF0 - ) + sender = pre.fund_eoa(amount=0x10000000000000) env = Environment( fee_recipient=coinbase, @@ -179,7 +176,6 @@ def test_random( nonce=0, address=Address(0xA83DB56C7CE68C06129B80C7BE0D0F5E0869D536), # noqa: E501 ) - pre[sender] = Account(balance=0x10000000000000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/vmTests/test_sha3.py b/tests/ported_static/vmTests/test_sha3.py index e2e8ed1be05..a3805b31105 100644 --- a/tests/ported_static/vmTests/test_sha3.py +++ b/tests/ported_static/vmTests/test_sha3.py @@ -180,6 +180,7 @@ def test_sha3( gas_limit=100000000, ) + pre[sender] = Account(balance=0x100000000000) # Source: lll # { # [[0]] (sha3 0 0) @@ -401,7 +402,6 @@ def test_sha3( nonce=0, address=Address(0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC), # noqa: E501 ) - pre[sender] = Account(balance=0x100000000000) expect_entries_: list[dict] = [ { diff --git a/tests/ported_static/vmTests/test_suicide.py b/tests/ported_static/vmTests/test_suicide.py index 8fc985adfd1..02c1db148af 100644 --- a/tests/ported_static/vmTests/test_suicide.py +++ b/tests/ported_static/vmTests/test_suicide.py @@ -82,6 +82,7 @@ def test_suicide( gas_limit=100000000, ) + pre[sender] = Account(balance=0x5AF3107A4000) # Source: lll # { # (selfdestruct (caller)) @@ -131,7 +132,6 @@ def test_suicide( nonce=0, address=Address(0xCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC), # noqa: E501 ) - pre[sender] = Account(balance=0x5AF3107A4000) expect_entries_: list[dict] = [ { From e15f5a1baebf7fe74d602a83ded249cb70988a5a Mon Sep 17 00:00:00 2001 From: Leo Lara Date: Thu, 30 Apr 2026 14:36:28 +0700 Subject: [PATCH 2/5] chore(ported_static): prune amsterdam_skip_list to 455 currently-failing entries MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The list previously contained 5469 entries — many for tests that pass on snøbal/4 today (test source updated, addresses now dynamic, etc.) or for tests that no longer exist after PR #2695's regeneration. Empirically: - With the bloated list: 17199 passed, 1731 skipped, 0 failed. - With no list: 17565 passed, 0 skipped, 1365 failed (gas). - After this prune: 17565 passed, 1365 skipped, 0 failed. The remaining 455 entries are exactly those that match a currently- failing fork_Amsterdam parametrization (still legitimate InsufficientTransactionGasError under EIP-8037's two-dimensional gas model). Section-header counts updated to reflect the actual contents. --- tests/ported_static/amsterdam_skip_list.txt | 5034 +------------------ 1 file changed, 8 insertions(+), 5026 deletions(-) diff --git a/tests/ported_static/amsterdam_skip_list.txt b/tests/ported_static/amsterdam_skip_list.txt index 104e6ddfe25..19284fa5614 100644 --- a/tests/ported_static/amsterdam_skip_list.txt +++ b/tests/ported_static/amsterdam_skip_list.txt @@ -8,10 +8,9 @@ # Entries are substring-matched against each pytest nodeid (after # stripping the fixture-format suffix in conftest.py). # -# Total entries: 5469 +# Total entries: 455 -# stAttackTest (2) -stAttackTest/test_contract_creation_spam.py::test_contract_creation_spam[fork_Amsterdam] +# stAttackTest (1) stAttackTest/test_crashing_transaction.py::test_crashing_transaction[fork_Amsterdam] # stBadOpcode (4) @@ -39,7 +38,7 @@ stCallCodes/test_callcodecallcode_11.py::test_callcodecallcode_11[fork_Amsterdam stCallCodes/test_callcodecallcodecall_110.py::test_callcodecallcodecall_110[fork_Amsterdam] stCallCodes/test_callcodecallcodecallcode_111.py::test_callcodecallcodecallcode_111[fork_Amsterdam] -# stCallCreateCallCodeTest (18) +# stCallCreateCallCodeTest (12) stCallCreateCallCodeTest/test_call1024_oog.py::test_call1024_oog[fork_Amsterdam--g0] stCallCreateCallCodeTest/test_call1024_oog.py::test_call1024_oog[fork_Amsterdam--g1] stCallCreateCallCodeTest/test_call1024_oog.py::test_call1024_oog[fork_Amsterdam--g2] @@ -49,12 +48,6 @@ stCallCreateCallCodeTest/test_callcode1024_oog.py::test_callcode1024_oog[fork_Am stCallCreateCallCodeTest/test_callcode_lose_gas_oog.py::test_callcode_lose_gas_oog[fork_Amsterdam--g2] stCallCreateCallCodeTest/test_contract_creation_make_call_that_ask_more_gas_then_transaction_provided.py::test_contract_creation_make_call_that_ask_more_gas_then_transaction_provided[fork_Amsterdam--g0] stCallCreateCallCodeTest/test_contract_creation_make_call_that_ask_more_gas_then_transaction_provided.py::test_contract_creation_make_call_that_ask_more_gas_then_transaction_provided[fork_Amsterdam--g1] -stCallCreateCallCodeTest/test_create_fail_balance_too_low.py::test_create_fail_balance_too_low[fork_Amsterdam--v0] -stCallCreateCallCodeTest/test_create_init_fail_bad_jump_destination.py::test_create_init_fail_bad_jump_destination[fork_Amsterdam] -stCallCreateCallCodeTest/test_create_init_fail_bad_jump_destination2.py::test_create_init_fail_bad_jump_destination2[fork_Amsterdam] -stCallCreateCallCodeTest/test_create_init_fail_stack_size_larger_than1024.py::test_create_init_fail_stack_size_larger_than1024[fork_Amsterdam] -stCallCreateCallCodeTest/test_create_init_fail_stack_underflow.py::test_create_init_fail_stack_underflow[fork_Amsterdam] -stCallCreateCallCodeTest/test_create_init_fail_undefined_instruction2.py::test_create_init_fail_undefined_instruction2[fork_Amsterdam] stCallCreateCallCodeTest/test_create_name_registrator_per_txs_not_enough_gas.py::test_create_name_registrator_per_txs_not_enough_gas[fork_Amsterdam--g0] stCallCreateCallCodeTest/test_create_name_registrator_per_txs_not_enough_gas.py::test_create_name_registrator_per_txs_not_enough_gas[fork_Amsterdam--g1] stCallCreateCallCodeTest/test_create_name_registrator_pre_store1_not_enough_gas.py::test_create_name_registrator_pre_store1_not_enough_gas[fork_Amsterdam] @@ -90,7 +83,7 @@ stCodeSizeLimit/test_codesize_valid.py::test_codesize_valid[fork_Amsterdam-d1] stCodeSizeLimit/test_create2_code_size_limit.py::test_create2_code_size_limit[fork_Amsterdam-valid] stCodeSizeLimit/test_create_code_size_limit.py::test_create_code_size_limit[fork_Amsterdam-valid] -# stCreate2 (41) +# stCreate2 (39) stCreate2/test_create2_contract_suicide_during_init_then_store_then_return.py::test_create2_contract_suicide_during_init_then_store_then_return[fork_Amsterdam] stCreate2/test_create2_first_byte_loop.py::test_create2_first_byte_loop[fork_Amsterdam-firstHalf] stCreate2/test_create2_oo_gafter_init_code.py::test_create2_oo_gafter_init_code[fork_Amsterdam--g1] @@ -98,12 +91,10 @@ stCreate2/test_create2_oo_gafter_init_code_returndata2.py::test_create2_oo_gafte stCreate2/test_create2_oo_gafter_init_code_revert2.py::test_create2_oo_gafter_init_code_revert2[fork_Amsterdam] stCreate2/test_create2_oog_from_call_refunds.py::test_create2_oog_from_call_refunds[fork_Amsterdam-LogOp_OoG0] stCreate2/test_create2_oog_from_call_refunds.py::test_create2_oog_from_call_refunds[fork_Amsterdam-LogOp_OoG1] -stCreate2/test_create2_oog_from_call_refunds.py::test_create2_oog_from_call_refunds[fork_Amsterdam-SStore_CallCode_Refund_NoOoG] stCreate2/test_create2_oog_from_call_refunds.py::test_create2_oog_from_call_refunds[fork_Amsterdam-SStore_Create2_Refund_OoG0] stCreate2/test_create2_oog_from_call_refunds.py::test_create2_oog_from_call_refunds[fork_Amsterdam-SStore_Create2_Refund_OoG1] stCreate2/test_create2_oog_from_call_refunds.py::test_create2_oog_from_call_refunds[fork_Amsterdam-SStore_Create_Refund_OoG0] stCreate2/test_create2_oog_from_call_refunds.py::test_create2_oog_from_call_refunds[fork_Amsterdam-SStore_Create_Refund_OoG1] -stCreate2/test_create2_oog_from_call_refunds.py::test_create2_oog_from_call_refunds[fork_Amsterdam-SStore_DelegateCall_Refund_NoOoG] stCreate2/test_create2_oog_from_call_refunds.py::test_create2_oog_from_call_refunds[fork_Amsterdam-SStore_Refund_OoG0] stCreate2/test_create2_oog_from_call_refunds.py::test_create2_oog_from_call_refunds[fork_Amsterdam-SStore_Refund_OoG1] stCreate2/test_create2_oog_from_call_refunds.py::test_create2_oog_from_call_refunds[fork_Amsterdam-SStore_Refund_OoG2] @@ -133,7 +124,7 @@ stCreate2/test_revert_depth_create_address_collision.py::test_revert_depth_creat stCreate2/test_revert_depth_create_address_collision_berlin.py::test_revert_depth_create_address_collision_berlin[fork_Amsterdam-d1-g1-v0] stCreate2/test_revert_depth_create_address_collision_berlin.py::test_revert_depth_create_address_collision_berlin[fork_Amsterdam-d1-g1-v1] -# stCreateTest (61) +# stCreateTest (59) stCreateTest/test_create_address_warm_after_fail.py::test_create_address_warm_after_fail[fork_Amsterdam-create-0xef-v1] stCreateTest/test_create_address_warm_after_fail.py::test_create_address_warm_after_fail[fork_Amsterdam-create-code-too-big-v1] stCreateTest/test_create_address_warm_after_fail.py::test_create_address_warm_after_fail[fork_Amsterdam-create-contructor-revert-v1] @@ -172,8 +163,6 @@ stCreateTest/test_create_oog_from_call_refunds.py::test_create_oog_from_call_ref stCreateTest/test_create_oog_from_call_refunds.py::test_create_oog_from_call_refunds[fork_Amsterdam-SStore_Create2_Refund_OoG1] stCreateTest/test_create_oog_from_call_refunds.py::test_create_oog_from_call_refunds[fork_Amsterdam-SStore_Create_Refund_OoG0] stCreateTest/test_create_oog_from_call_refunds.py::test_create_oog_from_call_refunds[fork_Amsterdam-SStore_Create_Refund_OoG1] -stCreateTest/test_create_oog_from_call_refunds.py::test_create_oog_from_call_refunds[fork_Amsterdam-SStore_Refund_NoOoG2] -stCreateTest/test_create_oog_from_call_refunds.py::test_create_oog_from_call_refunds[fork_Amsterdam-SStore_Refund_NoOoG3] stCreateTest/test_create_oog_from_call_refunds.py::test_create_oog_from_call_refunds[fork_Amsterdam-SStore_Refund_OoG0] stCreateTest/test_create_oog_from_call_refunds.py::test_create_oog_from_call_refunds[fork_Amsterdam-SStore_Refund_OoG1] stCreateTest/test_create_oog_from_call_refunds.py::test_create_oog_from_call_refunds[fork_Amsterdam-SStore_Refund_OoG2] @@ -246,7 +235,7 @@ stEIP1559/test_sender_balance.py::test_sender_balance[fork_Amsterdam] # stEIP158Specific (1) stEIP158Specific/test_exp_empty.py::test_exp_empty[fork_Amsterdam] -# stEIP2930 (43) +# stEIP2930 (41) stEIP2930/test_manual_create.py::test_manual_create[fork_Amsterdam-addrGoodCellBad] stEIP2930/test_manual_create.py::test_manual_create[fork_Amsterdam-allBad] stEIP2930/test_manual_create.py::test_manual_create[fork_Amsterdam-allGood] @@ -260,8 +249,6 @@ stEIP2930/test_storage_costs.py::test_storage_costs[fork_Amsterdam-undeclaredKey stEIP2930/test_storage_costs.py::test_storage_costs[fork_Amsterdam-undeclaredKeyWrite_postSLOAD] stEIP2930/test_storage_costs.py::test_storage_costs[fork_Amsterdam-undeclaredTo0] stEIP2930/test_storage_costs.py::test_storage_costs[fork_Amsterdam-undeclaredTo1] -stEIP2930/test_transaction_costs.py::test_transaction_costs[fork_Amsterdam-addrs_0_keys_0] -stEIP2930/test_transaction_costs.py::test_transaction_costs[fork_Amsterdam-type0] stEIP2930/test_varied_context.py::test_varied_context[fork_Amsterdam-callCalleeInAccessList] stEIP2930/test_varied_context.py::test_varied_context[fork_Amsterdam-callCallerInAccessList] stEIP2930/test_varied_context.py::test_varied_context[fork_Amsterdam-callCreate2edInvalid] @@ -424,71 +411,31 @@ stRevertTest/test_revert_depth_create_oog.py::test_revert_depth_create_oog[fork_ stRevertTest/test_revert_opcode_in_init.py::test_revert_opcode_in_init[fork_Amsterdam--v0] stRevertTest/test_revert_opcode_in_init.py::test_revert_opcode_in_init[fork_Amsterdam--v1] -# stSStoreTest (186) -stSStoreTest/test_sstore_0to0.py::test_sstore_0to0[fork_Amsterdam-d0-g0] +# stSStoreTest (76) stSStoreTest/test_sstore_0to0.py::test_sstore_0to0[fork_Amsterdam-d0-g1] -stSStoreTest/test_sstore_0to0.py::test_sstore_0to0[fork_Amsterdam-d1-g0] stSStoreTest/test_sstore_0to0.py::test_sstore_0to0[fork_Amsterdam-d1-g1] -stSStoreTest/test_sstore_0to0.py::test_sstore_0to0[fork_Amsterdam-d2-g0] stSStoreTest/test_sstore_0to0.py::test_sstore_0to0[fork_Amsterdam-d2-g1] -stSStoreTest/test_sstore_0to0.py::test_sstore_0to0[fork_Amsterdam-d3-g0] -stSStoreTest/test_sstore_0to0.py::test_sstore_0to0[fork_Amsterdam-d4-g0] -stSStoreTest/test_sstore_0to0to0.py::test_sstore_0to0to0[fork_Amsterdam-d0-g0] stSStoreTest/test_sstore_0to0to0.py::test_sstore_0to0to0[fork_Amsterdam-d0-g1] -stSStoreTest/test_sstore_0to0to0.py::test_sstore_0to0to0[fork_Amsterdam-d1-g0] stSStoreTest/test_sstore_0to0to0.py::test_sstore_0to0to0[fork_Amsterdam-d1-g1] -stSStoreTest/test_sstore_0to0to0.py::test_sstore_0to0to0[fork_Amsterdam-d2-g0] stSStoreTest/test_sstore_0to0to0.py::test_sstore_0to0to0[fork_Amsterdam-d2-g1] -stSStoreTest/test_sstore_0to0to0.py::test_sstore_0to0to0[fork_Amsterdam-d3-g0] -stSStoreTest/test_sstore_0to0to0.py::test_sstore_0to0to0[fork_Amsterdam-d4-g0] -stSStoreTest/test_sstore_0to0to_x.py::test_sstore_0to0to_x[fork_Amsterdam-d0-g0] stSStoreTest/test_sstore_0to0to_x.py::test_sstore_0to0to_x[fork_Amsterdam-d0-g1] -stSStoreTest/test_sstore_0to0to_x.py::test_sstore_0to0to_x[fork_Amsterdam-d1-g0] stSStoreTest/test_sstore_0to0to_x.py::test_sstore_0to0to_x[fork_Amsterdam-d1-g1] -stSStoreTest/test_sstore_0to0to_x.py::test_sstore_0to0to_x[fork_Amsterdam-d2-g0] stSStoreTest/test_sstore_0to0to_x.py::test_sstore_0to0to_x[fork_Amsterdam-d2-g1] -stSStoreTest/test_sstore_0to0to_x.py::test_sstore_0to0to_x[fork_Amsterdam-d3-g0] -stSStoreTest/test_sstore_0to0to_x.py::test_sstore_0to0to_x[fork_Amsterdam-d4-g0] -stSStoreTest/test_sstore_0to_x.py::test_sstore_0to_x[fork_Amsterdam-d0-g0] stSStoreTest/test_sstore_0to_x.py::test_sstore_0to_x[fork_Amsterdam-d0-g1] -stSStoreTest/test_sstore_0to_x.py::test_sstore_0to_x[fork_Amsterdam-d1-g0] stSStoreTest/test_sstore_0to_x.py::test_sstore_0to_x[fork_Amsterdam-d1-g1] -stSStoreTest/test_sstore_0to_x.py::test_sstore_0to_x[fork_Amsterdam-d2-g0] stSStoreTest/test_sstore_0to_x.py::test_sstore_0to_x[fork_Amsterdam-d2-g1] -stSStoreTest/test_sstore_0to_x.py::test_sstore_0to_x[fork_Amsterdam-d3-g0] -stSStoreTest/test_sstore_0to_x.py::test_sstore_0to_x[fork_Amsterdam-d4-g0] -stSStoreTest/test_sstore_0to_xto0.py::test_sstore_0to_xto0[fork_Amsterdam-d0-g0] stSStoreTest/test_sstore_0to_xto0.py::test_sstore_0to_xto0[fork_Amsterdam-d0-g1] -stSStoreTest/test_sstore_0to_xto0.py::test_sstore_0to_xto0[fork_Amsterdam-d1-g0] stSStoreTest/test_sstore_0to_xto0.py::test_sstore_0to_xto0[fork_Amsterdam-d1-g1] -stSStoreTest/test_sstore_0to_xto0.py::test_sstore_0to_xto0[fork_Amsterdam-d2-g0] stSStoreTest/test_sstore_0to_xto0.py::test_sstore_0to_xto0[fork_Amsterdam-d2-g1] -stSStoreTest/test_sstore_0to_xto0.py::test_sstore_0to_xto0[fork_Amsterdam-d3-g0] -stSStoreTest/test_sstore_0to_xto0.py::test_sstore_0to_xto0[fork_Amsterdam-d4-g0] -stSStoreTest/test_sstore_0to_xto0to_x.py::test_sstore_0to_xto0to_x[fork_Amsterdam-d0-g0] stSStoreTest/test_sstore_0to_xto0to_x.py::test_sstore_0to_xto0to_x[fork_Amsterdam-d0-g1] -stSStoreTest/test_sstore_0to_xto0to_x.py::test_sstore_0to_xto0to_x[fork_Amsterdam-d1-g0] stSStoreTest/test_sstore_0to_xto0to_x.py::test_sstore_0to_xto0to_x[fork_Amsterdam-d1-g1] -stSStoreTest/test_sstore_0to_xto0to_x.py::test_sstore_0to_xto0to_x[fork_Amsterdam-d2-g0] stSStoreTest/test_sstore_0to_xto0to_x.py::test_sstore_0to_xto0to_x[fork_Amsterdam-d2-g1] -stSStoreTest/test_sstore_0to_xto0to_x.py::test_sstore_0to_xto0to_x[fork_Amsterdam-d3-g0] -stSStoreTest/test_sstore_0to_xto0to_x.py::test_sstore_0to_xto0to_x[fork_Amsterdam-d4-g0] -stSStoreTest/test_sstore_0to_xto_x.py::test_sstore_0to_xto_x[fork_Amsterdam-d0-g0] stSStoreTest/test_sstore_0to_xto_x.py::test_sstore_0to_xto_x[fork_Amsterdam-d0-g1] -stSStoreTest/test_sstore_0to_xto_x.py::test_sstore_0to_xto_x[fork_Amsterdam-d1-g0] stSStoreTest/test_sstore_0to_xto_x.py::test_sstore_0to_xto_x[fork_Amsterdam-d1-g1] -stSStoreTest/test_sstore_0to_xto_x.py::test_sstore_0to_xto_x[fork_Amsterdam-d2-g0] stSStoreTest/test_sstore_0to_xto_x.py::test_sstore_0to_xto_x[fork_Amsterdam-d2-g1] -stSStoreTest/test_sstore_0to_xto_x.py::test_sstore_0to_xto_x[fork_Amsterdam-d3-g0] -stSStoreTest/test_sstore_0to_xto_x.py::test_sstore_0to_xto_x[fork_Amsterdam-d4-g0] -stSStoreTest/test_sstore_0to_xto_y.py::test_sstore_0to_xto_y[fork_Amsterdam-d0-g0] stSStoreTest/test_sstore_0to_xto_y.py::test_sstore_0to_xto_y[fork_Amsterdam-d0-g1] -stSStoreTest/test_sstore_0to_xto_y.py::test_sstore_0to_xto_y[fork_Amsterdam-d1-g0] stSStoreTest/test_sstore_0to_xto_y.py::test_sstore_0to_xto_y[fork_Amsterdam-d1-g1] -stSStoreTest/test_sstore_0to_xto_y.py::test_sstore_0to_xto_y[fork_Amsterdam-d2-g0] stSStoreTest/test_sstore_0to_xto_y.py::test_sstore_0to_xto_y[fork_Amsterdam-d2-g1] -stSStoreTest/test_sstore_0to_xto_y.py::test_sstore_0to_xto_y[fork_Amsterdam-d3-g0] -stSStoreTest/test_sstore_0to_xto_y.py::test_sstore_0to_xto_y[fork_Amsterdam-d4-g0] stSStoreTest/test_sstore_change_from_external_call_in_init_code.py::test_sstore_change_from_external_call_in_init_code[fork_Amsterdam-d0] stSStoreTest/test_sstore_change_from_external_call_in_init_code.py::test_sstore_change_from_external_call_in_init_code[fork_Amsterdam-d1] stSStoreTest/test_sstore_change_from_external_call_in_init_code.py::test_sstore_change_from_external_call_in_init_code[fork_Amsterdam-d3] @@ -499,5021 +446,56 @@ stSStoreTest/test_sstore_gas.py::test_sstore_gas[fork_Amsterdam] stSStoreTest/test_sstore_gas_left.py::test_sstore_gas_left[fork_Amsterdam-d2] stSStoreTest/test_sstore_gas_left.py::test_sstore_gas_left[fork_Amsterdam-d5] stSStoreTest/test_sstore_gas_left.py::test_sstore_gas_left[fork_Amsterdam-d8] -stSStoreTest/test_sstore_xto0.py::test_sstore_xto0[fork_Amsterdam-d0-g0] stSStoreTest/test_sstore_xto0.py::test_sstore_xto0[fork_Amsterdam-d0-g1] -stSStoreTest/test_sstore_xto0.py::test_sstore_xto0[fork_Amsterdam-d1-g0] stSStoreTest/test_sstore_xto0.py::test_sstore_xto0[fork_Amsterdam-d1-g1] -stSStoreTest/test_sstore_xto0.py::test_sstore_xto0[fork_Amsterdam-d2-g0] stSStoreTest/test_sstore_xto0.py::test_sstore_xto0[fork_Amsterdam-d2-g1] -stSStoreTest/test_sstore_xto0.py::test_sstore_xto0[fork_Amsterdam-d3-g0] -stSStoreTest/test_sstore_xto0.py::test_sstore_xto0[fork_Amsterdam-d4-g0] -stSStoreTest/test_sstore_xto0to0.py::test_sstore_xto0to0[fork_Amsterdam-d0-g0] stSStoreTest/test_sstore_xto0to0.py::test_sstore_xto0to0[fork_Amsterdam-d0-g1] -stSStoreTest/test_sstore_xto0to0.py::test_sstore_xto0to0[fork_Amsterdam-d1-g0] stSStoreTest/test_sstore_xto0to0.py::test_sstore_xto0to0[fork_Amsterdam-d1-g1] -stSStoreTest/test_sstore_xto0to0.py::test_sstore_xto0to0[fork_Amsterdam-d2-g0] stSStoreTest/test_sstore_xto0to0.py::test_sstore_xto0to0[fork_Amsterdam-d2-g1] -stSStoreTest/test_sstore_xto0to0.py::test_sstore_xto0to0[fork_Amsterdam-d3-g0] -stSStoreTest/test_sstore_xto0to0.py::test_sstore_xto0to0[fork_Amsterdam-d4-g0] -stSStoreTest/test_sstore_xto0to_x.py::test_sstore_xto0to_x[fork_Amsterdam-d0-g0] stSStoreTest/test_sstore_xto0to_x.py::test_sstore_xto0to_x[fork_Amsterdam-d0-g1] -stSStoreTest/test_sstore_xto0to_x.py::test_sstore_xto0to_x[fork_Amsterdam-d1-g0] stSStoreTest/test_sstore_xto0to_x.py::test_sstore_xto0to_x[fork_Amsterdam-d1-g1] -stSStoreTest/test_sstore_xto0to_x.py::test_sstore_xto0to_x[fork_Amsterdam-d2-g0] stSStoreTest/test_sstore_xto0to_x.py::test_sstore_xto0to_x[fork_Amsterdam-d2-g1] -stSStoreTest/test_sstore_xto0to_x.py::test_sstore_xto0to_x[fork_Amsterdam-d3-g0] -stSStoreTest/test_sstore_xto0to_x.py::test_sstore_xto0to_x[fork_Amsterdam-d4-g0] -stSStoreTest/test_sstore_xto0to_xto0.py::test_sstore_xto0to_xto0[fork_Amsterdam-d0-g0] stSStoreTest/test_sstore_xto0to_xto0.py::test_sstore_xto0to_xto0[fork_Amsterdam-d0-g1] -stSStoreTest/test_sstore_xto0to_xto0.py::test_sstore_xto0to_xto0[fork_Amsterdam-d1-g0] stSStoreTest/test_sstore_xto0to_xto0.py::test_sstore_xto0to_xto0[fork_Amsterdam-d1-g1] -stSStoreTest/test_sstore_xto0to_xto0.py::test_sstore_xto0to_xto0[fork_Amsterdam-d2-g0] stSStoreTest/test_sstore_xto0to_xto0.py::test_sstore_xto0to_xto0[fork_Amsterdam-d2-g1] -stSStoreTest/test_sstore_xto0to_xto0.py::test_sstore_xto0to_xto0[fork_Amsterdam-d3-g0] -stSStoreTest/test_sstore_xto0to_xto0.py::test_sstore_xto0to_xto0[fork_Amsterdam-d4-g0] -stSStoreTest/test_sstore_xto0to_y.py::test_sstore_xto0to_y[fork_Amsterdam-d0-g0] stSStoreTest/test_sstore_xto0to_y.py::test_sstore_xto0to_y[fork_Amsterdam-d0-g1] -stSStoreTest/test_sstore_xto0to_y.py::test_sstore_xto0to_y[fork_Amsterdam-d1-g0] stSStoreTest/test_sstore_xto0to_y.py::test_sstore_xto0to_y[fork_Amsterdam-d1-g1] -stSStoreTest/test_sstore_xto0to_y.py::test_sstore_xto0to_y[fork_Amsterdam-d2-g0] stSStoreTest/test_sstore_xto0to_y.py::test_sstore_xto0to_y[fork_Amsterdam-d2-g1] -stSStoreTest/test_sstore_xto0to_y.py::test_sstore_xto0to_y[fork_Amsterdam-d3-g0] -stSStoreTest/test_sstore_xto0to_y.py::test_sstore_xto0to_y[fork_Amsterdam-d4-g0] -stSStoreTest/test_sstore_xto_x.py::test_sstore_xto_x[fork_Amsterdam-d0-g0] stSStoreTest/test_sstore_xto_x.py::test_sstore_xto_x[fork_Amsterdam-d0-g1] -stSStoreTest/test_sstore_xto_x.py::test_sstore_xto_x[fork_Amsterdam-d1-g0] stSStoreTest/test_sstore_xto_x.py::test_sstore_xto_x[fork_Amsterdam-d1-g1] -stSStoreTest/test_sstore_xto_x.py::test_sstore_xto_x[fork_Amsterdam-d2-g0] stSStoreTest/test_sstore_xto_x.py::test_sstore_xto_x[fork_Amsterdam-d2-g1] -stSStoreTest/test_sstore_xto_x.py::test_sstore_xto_x[fork_Amsterdam-d3-g0] -stSStoreTest/test_sstore_xto_x.py::test_sstore_xto_x[fork_Amsterdam-d4-g0] -stSStoreTest/test_sstore_xto_xto0.py::test_sstore_xto_xto0[fork_Amsterdam-d0-g0] stSStoreTest/test_sstore_xto_xto0.py::test_sstore_xto_xto0[fork_Amsterdam-d0-g1] -stSStoreTest/test_sstore_xto_xto0.py::test_sstore_xto_xto0[fork_Amsterdam-d1-g0] stSStoreTest/test_sstore_xto_xto0.py::test_sstore_xto_xto0[fork_Amsterdam-d1-g1] -stSStoreTest/test_sstore_xto_xto0.py::test_sstore_xto_xto0[fork_Amsterdam-d2-g0] stSStoreTest/test_sstore_xto_xto0.py::test_sstore_xto_xto0[fork_Amsterdam-d2-g1] -stSStoreTest/test_sstore_xto_xto0.py::test_sstore_xto_xto0[fork_Amsterdam-d3-g0] -stSStoreTest/test_sstore_xto_xto0.py::test_sstore_xto_xto0[fork_Amsterdam-d4-g0] -stSStoreTest/test_sstore_xto_xto_x.py::test_sstore_xto_xto_x[fork_Amsterdam-d0-g0] stSStoreTest/test_sstore_xto_xto_x.py::test_sstore_xto_xto_x[fork_Amsterdam-d0-g1] -stSStoreTest/test_sstore_xto_xto_x.py::test_sstore_xto_xto_x[fork_Amsterdam-d1-g0] stSStoreTest/test_sstore_xto_xto_x.py::test_sstore_xto_xto_x[fork_Amsterdam-d1-g1] -stSStoreTest/test_sstore_xto_xto_x.py::test_sstore_xto_xto_x[fork_Amsterdam-d2-g0] stSStoreTest/test_sstore_xto_xto_x.py::test_sstore_xto_xto_x[fork_Amsterdam-d2-g1] -stSStoreTest/test_sstore_xto_xto_x.py::test_sstore_xto_xto_x[fork_Amsterdam-d3-g0] -stSStoreTest/test_sstore_xto_xto_x.py::test_sstore_xto_xto_x[fork_Amsterdam-d4-g0] -stSStoreTest/test_sstore_xto_xto_y.py::test_sstore_xto_xto_y[fork_Amsterdam-d0-g0] stSStoreTest/test_sstore_xto_xto_y.py::test_sstore_xto_xto_y[fork_Amsterdam-d0-g1] -stSStoreTest/test_sstore_xto_xto_y.py::test_sstore_xto_xto_y[fork_Amsterdam-d1-g0] stSStoreTest/test_sstore_xto_xto_y.py::test_sstore_xto_xto_y[fork_Amsterdam-d1-g1] -stSStoreTest/test_sstore_xto_xto_y.py::test_sstore_xto_xto_y[fork_Amsterdam-d2-g0] stSStoreTest/test_sstore_xto_xto_y.py::test_sstore_xto_xto_y[fork_Amsterdam-d2-g1] -stSStoreTest/test_sstore_xto_xto_y.py::test_sstore_xto_xto_y[fork_Amsterdam-d3-g0] -stSStoreTest/test_sstore_xto_xto_y.py::test_sstore_xto_xto_y[fork_Amsterdam-d4-g0] -stSStoreTest/test_sstore_xto_y.py::test_sstore_xto_y[fork_Amsterdam-d0-g0] stSStoreTest/test_sstore_xto_y.py::test_sstore_xto_y[fork_Amsterdam-d0-g1] -stSStoreTest/test_sstore_xto_y.py::test_sstore_xto_y[fork_Amsterdam-d1-g0] stSStoreTest/test_sstore_xto_y.py::test_sstore_xto_y[fork_Amsterdam-d1-g1] -stSStoreTest/test_sstore_xto_y.py::test_sstore_xto_y[fork_Amsterdam-d2-g0] stSStoreTest/test_sstore_xto_y.py::test_sstore_xto_y[fork_Amsterdam-d2-g1] -stSStoreTest/test_sstore_xto_y.py::test_sstore_xto_y[fork_Amsterdam-d3-g0] -stSStoreTest/test_sstore_xto_y.py::test_sstore_xto_y[fork_Amsterdam-d4-g0] -stSStoreTest/test_sstore_xto_yto0.py::test_sstore_xto_yto0[fork_Amsterdam-d0-g0] stSStoreTest/test_sstore_xto_yto0.py::test_sstore_xto_yto0[fork_Amsterdam-d0-g1] -stSStoreTest/test_sstore_xto_yto0.py::test_sstore_xto_yto0[fork_Amsterdam-d1-g0] stSStoreTest/test_sstore_xto_yto0.py::test_sstore_xto_yto0[fork_Amsterdam-d1-g1] -stSStoreTest/test_sstore_xto_yto0.py::test_sstore_xto_yto0[fork_Amsterdam-d2-g0] stSStoreTest/test_sstore_xto_yto0.py::test_sstore_xto_yto0[fork_Amsterdam-d2-g1] -stSStoreTest/test_sstore_xto_yto0.py::test_sstore_xto_yto0[fork_Amsterdam-d3-g0] -stSStoreTest/test_sstore_xto_yto0.py::test_sstore_xto_yto0[fork_Amsterdam-d4-g0] -stSStoreTest/test_sstore_xto_yto_x.py::test_sstore_xto_yto_x[fork_Amsterdam-d0-g0] stSStoreTest/test_sstore_xto_yto_x.py::test_sstore_xto_yto_x[fork_Amsterdam-d0-g1] -stSStoreTest/test_sstore_xto_yto_x.py::test_sstore_xto_yto_x[fork_Amsterdam-d1-g0] stSStoreTest/test_sstore_xto_yto_x.py::test_sstore_xto_yto_x[fork_Amsterdam-d1-g1] -stSStoreTest/test_sstore_xto_yto_x.py::test_sstore_xto_yto_x[fork_Amsterdam-d2-g0] stSStoreTest/test_sstore_xto_yto_x.py::test_sstore_xto_yto_x[fork_Amsterdam-d2-g1] -stSStoreTest/test_sstore_xto_yto_x.py::test_sstore_xto_yto_x[fork_Amsterdam-d3-g0] -stSStoreTest/test_sstore_xto_yto_x.py::test_sstore_xto_yto_x[fork_Amsterdam-d4-g0] -stSStoreTest/test_sstore_xto_yto_y.py::test_sstore_xto_yto_y[fork_Amsterdam-d0-g0] stSStoreTest/test_sstore_xto_yto_y.py::test_sstore_xto_yto_y[fork_Amsterdam-d0-g1] -stSStoreTest/test_sstore_xto_yto_y.py::test_sstore_xto_yto_y[fork_Amsterdam-d1-g0] stSStoreTest/test_sstore_xto_yto_y.py::test_sstore_xto_yto_y[fork_Amsterdam-d1-g1] -stSStoreTest/test_sstore_xto_yto_y.py::test_sstore_xto_yto_y[fork_Amsterdam-d2-g0] stSStoreTest/test_sstore_xto_yto_y.py::test_sstore_xto_yto_y[fork_Amsterdam-d2-g1] -stSStoreTest/test_sstore_xto_yto_y.py::test_sstore_xto_yto_y[fork_Amsterdam-d3-g0] -stSStoreTest/test_sstore_xto_yto_y.py::test_sstore_xto_yto_y[fork_Amsterdam-d4-g0] -stSStoreTest/test_sstore_xto_yto_z.py::test_sstore_xto_yto_z[fork_Amsterdam-d0-g0] stSStoreTest/test_sstore_xto_yto_z.py::test_sstore_xto_yto_z[fork_Amsterdam-d0-g1] -stSStoreTest/test_sstore_xto_yto_z.py::test_sstore_xto_yto_z[fork_Amsterdam-d1-g0] stSStoreTest/test_sstore_xto_yto_z.py::test_sstore_xto_yto_z[fork_Amsterdam-d1-g1] -stSStoreTest/test_sstore_xto_yto_z.py::test_sstore_xto_yto_z[fork_Amsterdam-d2-g0] stSStoreTest/test_sstore_xto_yto_z.py::test_sstore_xto_yto_z[fork_Amsterdam-d2-g1] -stSStoreTest/test_sstore_xto_yto_z.py::test_sstore_xto_yto_z[fork_Amsterdam-d3-g0] -stSStoreTest/test_sstore_xto_yto_z.py::test_sstore_xto_yto_z[fork_Amsterdam-d4-g0] # stSpecialTest (1) stSpecialTest/test_make_money.py::test_make_money[fork_Amsterdam] -# stStaticCall (28) -stStaticCall/test_static_call10.py::test_static_call10[fork_Amsterdam-d0] -stStaticCall/test_static_call_contract_to_create_contract_oog.py::test_static_call_contract_to_create_contract_oog[fork_Amsterdam--v1] -stStaticCall/test_static_call_contract_to_create_contract_which_would_create_contract_if_called.py::test_static_call_contract_to_create_contract_which_would_create_contract_if_called[fork_Amsterdam] -stStaticCall/test_static_call_lose_gas_oog.py::test_static_call_lose_gas_oog[fork_Amsterdam] -stStaticCall/test_static_callcodecallcallcode_101_oogm_after_3.py::test_static_callcodecallcallcode_101_oogm_after_3[fork_Amsterdam-d0] -stStaticCall/test_static_callcodecallcodecall_110_suicide_end.py::test_static_callcodecallcodecall_110_suicide_end[fork_Amsterdam--v0] -stStaticCall/test_static_callcodecallcodecall_110_suicide_end.py::test_static_callcodecallcodecall_110_suicide_end[fork_Amsterdam--v1] -stStaticCall/test_static_callcodecallcodecall_110_suicide_end2.py::test_static_callcodecallcodecall_110_suicide_end2[fork_Amsterdam--v0] -stStaticCall/test_static_callcodecallcodecall_110_suicide_end2.py::test_static_callcodecallcodecall_110_suicide_end2[fork_Amsterdam--v1] -stStaticCall/test_static_check_opcodes.py::test_static_check_opcodes[fork_Amsterdam-d0-g0-v0] -stStaticCall/test_static_check_opcodes.py::test_static_check_opcodes[fork_Amsterdam-d0-g0-v1] -stStaticCall/test_static_contract_creation_make_call_that_ask_more_gas_then_transaction_provided.py::test_static_contract_creation_make_call_that_ask_more_gas_then_transaction_provided[fork_Amsterdam-d0] -stStaticCall/test_static_contract_creation_make_call_that_ask_more_gas_then_transaction_provided.py::test_static_contract_creation_make_call_that_ask_more_gas_then_transaction_provided[fork_Amsterdam-d1] -stStaticCall/test_static_contract_creation_make_call_that_ask_more_gas_then_transaction_provided.py::test_static_contract_creation_make_call_that_ask_more_gas_then_transaction_provided[fork_Amsterdam-d2] -stStaticCall/test_static_contract_creation_make_call_that_ask_more_gas_then_transaction_provided.py::test_static_contract_creation_make_call_that_ask_more_gas_then_transaction_provided[fork_Amsterdam-d3] -stStaticCall/test_static_contract_creation_oo_gdont_leave_empty_contract_via_transaction.py::test_static_contract_creation_oo_gdont_leave_empty_contract_via_transaction[fork_Amsterdam] -stStaticCall/test_static_create_contract_suicide_during_init.py::test_static_create_contract_suicide_during_init[fork_Amsterdam-d0] -stStaticCall/test_static_create_contract_suicide_during_init.py::test_static_create_contract_suicide_during_init[fork_Amsterdam-d1] -stStaticCall/test_static_create_contract_suicide_during_init.py::test_static_create_contract_suicide_during_init[fork_Amsterdam-d2] -stStaticCall/test_static_create_contract_suicide_during_init.py::test_static_create_contract_suicide_during_init[fork_Amsterdam-d3] -stStaticCall/test_static_create_contract_suicide_during_init_with_value.py::test_static_create_contract_suicide_during_init_with_value[fork_Amsterdam-d0] -stStaticCall/test_static_create_contract_suicide_during_init_with_value.py::test_static_create_contract_suicide_during_init_with_value[fork_Amsterdam-d1] -stStaticCall/test_static_create_empty_contract_and_call_it_0wei.py::test_static_create_empty_contract_and_call_it_0wei[fork_Amsterdam] -stStaticCall/test_static_create_empty_contract_with_storage_and_call_it_0wei.py::test_static_create_empty_contract_with_storage_and_call_it_0wei[fork_Amsterdam] -stStaticCall/test_static_return50000_2.py::test_static_return50000_2[fork_Amsterdam] -stStaticCall/test_staticcall_to_precompile_from_called_contract.py::test_staticcall_to_precompile_from_called_contract[fork_Amsterdam] -stStaticCall/test_staticcall_to_precompile_from_contract_initialization.py::test_staticcall_to_precompile_from_contract_initialization[fork_Amsterdam] -stStaticCall/test_staticcall_to_precompile_from_transaction.py::test_staticcall_to_precompile_from_transaction[fork_Amsterdam] - # stSystemOperationsTest (2) stSystemOperationsTest/test_ab_acalls3.py::test_ab_acalls3[fork_Amsterdam] stSystemOperationsTest/test_call_recursive_bomb3.py::test_call_recursive_bomb3[fork_Amsterdam] -# stTimeConsuming (4863) -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALLCODE_noop-call_3_CALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALLCODE_noop-call_3_CALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALLCODE_noop-call_3_CALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALLCODE_noop-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALLCODE_noop-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALLCODE_noop-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALLCODE_noop-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALLCODE_noop-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALLCODE_noop-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALLCODE_noop-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALLCODE_noop-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALLCODE_noop-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALLCODE_noop-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALLCODE_noop-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALLCODE_noop-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALLCODE_noop-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALLCODE_noop-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALLCODE_noop-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALLCODE_noop-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALLCODE_noop-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALLCODE_noop-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALLCODE_noop-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALLCODE_noop-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALLCODE_noop-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALLCODE_revert-call_3_CALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALLCODE_revert-call_3_CALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALLCODE_revert-call_3_CALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALLCODE_revert-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALLCODE_revert-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALLCODE_revert-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALLCODE_revert-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALLCODE_revert-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALLCODE_revert-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALLCODE_revert-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALLCODE_revert-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALLCODE_revert-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALLCODE_revert-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALLCODE_revert-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALLCODE_revert-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALLCODE_revert-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALLCODE_revert-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALLCODE_revert-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALLCODE_revert-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALLCODE_revert-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALLCODE_revert-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALLCODE_revert-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALLCODE_revert-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALLCODE_revert-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALLCODE_sstore-toggle-call_3_CALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALLCODE_sstore-toggle-call_3_CALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALLCODE_sstore-toggle-call_3_CALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALLCODE_sstore-toggle-call_3_CALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALLCODE_sstore-toggle-call_3_CALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALLCODE_sstore-toggle-call_3_CALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALLCODE_sstore-toggle-call_3_CALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALLCODE_sstore-toggle-call_3_CALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALLCODE_sstore-toggle-call_3_CALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALLCODE_sstore-toggle-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALLCODE_sstore-toggle-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALLCODE_sstore-toggle-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALLCODE_sstore-toggle-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALLCODE_sstore-toggle-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALLCODE_sstore-toggle-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALLCODE_sstore-toggle-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALLCODE_sstore-toggle-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALLCODE_sstore-toggle-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALLCODE_sstore-toggle-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALLCODE_sstore-toggle-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALLCODE_sstore-toggle-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALLCODE_sstore-toggle-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALLCODE_sstore-toggle-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALLCODE_sstore-toggle-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALLCODE_sstore-toggle-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALLCODE_sstore-toggle-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALLCODE_sstore-toggle-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALLCODE_sstore-toggle-call_3_STATICCALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALLCODE_sstore-toggle-call_3_STATICCALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALLCODE_sstore-toggle-call_3_STATICCALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALLCODE_sstore-toggle-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALLCODE_sstore-toggle-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALLCODE_sstore-toggle-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALLCODE_sstore-toggle-call_3_STATICCALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALLCODE_sstore-toggle-call_3_STATICCALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALLCODE_sstore-toggle-call_3_STATICCALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_noop-call_3_CALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_noop-call_3_CALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_noop-call_3_CALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_noop-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_noop-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_noop-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_noop-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_noop-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_noop-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_noop-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_noop-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_noop-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_noop-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_noop-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_noop-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_noop-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_noop-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_noop-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_noop-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_noop-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_noop-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_noop-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_noop-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_noop-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_revert-call_3_CALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_revert-call_3_CALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_revert-call_3_CALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_revert-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_revert-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_revert-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_revert-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_revert-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_revert-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_revert-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_revert-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_revert-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_revert-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_revert-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_revert-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_revert-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_revert-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_revert-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_revert-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_revert-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_revert-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_revert-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_revert-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_revert-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_CALL-call_4_CALLCODE_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_CALL-call_4_CALLCODE_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_CALL-call_4_CALLCODE_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_CALL-call_4_CALLCODE_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_CALL-call_4_CALLCODE_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_CALL-call_4_CALLCODE_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_CALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_CALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_CALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_CALL-call_4_CALL_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_CALL-call_4_CALL_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_CALL-call_4_CALL_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_CALL-call_4_CALL_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_CALL-call_4_CALL_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_CALL-call_4_CALL_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_CALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_CALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_CALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_CALL-call_4_DELEGATECALL_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_CALL-call_4_DELEGATECALL_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_CALL-call_4_DELEGATECALL_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_CALL-call_4_DELEGATECALL_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_CALL-call_4_DELEGATECALL_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_CALL-call_4_DELEGATECALL_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_CALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_CALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_CALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_CALL-call_4_STATICCALL_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_CALL-call_4_STATICCALL_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_CALL-call_4_STATICCALL_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_CALL-call_4_STATICCALL_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_CALL-call_4_STATICCALL_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_CALL-call_4_STATICCALL_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_CALL-call_4_STATICCALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_CALL-call_4_STATICCALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_CALL-call_4_STATICCALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_CALLCODE_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_CALLCODE_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_CALLCODE_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_CALLCODE_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_CALLCODE_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_CALLCODE_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_CALL_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_CALL_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_CALL_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_CALL_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_CALL_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_CALL_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_DELEGATECALL_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_DELEGATECALL_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_DELEGATECALL_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_DELEGATECALL_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_DELEGATECALL_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_DELEGATECALL_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_STATICCALL_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_STATICCALL_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_STATICCALL_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_STATICCALL_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_STATICCALL_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_STATICCALL_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_STATICCALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_STATICCALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_STATICCALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALLCODE_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALLCODE_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALLCODE_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALLCODE_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALLCODE_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALLCODE_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALL_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALL_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALL_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALL_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALL_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALL_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_DELEGATECALL_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_DELEGATECALL_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_DELEGATECALL_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_DELEGATECALL_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_DELEGATECALL_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_DELEGATECALL_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_STATICCALL_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_STATICCALL_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_STATICCALL_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_STATICCALL_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_STATICCALL_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_STATICCALL_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_STATICCALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_STATICCALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_STATICCALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_CALLCODE_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_CALLCODE_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_CALLCODE_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_CALLCODE_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_CALLCODE_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_CALLCODE_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_CALL_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_CALL_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_CALL_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_CALL_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_CALL_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_CALL_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_DELEGATECALL_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_DELEGATECALL_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_DELEGATECALL_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_DELEGATECALL_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_DELEGATECALL_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_DELEGATECALL_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_STATICCALL_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_STATICCALL_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_STATICCALL_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_STATICCALL_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_STATICCALL_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_STATICCALL_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_STATICCALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_STATICCALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_STATICCALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_DELEGATECALL_noop-call_3_CALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_DELEGATECALL_noop-call_3_CALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_DELEGATECALL_noop-call_3_CALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_DELEGATECALL_noop-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_DELEGATECALL_noop-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_DELEGATECALL_noop-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_DELEGATECALL_noop-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_DELEGATECALL_noop-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_DELEGATECALL_noop-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_DELEGATECALL_noop-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_DELEGATECALL_noop-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_DELEGATECALL_noop-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_DELEGATECALL_noop-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_DELEGATECALL_noop-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_DELEGATECALL_noop-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_DELEGATECALL_noop-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_DELEGATECALL_noop-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_DELEGATECALL_noop-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_DELEGATECALL_noop-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_DELEGATECALL_noop-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_DELEGATECALL_noop-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_DELEGATECALL_noop-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_DELEGATECALL_noop-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_DELEGATECALL_noop-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_DELEGATECALL_revert-call_3_CALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_DELEGATECALL_revert-call_3_CALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_DELEGATECALL_revert-call_3_CALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_DELEGATECALL_revert-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_DELEGATECALL_revert-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_DELEGATECALL_revert-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_DELEGATECALL_revert-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_DELEGATECALL_revert-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_DELEGATECALL_revert-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_DELEGATECALL_revert-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_DELEGATECALL_revert-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_DELEGATECALL_revert-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_DELEGATECALL_revert-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_DELEGATECALL_revert-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_DELEGATECALL_revert-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_DELEGATECALL_revert-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_DELEGATECALL_revert-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_DELEGATECALL_revert-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_DELEGATECALL_revert-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_DELEGATECALL_revert-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_DELEGATECALL_revert-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_DELEGATECALL_revert-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_DELEGATECALL_revert-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_DELEGATECALL_revert-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_DELEGATECALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_DELEGATECALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_DELEGATECALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_DELEGATECALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_DELEGATECALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_DELEGATECALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_DELEGATECALL_sstore-toggle-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_DELEGATECALL_sstore-toggle-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_DELEGATECALL_sstore-toggle-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_DELEGATECALL_sstore-toggle-call_3_STATICCALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_DELEGATECALL_sstore-toggle-call_3_STATICCALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_DELEGATECALL_sstore-toggle-call_3_STATICCALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_DELEGATECALL_sstore-toggle-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_DELEGATECALL_sstore-toggle-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_DELEGATECALL_sstore-toggle-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_DELEGATECALL_sstore-toggle-call_3_STATICCALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_DELEGATECALL_sstore-toggle-call_3_STATICCALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_DELEGATECALL_sstore-toggle-call_3_STATICCALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_STATICCALL_noop-call_3_CALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_STATICCALL_noop-call_3_CALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_STATICCALL_noop-call_3_CALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_STATICCALL_noop-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_STATICCALL_noop-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_STATICCALL_noop-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_STATICCALL_noop-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_STATICCALL_noop-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_STATICCALL_noop-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_STATICCALL_noop-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_STATICCALL_noop-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_STATICCALL_noop-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_STATICCALL_noop-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_STATICCALL_noop-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_STATICCALL_noop-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_STATICCALL_noop-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_STATICCALL_noop-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_STATICCALL_noop-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_STATICCALL_noop-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_STATICCALL_noop-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_STATICCALL_noop-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_STATICCALL_noop-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_STATICCALL_noop-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_STATICCALL_noop-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_STATICCALL_revert-call_3_CALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_STATICCALL_revert-call_3_CALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_STATICCALL_revert-call_3_CALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_STATICCALL_revert-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_STATICCALL_revert-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_STATICCALL_revert-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_STATICCALL_revert-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_STATICCALL_revert-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_STATICCALL_revert-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_STATICCALL_revert-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_STATICCALL_revert-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_STATICCALL_revert-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_STATICCALL_revert-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_STATICCALL_revert-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_STATICCALL_revert-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_STATICCALL_revert-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_STATICCALL_revert-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_STATICCALL_revert-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_STATICCALL_revert-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_STATICCALL_revert-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_STATICCALL_revert-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_STATICCALL_revert-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_STATICCALL_revert-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_STATICCALL_revert-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_STATICCALL_sstore-toggle-call_3_CALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_STATICCALL_sstore-toggle-call_3_CALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_STATICCALL_sstore-toggle-call_3_CALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_STATICCALL_sstore-toggle-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_STATICCALL_sstore-toggle-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_STATICCALL_sstore-toggle-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_STATICCALL_sstore-toggle-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_STATICCALL_sstore-toggle-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_STATICCALL_sstore-toggle-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_STATICCALL_sstore-toggle-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_STATICCALL_sstore-toggle-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_STATICCALL_sstore-toggle-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_STATICCALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_STATICCALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_STATICCALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_STATICCALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_STATICCALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_STATICCALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_STATICCALL_sstore-toggle-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_STATICCALL_sstore-toggle-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_STATICCALL_sstore-toggle-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_STATICCALL_sstore-toggle-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_STATICCALL_sstore-toggle-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALL-call_2_STATICCALL_sstore-toggle-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_noop-call_3_CALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_noop-call_3_CALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_noop-call_3_CALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_noop-call_3_CALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_noop-call_3_CALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_noop-call_3_CALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_noop-call_3_CALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_noop-call_3_CALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_noop-call_3_CALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_noop-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_noop-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_noop-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_noop-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_noop-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_noop-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_noop-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_noop-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_noop-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_noop-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_noop-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_noop-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_noop-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_noop-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_noop-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_noop-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_noop-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_noop-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_noop-call_3_STATICCALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_noop-call_3_STATICCALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_noop-call_3_STATICCALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_noop-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_noop-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_noop-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_noop-call_3_STATICCALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_noop-call_3_STATICCALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_noop-call_3_STATICCALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_revert-call_3_CALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_revert-call_3_CALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_revert-call_3_CALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_revert-call_3_CALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_revert-call_3_CALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_revert-call_3_CALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_revert-call_3_CALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_revert-call_3_CALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_revert-call_3_CALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_revert-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_revert-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_revert-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_revert-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_revert-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_revert-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_revert-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_revert-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_revert-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_revert-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_revert-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_revert-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_revert-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_revert-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_revert-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_revert-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_revert-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_revert-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_revert-call_3_STATICCALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_revert-call_3_STATICCALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_revert-call_3_STATICCALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_revert-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_revert-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_revert-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_revert-call_3_STATICCALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_revert-call_3_STATICCALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_revert-call_3_STATICCALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_CALL-call_4_CALLCODE_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_CALL-call_4_CALLCODE_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_CALL-call_4_CALLCODE_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_CALL-call_4_CALLCODE_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_CALL-call_4_CALLCODE_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_CALL-call_4_CALLCODE_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_CALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_CALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_CALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_CALL-call_4_CALL_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_CALL-call_4_CALL_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_CALL-call_4_CALL_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_CALL-call_4_CALL_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_CALL-call_4_CALL_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_CALL-call_4_CALL_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_CALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_CALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_CALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_CALL-call_4_DELEGATECALL_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_CALL-call_4_DELEGATECALL_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_CALL-call_4_DELEGATECALL_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_CALL-call_4_DELEGATECALL_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_CALL-call_4_DELEGATECALL_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_CALL-call_4_DELEGATECALL_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_CALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_CALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_CALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_CALL-call_4_STATICCALL_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_CALL-call_4_STATICCALL_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_CALL-call_4_STATICCALL_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_CALL-call_4_STATICCALL_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_CALL-call_4_STATICCALL_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_CALL-call_4_STATICCALL_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_CALL-call_4_STATICCALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_CALL-call_4_STATICCALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_CALL-call_4_STATICCALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_CALLCODE-call_4_CALLCODE_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_CALLCODE-call_4_CALLCODE_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_CALLCODE-call_4_CALLCODE_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_CALLCODE-call_4_CALLCODE_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_CALLCODE-call_4_CALLCODE_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_CALLCODE-call_4_CALLCODE_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_CALLCODE-call_4_CALL_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_CALLCODE-call_4_CALL_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_CALLCODE-call_4_CALL_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_CALLCODE-call_4_CALL_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_CALLCODE-call_4_CALL_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_CALLCODE-call_4_CALL_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_CALLCODE-call_4_DELEGATECALL_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_CALLCODE-call_4_DELEGATECALL_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_CALLCODE-call_4_DELEGATECALL_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_CALLCODE-call_4_DELEGATECALL_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_CALLCODE-call_4_DELEGATECALL_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_CALLCODE-call_4_DELEGATECALL_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_CALLCODE-call_4_STATICCALL_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_CALLCODE-call_4_STATICCALL_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_CALLCODE-call_4_STATICCALL_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_CALLCODE-call_4_STATICCALL_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_CALLCODE-call_4_STATICCALL_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_CALLCODE-call_4_STATICCALL_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_CALLCODE-call_4_STATICCALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_CALLCODE-call_4_STATICCALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_CALLCODE-call_4_STATICCALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_DELEGATECALL-call_4_CALLCODE_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_DELEGATECALL-call_4_CALLCODE_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_DELEGATECALL-call_4_CALLCODE_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_DELEGATECALL-call_4_CALLCODE_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_DELEGATECALL-call_4_CALLCODE_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_DELEGATECALL-call_4_CALLCODE_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_DELEGATECALL-call_4_CALL_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_DELEGATECALL-call_4_CALL_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_DELEGATECALL-call_4_CALL_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_DELEGATECALL-call_4_CALL_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_DELEGATECALL-call_4_CALL_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_DELEGATECALL-call_4_CALL_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_DELEGATECALL-call_4_DELEGATECALL_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_DELEGATECALL-call_4_DELEGATECALL_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_DELEGATECALL-call_4_DELEGATECALL_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_DELEGATECALL-call_4_DELEGATECALL_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_DELEGATECALL-call_4_DELEGATECALL_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_DELEGATECALL-call_4_DELEGATECALL_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_DELEGATECALL-call_4_STATICCALL_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_DELEGATECALL-call_4_STATICCALL_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_DELEGATECALL-call_4_STATICCALL_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_DELEGATECALL-call_4_STATICCALL_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_DELEGATECALL-call_4_STATICCALL_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_DELEGATECALL-call_4_STATICCALL_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_DELEGATECALL-call_4_STATICCALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_DELEGATECALL-call_4_STATICCALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_DELEGATECALL-call_4_STATICCALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_STATICCALL-call_4_CALLCODE_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_STATICCALL-call_4_CALLCODE_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_STATICCALL-call_4_CALLCODE_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_STATICCALL-call_4_CALLCODE_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_STATICCALL-call_4_CALLCODE_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_STATICCALL-call_4_CALLCODE_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_STATICCALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_STATICCALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_STATICCALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_STATICCALL-call_4_CALL_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_STATICCALL-call_4_CALL_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_STATICCALL-call_4_CALL_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_STATICCALL-call_4_CALL_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_STATICCALL-call_4_CALL_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_STATICCALL-call_4_CALL_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_STATICCALL-call_4_DELEGATECALL_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_STATICCALL-call_4_DELEGATECALL_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_STATICCALL-call_4_DELEGATECALL_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_STATICCALL-call_4_DELEGATECALL_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_STATICCALL-call_4_DELEGATECALL_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_STATICCALL-call_4_DELEGATECALL_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_STATICCALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_STATICCALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_STATICCALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_STATICCALL-call_4_STATICCALL_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_STATICCALL-call_4_STATICCALL_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_STATICCALL-call_4_STATICCALL_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_STATICCALL-call_4_STATICCALL_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_STATICCALL-call_4_STATICCALL_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_STATICCALL-call_4_STATICCALL_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_STATICCALL-call_4_STATICCALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_STATICCALL-call_4_STATICCALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALLCODE_sstore-toggle-call_3_STATICCALL-call_4_STATICCALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_noop-call_3_CALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_noop-call_3_CALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_noop-call_3_CALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_noop-call_3_CALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_noop-call_3_CALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_noop-call_3_CALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_noop-call_3_CALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_noop-call_3_CALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_noop-call_3_CALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_noop-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_noop-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_noop-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_noop-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_noop-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_noop-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_noop-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_noop-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_noop-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_noop-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_noop-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_noop-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_noop-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_noop-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_noop-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_noop-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_noop-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_noop-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_noop-call_3_STATICCALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_noop-call_3_STATICCALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_noop-call_3_STATICCALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_noop-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_noop-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_noop-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_noop-call_3_STATICCALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_noop-call_3_STATICCALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_noop-call_3_STATICCALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_revert-call_3_CALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_revert-call_3_CALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_revert-call_3_CALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_revert-call_3_CALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_revert-call_3_CALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_revert-call_3_CALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_revert-call_3_CALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_revert-call_3_CALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_revert-call_3_CALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_revert-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_revert-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_revert-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_revert-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_revert-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_revert-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_revert-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_revert-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_revert-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_revert-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_revert-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_revert-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_revert-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_revert-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_revert-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_revert-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_revert-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_revert-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_revert-call_3_STATICCALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_revert-call_3_STATICCALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_revert-call_3_STATICCALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_revert-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_revert-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_revert-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_revert-call_3_STATICCALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_revert-call_3_STATICCALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_revert-call_3_STATICCALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_CALL-call_4_CALLCODE_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_CALL-call_4_CALLCODE_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_CALL-call_4_CALLCODE_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_CALL-call_4_CALLCODE_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_CALL-call_4_CALLCODE_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_CALL-call_4_CALLCODE_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_CALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_CALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_CALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_CALL-call_4_CALL_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_CALL-call_4_CALL_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_CALL-call_4_CALL_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_CALL-call_4_CALL_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_CALL-call_4_CALL_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_CALL-call_4_CALL_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_CALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_CALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_CALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_CALL-call_4_DELEGATECALL_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_CALL-call_4_DELEGATECALL_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_CALL-call_4_DELEGATECALL_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_CALL-call_4_DELEGATECALL_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_CALL-call_4_DELEGATECALL_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_CALL-call_4_DELEGATECALL_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_CALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_CALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_CALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_CALL-call_4_STATICCALL_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_CALL-call_4_STATICCALL_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_CALL-call_4_STATICCALL_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_CALL-call_4_STATICCALL_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_CALL-call_4_STATICCALL_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_CALL-call_4_STATICCALL_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_CALL-call_4_STATICCALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_CALL-call_4_STATICCALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_CALL-call_4_STATICCALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_CALLCODE_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_CALLCODE_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_CALLCODE_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_CALLCODE_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_CALLCODE_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_CALLCODE_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_CALL_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_CALL_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_CALL_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_CALL_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_CALL_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_CALL_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_DELEGATECALL_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_DELEGATECALL_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_DELEGATECALL_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_DELEGATECALL_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_DELEGATECALL_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_DELEGATECALL_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_STATICCALL_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_STATICCALL_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_STATICCALL_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_STATICCALL_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_STATICCALL_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_STATICCALL_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_STATICCALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_STATICCALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_STATICCALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALLCODE_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALLCODE_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALLCODE_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALLCODE_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALLCODE_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALLCODE_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALL_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALL_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALL_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALL_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALL_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALL_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_DELEGATECALL_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_DELEGATECALL_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_DELEGATECALL_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_DELEGATECALL_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_DELEGATECALL_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_DELEGATECALL_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_STATICCALL_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_STATICCALL_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_STATICCALL_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_STATICCALL_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_STATICCALL_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_STATICCALL_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_STATICCALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_STATICCALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_STATICCALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_CALLCODE_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_CALLCODE_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_CALLCODE_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_CALLCODE_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_CALLCODE_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_CALLCODE_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_CALL_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_CALL_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_CALL_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_CALL_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_CALL_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_CALL_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_DELEGATECALL_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_DELEGATECALL_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_DELEGATECALL_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_DELEGATECALL_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_DELEGATECALL_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_DELEGATECALL_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_STATICCALL_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_STATICCALL_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_STATICCALL_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_STATICCALL_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_STATICCALL_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_STATICCALL_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_STATICCALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_STATICCALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_STATICCALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_noop-call_3_CALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_noop-call_3_CALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_noop-call_3_CALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_noop-call_3_CALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_noop-call_3_CALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_noop-call_3_CALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_noop-call_3_CALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_noop-call_3_CALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_noop-call_3_CALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_noop-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_noop-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_noop-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_noop-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_noop-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_noop-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_noop-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_noop-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_noop-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_noop-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_noop-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_noop-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_noop-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_noop-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_noop-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_noop-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_noop-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_noop-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_noop-call_3_STATICCALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_noop-call_3_STATICCALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_noop-call_3_STATICCALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_noop-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_noop-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_noop-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_noop-call_3_STATICCALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_noop-call_3_STATICCALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_noop-call_3_STATICCALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_revert-call_3_CALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_revert-call_3_CALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_revert-call_3_CALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_revert-call_3_CALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_revert-call_3_CALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_revert-call_3_CALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_revert-call_3_CALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_revert-call_3_CALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_revert-call_3_CALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_revert-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_revert-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_revert-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_revert-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_revert-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_revert-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_revert-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_revert-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_revert-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_revert-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_revert-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_revert-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_revert-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_revert-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_revert-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_revert-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_revert-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_revert-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_revert-call_3_STATICCALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_revert-call_3_STATICCALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_revert-call_3_STATICCALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_revert-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_revert-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_revert-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_revert-call_3_STATICCALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_revert-call_3_STATICCALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_revert-call_3_STATICCALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_CALL-call_4_CALLCODE_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_CALL-call_4_CALLCODE_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_CALL-call_4_CALLCODE_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_CALL-call_4_CALLCODE_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_CALL-call_4_CALLCODE_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_CALL-call_4_CALLCODE_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_CALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_CALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_CALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_CALL-call_4_CALL_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_CALL-call_4_CALL_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_CALL-call_4_CALL_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_CALL-call_4_CALL_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_CALL-call_4_CALL_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_CALL-call_4_CALL_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_CALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_CALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_CALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_CALL-call_4_DELEGATECALL_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_CALL-call_4_DELEGATECALL_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_CALL-call_4_DELEGATECALL_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_CALL-call_4_DELEGATECALL_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_CALL-call_4_DELEGATECALL_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_CALL-call_4_DELEGATECALL_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_CALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_CALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_CALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_CALL-call_4_STATICCALL_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_CALL-call_4_STATICCALL_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_CALL-call_4_STATICCALL_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_CALL-call_4_STATICCALL_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_CALL-call_4_STATICCALL_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_CALL-call_4_STATICCALL_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_CALL-call_4_STATICCALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_CALL-call_4_STATICCALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_CALL-call_4_STATICCALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_CALLCODE-call_4_CALLCODE_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_CALLCODE-call_4_CALLCODE_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_CALLCODE-call_4_CALLCODE_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_CALLCODE-call_4_CALLCODE_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_CALLCODE-call_4_CALLCODE_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_CALLCODE-call_4_CALLCODE_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_CALLCODE-call_4_CALL_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_CALLCODE-call_4_CALL_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_CALLCODE-call_4_CALL_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_CALLCODE-call_4_CALL_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_CALLCODE-call_4_CALL_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_CALLCODE-call_4_CALL_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_CALLCODE-call_4_DELEGATECALL_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_CALLCODE-call_4_DELEGATECALL_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_CALLCODE-call_4_DELEGATECALL_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_CALLCODE-call_4_DELEGATECALL_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_CALLCODE-call_4_DELEGATECALL_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_CALLCODE-call_4_DELEGATECALL_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_CALLCODE-call_4_STATICCALL_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_CALLCODE-call_4_STATICCALL_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_CALLCODE-call_4_STATICCALL_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_CALLCODE-call_4_STATICCALL_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_CALLCODE-call_4_STATICCALL_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_CALLCODE-call_4_STATICCALL_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_CALLCODE-call_4_STATICCALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_CALLCODE-call_4_STATICCALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_CALLCODE-call_4_STATICCALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALLCODE_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALLCODE_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALLCODE_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALLCODE_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALLCODE_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALLCODE_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALL_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALL_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALL_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALL_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALL_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALL_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_DELEGATECALL-call_4_DELEGATECALL_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_DELEGATECALL-call_4_DELEGATECALL_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_DELEGATECALL-call_4_DELEGATECALL_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_DELEGATECALL-call_4_DELEGATECALL_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_DELEGATECALL-call_4_DELEGATECALL_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_DELEGATECALL-call_4_DELEGATECALL_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_DELEGATECALL-call_4_STATICCALL_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_DELEGATECALL-call_4_STATICCALL_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_DELEGATECALL-call_4_STATICCALL_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_DELEGATECALL-call_4_STATICCALL_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_DELEGATECALL-call_4_STATICCALL_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_DELEGATECALL-call_4_STATICCALL_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_DELEGATECALL-call_4_STATICCALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_DELEGATECALL-call_4_STATICCALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_DELEGATECALL-call_4_STATICCALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_STATICCALL-call_4_CALLCODE_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_STATICCALL-call_4_CALLCODE_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_STATICCALL-call_4_CALLCODE_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_STATICCALL-call_4_CALLCODE_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_STATICCALL-call_4_CALLCODE_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_STATICCALL-call_4_CALLCODE_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_STATICCALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_STATICCALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_STATICCALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_STATICCALL-call_4_CALL_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_STATICCALL-call_4_CALL_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_STATICCALL-call_4_CALL_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_STATICCALL-call_4_CALL_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_STATICCALL-call_4_CALL_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_STATICCALL-call_4_CALL_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_STATICCALL-call_4_DELEGATECALL_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_STATICCALL-call_4_DELEGATECALL_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_STATICCALL-call_4_DELEGATECALL_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_STATICCALL-call_4_DELEGATECALL_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_STATICCALL-call_4_DELEGATECALL_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_STATICCALL-call_4_DELEGATECALL_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_STATICCALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_STATICCALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_STATICCALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_STATICCALL-call_4_STATICCALL_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_STATICCALL-call_4_STATICCALL_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_STATICCALL-call_4_STATICCALL_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_STATICCALL-call_4_STATICCALL_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_STATICCALL-call_4_STATICCALL_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_STATICCALL-call_4_STATICCALL_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_STATICCALL-call_4_STATICCALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_STATICCALL-call_4_STATICCALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_DELEGATECALL_sstore-toggle-call_3_STATICCALL-call_4_STATICCALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_noop-call_3_CALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_noop-call_3_CALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_noop-call_3_CALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_noop-call_3_CALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_noop-call_3_CALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_noop-call_3_CALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_noop-call_3_CALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_noop-call_3_CALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_noop-call_3_CALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_noop-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_noop-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_noop-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_noop-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_noop-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_noop-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_noop-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_noop-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_noop-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_noop-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_noop-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_noop-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_noop-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_noop-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_noop-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_noop-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_noop-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_noop-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_noop-call_3_STATICCALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_noop-call_3_STATICCALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_noop-call_3_STATICCALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_noop-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_noop-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_noop-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_noop-call_3_STATICCALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_noop-call_3_STATICCALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_noop-call_3_STATICCALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_revert-call_3_CALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_revert-call_3_CALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_revert-call_3_CALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_revert-call_3_CALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_revert-call_3_CALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_revert-call_3_CALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_revert-call_3_CALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_revert-call_3_CALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_revert-call_3_CALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_revert-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_revert-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_revert-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_revert-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_revert-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_revert-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_revert-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_revert-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_revert-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_revert-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_revert-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_revert-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_revert-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_revert-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_revert-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_revert-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_revert-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_revert-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_revert-call_3_STATICCALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_revert-call_3_STATICCALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_revert-call_3_STATICCALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_revert-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_revert-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_revert-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_revert-call_3_STATICCALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_revert-call_3_STATICCALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_revert-call_3_STATICCALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_sstore-toggle-call_3_CALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_sstore-toggle-call_3_CALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_sstore-toggle-call_3_CALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_sstore-toggle-call_3_CALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_sstore-toggle-call_3_CALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_sstore-toggle-call_3_CALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_sstore-toggle-call_3_CALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_sstore-toggle-call_3_CALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_sstore-toggle-call_3_CALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_sstore-toggle-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_sstore-toggle-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_sstore-toggle-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_sstore-toggle-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_sstore-toggle-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_sstore-toggle-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_sstore-toggle-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_sstore-toggle-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_sstore-toggle-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_sstore-toggle-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_sstore-toggle-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_sstore-toggle-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_sstore-toggle-call_3_STATICCALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_sstore-toggle-call_3_STATICCALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_sstore-toggle-call_3_STATICCALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_sstore-toggle-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_sstore-toggle-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_sstore-toggle-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_sstore-toggle-call_3_STATICCALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_sstore-toggle-call_3_STATICCALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_CALLCODE-call_2_STATICCALL_sstore-toggle-call_3_STATICCALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_noop-call_3_CALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_noop-call_3_CALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_noop-call_3_CALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_noop-call_3_CALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_noop-call_3_CALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_noop-call_3_CALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_noop-call_3_CALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_noop-call_3_CALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_noop-call_3_CALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_noop-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_noop-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_noop-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_noop-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_noop-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_noop-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_noop-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_noop-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_noop-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_noop-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_noop-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_noop-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_noop-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_noop-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_noop-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_noop-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_noop-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_noop-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_noop-call_3_STATICCALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_noop-call_3_STATICCALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_noop-call_3_STATICCALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_noop-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_noop-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_noop-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_noop-call_3_STATICCALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_noop-call_3_STATICCALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_noop-call_3_STATICCALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_revert-call_3_CALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_revert-call_3_CALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_revert-call_3_CALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_revert-call_3_CALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_revert-call_3_CALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_revert-call_3_CALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_revert-call_3_CALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_revert-call_3_CALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_revert-call_3_CALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_revert-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_revert-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_revert-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_revert-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_revert-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_revert-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_revert-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_revert-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_revert-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_revert-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_revert-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_revert-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_revert-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_revert-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_revert-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_revert-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_revert-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_revert-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_revert-call_3_STATICCALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_revert-call_3_STATICCALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_revert-call_3_STATICCALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_revert-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_revert-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_revert-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_revert-call_3_STATICCALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_revert-call_3_STATICCALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_revert-call_3_STATICCALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_CALL-call_4_CALLCODE_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_CALL-call_4_CALLCODE_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_CALL-call_4_CALLCODE_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_CALL-call_4_CALLCODE_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_CALL-call_4_CALLCODE_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_CALL-call_4_CALLCODE_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_CALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_CALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_CALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_CALL-call_4_CALL_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_CALL-call_4_CALL_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_CALL-call_4_CALL_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_CALL-call_4_CALL_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_CALL-call_4_CALL_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_CALL-call_4_CALL_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_CALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_CALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_CALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_CALL-call_4_DELEGATECALL_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_CALL-call_4_DELEGATECALL_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_CALL-call_4_DELEGATECALL_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_CALL-call_4_DELEGATECALL_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_CALL-call_4_DELEGATECALL_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_CALL-call_4_DELEGATECALL_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_CALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_CALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_CALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_CALL-call_4_STATICCALL_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_CALL-call_4_STATICCALL_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_CALL-call_4_STATICCALL_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_CALL-call_4_STATICCALL_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_CALL-call_4_STATICCALL_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_CALL-call_4_STATICCALL_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_CALL-call_4_STATICCALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_CALL-call_4_STATICCALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_CALL-call_4_STATICCALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_CALLCODE-call_4_CALLCODE_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_CALLCODE-call_4_CALLCODE_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_CALLCODE-call_4_CALLCODE_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_CALLCODE-call_4_CALLCODE_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_CALLCODE-call_4_CALLCODE_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_CALLCODE-call_4_CALLCODE_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_CALLCODE-call_4_CALL_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_CALLCODE-call_4_CALL_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_CALLCODE-call_4_CALL_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_CALLCODE-call_4_CALL_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_CALLCODE-call_4_CALL_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_CALLCODE-call_4_CALL_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_CALLCODE-call_4_DELEGATECALL_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_CALLCODE-call_4_DELEGATECALL_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_CALLCODE-call_4_DELEGATECALL_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_CALLCODE-call_4_DELEGATECALL_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_CALLCODE-call_4_DELEGATECALL_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_CALLCODE-call_4_DELEGATECALL_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_CALLCODE-call_4_STATICCALL_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_CALLCODE-call_4_STATICCALL_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_CALLCODE-call_4_STATICCALL_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_CALLCODE-call_4_STATICCALL_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_CALLCODE-call_4_STATICCALL_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_CALLCODE-call_4_STATICCALL_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_CALLCODE-call_4_STATICCALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_CALLCODE-call_4_STATICCALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_CALLCODE-call_4_STATICCALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_DELEGATECALL-call_4_CALLCODE_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_DELEGATECALL-call_4_CALLCODE_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_DELEGATECALL-call_4_CALLCODE_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_DELEGATECALL-call_4_CALLCODE_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_DELEGATECALL-call_4_CALLCODE_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_DELEGATECALL-call_4_CALLCODE_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_DELEGATECALL-call_4_CALL_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_DELEGATECALL-call_4_CALL_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_DELEGATECALL-call_4_CALL_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_DELEGATECALL-call_4_CALL_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_DELEGATECALL-call_4_CALL_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_DELEGATECALL-call_4_CALL_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_DELEGATECALL-call_4_DELEGATECALL_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_DELEGATECALL-call_4_DELEGATECALL_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_DELEGATECALL-call_4_DELEGATECALL_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_DELEGATECALL-call_4_DELEGATECALL_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_DELEGATECALL-call_4_DELEGATECALL_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_DELEGATECALL-call_4_DELEGATECALL_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_DELEGATECALL-call_4_STATICCALL_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_DELEGATECALL-call_4_STATICCALL_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_DELEGATECALL-call_4_STATICCALL_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_DELEGATECALL-call_4_STATICCALL_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_DELEGATECALL-call_4_STATICCALL_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_DELEGATECALL-call_4_STATICCALL_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_DELEGATECALL-call_4_STATICCALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_DELEGATECALL-call_4_STATICCALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_DELEGATECALL-call_4_STATICCALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_STATICCALL-call_4_CALLCODE_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_STATICCALL-call_4_CALLCODE_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_STATICCALL-call_4_CALLCODE_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_STATICCALL-call_4_CALLCODE_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_STATICCALL-call_4_CALLCODE_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_STATICCALL-call_4_CALLCODE_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_STATICCALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_STATICCALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_STATICCALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_STATICCALL-call_4_CALL_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_STATICCALL-call_4_CALL_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_STATICCALL-call_4_CALL_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_STATICCALL-call_4_CALL_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_STATICCALL-call_4_CALL_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_STATICCALL-call_4_CALL_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_STATICCALL-call_4_DELEGATECALL_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_STATICCALL-call_4_DELEGATECALL_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_STATICCALL-call_4_DELEGATECALL_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_STATICCALL-call_4_DELEGATECALL_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_STATICCALL-call_4_DELEGATECALL_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_STATICCALL-call_4_DELEGATECALL_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_STATICCALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_STATICCALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_STATICCALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_STATICCALL-call_4_STATICCALL_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_STATICCALL-call_4_STATICCALL_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_STATICCALL-call_4_STATICCALL_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_STATICCALL-call_4_STATICCALL_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_STATICCALL-call_4_STATICCALL_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_STATICCALL-call_4_STATICCALL_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_STATICCALL-call_4_STATICCALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_STATICCALL-call_4_STATICCALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALLCODE_sstore-toggle-call_3_STATICCALL-call_4_STATICCALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_noop-call_3_CALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_noop-call_3_CALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_noop-call_3_CALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_noop-call_3_CALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_noop-call_3_CALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_noop-call_3_CALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_noop-call_3_CALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_noop-call_3_CALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_noop-call_3_CALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_noop-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_noop-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_noop-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_noop-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_noop-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_noop-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_noop-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_noop-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_noop-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_noop-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_noop-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_noop-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_noop-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_noop-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_noop-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_noop-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_noop-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_noop-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_noop-call_3_STATICCALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_noop-call_3_STATICCALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_noop-call_3_STATICCALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_noop-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_noop-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_noop-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_noop-call_3_STATICCALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_noop-call_3_STATICCALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_noop-call_3_STATICCALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_revert-call_3_CALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_revert-call_3_CALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_revert-call_3_CALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_revert-call_3_CALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_revert-call_3_CALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_revert-call_3_CALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_revert-call_3_CALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_revert-call_3_CALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_revert-call_3_CALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_revert-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_revert-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_revert-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_revert-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_revert-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_revert-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_revert-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_revert-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_revert-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_revert-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_revert-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_revert-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_revert-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_revert-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_revert-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_revert-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_revert-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_revert-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_revert-call_3_STATICCALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_revert-call_3_STATICCALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_revert-call_3_STATICCALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_revert-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_revert-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_revert-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_revert-call_3_STATICCALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_revert-call_3_STATICCALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_revert-call_3_STATICCALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_CALL-call_4_CALLCODE_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_CALL-call_4_CALLCODE_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_CALL-call_4_CALLCODE_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_CALL-call_4_CALLCODE_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_CALL-call_4_CALLCODE_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_CALL-call_4_CALLCODE_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_CALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_CALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_CALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_CALL-call_4_CALL_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_CALL-call_4_CALL_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_CALL-call_4_CALL_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_CALL-call_4_CALL_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_CALL-call_4_CALL_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_CALL-call_4_CALL_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_CALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_CALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_CALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_CALL-call_4_DELEGATECALL_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_CALL-call_4_DELEGATECALL_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_CALL-call_4_DELEGATECALL_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_CALL-call_4_DELEGATECALL_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_CALL-call_4_DELEGATECALL_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_CALL-call_4_DELEGATECALL_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_CALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_CALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_CALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_CALL-call_4_STATICCALL_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_CALL-call_4_STATICCALL_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_CALL-call_4_STATICCALL_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_CALL-call_4_STATICCALL_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_CALL-call_4_STATICCALL_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_CALL-call_4_STATICCALL_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_CALL-call_4_STATICCALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_CALL-call_4_STATICCALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_CALL-call_4_STATICCALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_CALLCODE_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_CALLCODE_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_CALLCODE_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_CALLCODE_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_CALLCODE_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_CALLCODE_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_CALL_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_CALL_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_CALL_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_CALL_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_CALL_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_CALL_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_DELEGATECALL_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_DELEGATECALL_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_DELEGATECALL_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_DELEGATECALL_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_DELEGATECALL_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_DELEGATECALL_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_STATICCALL_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_STATICCALL_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_STATICCALL_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_STATICCALL_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_STATICCALL_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_STATICCALL_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_STATICCALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_STATICCALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_CALLCODE-call_4_STATICCALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALLCODE_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALLCODE_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALLCODE_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALLCODE_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALLCODE_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALLCODE_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALL_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALL_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALL_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALL_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALL_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALL_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_DELEGATECALL_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_DELEGATECALL_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_DELEGATECALL_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_DELEGATECALL_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_DELEGATECALL_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_DELEGATECALL_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_STATICCALL_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_STATICCALL_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_STATICCALL_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_STATICCALL_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_STATICCALL_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_STATICCALL_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_STATICCALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_STATICCALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_DELEGATECALL-call_4_STATICCALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_CALLCODE_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_CALLCODE_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_CALLCODE_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_CALLCODE_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_CALLCODE_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_CALLCODE_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_CALL_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_CALL_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_CALL_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_CALL_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_CALL_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_CALL_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_DELEGATECALL_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_DELEGATECALL_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_DELEGATECALL_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_DELEGATECALL_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_DELEGATECALL_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_DELEGATECALL_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_STATICCALL_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_STATICCALL_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_STATICCALL_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_STATICCALL_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_STATICCALL_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_STATICCALL_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_STATICCALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_STATICCALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_CALL_sstore-toggle-call_3_STATICCALL-call_4_STATICCALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_noop-call_3_CALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_noop-call_3_CALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_noop-call_3_CALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_noop-call_3_CALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_noop-call_3_CALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_noop-call_3_CALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_noop-call_3_CALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_noop-call_3_CALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_noop-call_3_CALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_noop-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_noop-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_noop-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_noop-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_noop-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_noop-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_noop-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_noop-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_noop-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_noop-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_noop-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_noop-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_noop-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_noop-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_noop-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_noop-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_noop-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_noop-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_noop-call_3_STATICCALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_noop-call_3_STATICCALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_noop-call_3_STATICCALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_noop-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_noop-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_noop-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_noop-call_3_STATICCALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_noop-call_3_STATICCALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_noop-call_3_STATICCALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_revert-call_3_CALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_revert-call_3_CALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_revert-call_3_CALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_revert-call_3_CALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_revert-call_3_CALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_revert-call_3_CALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_revert-call_3_CALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_revert-call_3_CALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_revert-call_3_CALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_revert-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_revert-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_revert-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_revert-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_revert-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_revert-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_revert-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_revert-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_revert-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_revert-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_revert-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_revert-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_revert-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_revert-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_revert-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_revert-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_revert-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_revert-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_revert-call_3_STATICCALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_revert-call_3_STATICCALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_revert-call_3_STATICCALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_revert-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_revert-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_revert-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_revert-call_3_STATICCALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_revert-call_3_STATICCALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_revert-call_3_STATICCALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALL-call_4_CALLCODE_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALL-call_4_CALLCODE_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALL-call_4_CALLCODE_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALL-call_4_CALLCODE_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALL-call_4_CALLCODE_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALL-call_4_CALLCODE_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALL-call_4_CALL_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALL-call_4_CALL_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALL-call_4_CALL_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALL-call_4_CALL_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALL-call_4_CALL_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALL-call_4_CALL_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALL-call_4_DELEGATECALL_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALL-call_4_DELEGATECALL_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALL-call_4_DELEGATECALL_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALL-call_4_DELEGATECALL_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALL-call_4_DELEGATECALL_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALL-call_4_DELEGATECALL_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALL-call_4_STATICCALL_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALL-call_4_STATICCALL_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALL-call_4_STATICCALL_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALL-call_4_STATICCALL_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALL-call_4_STATICCALL_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALL-call_4_STATICCALL_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALL-call_4_STATICCALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALL-call_4_STATICCALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALL-call_4_STATICCALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALLCODE-call_4_CALLCODE_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALLCODE-call_4_CALLCODE_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALLCODE-call_4_CALLCODE_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALLCODE-call_4_CALLCODE_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALLCODE-call_4_CALLCODE_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALLCODE-call_4_CALLCODE_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALLCODE-call_4_CALL_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALLCODE-call_4_CALL_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALLCODE-call_4_CALL_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALLCODE-call_4_CALL_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALLCODE-call_4_CALL_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALLCODE-call_4_CALL_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALLCODE-call_4_DELEGATECALL_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALLCODE-call_4_DELEGATECALL_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALLCODE-call_4_DELEGATECALL_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALLCODE-call_4_DELEGATECALL_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALLCODE-call_4_DELEGATECALL_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALLCODE-call_4_DELEGATECALL_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALLCODE-call_4_STATICCALL_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALLCODE-call_4_STATICCALL_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALLCODE-call_4_STATICCALL_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALLCODE-call_4_STATICCALL_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALLCODE-call_4_STATICCALL_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALLCODE-call_4_STATICCALL_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALLCODE-call_4_STATICCALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALLCODE-call_4_STATICCALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_CALLCODE-call_4_STATICCALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALLCODE_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALLCODE_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALLCODE_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALLCODE_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALLCODE_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALLCODE_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALL_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALL_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALL_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALL_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALL_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALL_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_DELEGATECALL-call_4_DELEGATECALL_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_DELEGATECALL-call_4_DELEGATECALL_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_DELEGATECALL-call_4_DELEGATECALL_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_DELEGATECALL-call_4_DELEGATECALL_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_DELEGATECALL-call_4_DELEGATECALL_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_DELEGATECALL-call_4_DELEGATECALL_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_DELEGATECALL-call_4_STATICCALL_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_DELEGATECALL-call_4_STATICCALL_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_DELEGATECALL-call_4_STATICCALL_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_DELEGATECALL-call_4_STATICCALL_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_DELEGATECALL-call_4_STATICCALL_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_DELEGATECALL-call_4_STATICCALL_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_DELEGATECALL-call_4_STATICCALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_DELEGATECALL-call_4_STATICCALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_DELEGATECALL-call_4_STATICCALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_STATICCALL-call_4_CALLCODE_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_STATICCALL-call_4_CALLCODE_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_STATICCALL-call_4_CALLCODE_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_STATICCALL-call_4_CALLCODE_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_STATICCALL-call_4_CALLCODE_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_STATICCALL-call_4_CALLCODE_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_STATICCALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_STATICCALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_STATICCALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_STATICCALL-call_4_CALL_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_STATICCALL-call_4_CALL_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_STATICCALL-call_4_CALL_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_STATICCALL-call_4_CALL_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_STATICCALL-call_4_CALL_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_STATICCALL-call_4_CALL_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_STATICCALL-call_4_DELEGATECALL_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_STATICCALL-call_4_DELEGATECALL_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_STATICCALL-call_4_DELEGATECALL_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_STATICCALL-call_4_DELEGATECALL_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_STATICCALL-call_4_DELEGATECALL_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_STATICCALL-call_4_DELEGATECALL_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_STATICCALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_STATICCALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_STATICCALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_STATICCALL-call_4_STATICCALL_noop-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_STATICCALL-call_4_STATICCALL_noop-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_STATICCALL-call_4_STATICCALL_noop-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_STATICCALL-call_4_STATICCALL_revert-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_STATICCALL-call_4_STATICCALL_revert-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_STATICCALL-call_4_STATICCALL_revert-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_STATICCALL-call_4_STATICCALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_STATICCALL-call_4_STATICCALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_DELEGATECALL_sstore-toggle-call_3_STATICCALL-call_4_STATICCALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_noop-call_3_CALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_noop-call_3_CALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_noop-call_3_CALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_noop-call_3_CALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_noop-call_3_CALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_noop-call_3_CALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_noop-call_3_CALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_noop-call_3_CALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_noop-call_3_CALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_noop-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_noop-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_noop-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_noop-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_noop-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_noop-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_noop-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_noop-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_noop-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_noop-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_noop-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_noop-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_noop-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_noop-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_noop-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_noop-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_noop-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_noop-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_noop-call_3_STATICCALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_noop-call_3_STATICCALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_noop-call_3_STATICCALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_noop-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_noop-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_noop-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_noop-call_3_STATICCALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_noop-call_3_STATICCALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_noop-call_3_STATICCALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_revert-call_3_CALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_revert-call_3_CALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_revert-call_3_CALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_revert-call_3_CALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_revert-call_3_CALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_revert-call_3_CALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_revert-call_3_CALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_revert-call_3_CALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_revert-call_3_CALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_revert-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_revert-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_revert-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_revert-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_revert-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_revert-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_revert-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_revert-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_revert-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_revert-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_revert-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_revert-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_revert-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_revert-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_revert-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_revert-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_revert-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_revert-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_revert-call_3_STATICCALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_revert-call_3_STATICCALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_revert-call_3_STATICCALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_revert-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_revert-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_revert-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_revert-call_3_STATICCALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_revert-call_3_STATICCALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_revert-call_3_STATICCALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_sstore-toggle-call_3_CALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_sstore-toggle-call_3_CALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_sstore-toggle-call_3_CALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_sstore-toggle-call_3_CALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_sstore-toggle-call_3_CALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_sstore-toggle-call_3_CALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_sstore-toggle-call_3_CALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_sstore-toggle-call_3_CALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_sstore-toggle-call_3_CALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_sstore-toggle-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_sstore-toggle-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_sstore-toggle-call_3_CALLCODE-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_sstore-toggle-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_sstore-toggle-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_sstore-toggle-call_3_CALLCODE-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_sstore-toggle-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_sstore-toggle-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_sstore-toggle-call_3_CALLCODE-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_sstore-toggle-call_3_DELEGATECALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_sstore-toggle-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_sstore-toggle-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_sstore-toggle-call_3_DELEGATECALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_sstore-toggle-call_3_STATICCALL-call_4_CALLCODE_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_sstore-toggle-call_3_STATICCALL-call_4_CALLCODE_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_sstore-toggle-call_3_STATICCALL-call_4_CALLCODE_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_sstore-toggle-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_sstore-toggle-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_sstore-toggle-call_3_STATICCALL-call_4_CALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_sstore-toggle-call_3_STATICCALL-call_4_DELEGATECALL_sstore-toggle-initial0] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_sstore-toggle-call_3_STATICCALL-call_4_DELEGATECALL_sstore-toggle-initial1] -stTimeConsuming/test_sstore_combinations_initial.py::test_sstore_combinations_initial[fork_Amsterdam-call_1_DELEGATECALL-call_2_STATICCALL_sstore-toggle-call_3_STATICCALL-call_4_DELEGATECALL_sstore-toggle-initial2] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d0] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d100] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d101] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d102] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d103] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d105] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d106] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d108] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d109] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d10] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d111] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d112] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d113] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d114] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d115] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d117] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d118] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d120] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d121] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d123] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d124] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d125] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d126] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d127] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d129] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d12] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d130] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d132] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d133] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d135] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d136] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d137] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d138] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d139] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d13] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d141] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d142] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d144] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d145] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d147] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d148] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d149] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d150] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d151] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d153] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d154] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d156] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d157] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d159] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d15] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d160] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d161] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d162] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d163] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d165] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d166] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d168] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d169] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d16] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d171] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d172] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d173] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d174] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d175] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d177] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d178] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d17] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d180] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d181] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d183] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d184] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d185] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d186] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d187] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d189] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d18] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d190] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d192] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d193] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d195] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d196] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d197] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d198] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d19] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d1] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d21] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d22] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d247] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d249] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d24] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d250] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d252] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d253] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d255] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d256] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d257] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d258] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d259] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d25] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d261] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d262] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d264] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d265] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d267] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d268] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d269] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d270] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d271] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d273] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d274] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d276] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d277] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d279] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d27] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d280] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d281] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d282] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d283] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d285] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d286] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d288] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d289] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d28] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d291] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d292] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d293] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d294] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d295] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d297] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d298] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d29] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d300] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d301] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d303] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d304] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d305] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d306] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d307] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d309] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d30] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d310] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d312] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d313] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d315] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d316] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d317] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d318] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d319] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d31] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d321] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d322] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d324] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d325] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d327] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d328] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d329] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d330] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d331] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d333] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d334] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d336] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d337] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d339] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d33] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d340] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d341] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d342] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d34] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d36] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d37] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d391] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d393] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d394] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d396] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d397] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d399] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d39] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d3] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d400] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d401] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d402] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d403] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d405] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d406] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d408] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d409] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d40] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d411] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d412] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d413] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d414] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d415] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d417] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d418] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d41] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d420] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d421] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d423] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d42] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d43] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d45] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d46] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d48] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d49] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d4] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d51] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d52] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d53] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d54] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d55] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d57] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d58] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d5] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d60] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d61] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d63] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d64] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d65] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d66] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d67] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d69] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d6] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d70] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d72] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d73] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d75] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d76] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d77] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d78] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d79] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d7] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d81] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d82] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d84] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d85] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d87] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d88] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d89] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d90] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d91] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d93] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d94] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d96] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d97] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d99] -stTimeConsuming/test_sstore_combinations_initial00_2_paris.py::test_sstore_combinations_initial00_2_paris[fork_Amsterdam-d9] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d0] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d100] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d102] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d103] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d105] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d106] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d107] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d108] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d109] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d10] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d111] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d112] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d114] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d115] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d117] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d118] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d119] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d11] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d120] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d121] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d123] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d124] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d126] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d127] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d129] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d12] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d130] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d131] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d132] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d133] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d135] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d136] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d138] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d139] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d13] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d141] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d142] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d143] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d144] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d145] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d147] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d148] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d150] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d151] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d153] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d154] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d155] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d156] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d157] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d159] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d15] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d160] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d162] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d163] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d165] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d166] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d167] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d168] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d169] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d16] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d171] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d172] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d174] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d175] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d177] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d178] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d179] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d180] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d181] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d183] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d184] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d186] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d187] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d189] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d18] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d190] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d191] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d192] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d19] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d1] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d21] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d22] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d23] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d241] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d243] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d244] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d246] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d247] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d249] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d24] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d250] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d251] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d252] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d253] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d255] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d256] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d258] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d259] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d25] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d261] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d262] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d263] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d264] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d265] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d267] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d268] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d270] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d271] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d273] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d274] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d275] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d276] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d277] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d279] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d27] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d280] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d282] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d283] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d285] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d286] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d287] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d288] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d289] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d28] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d291] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d292] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d294] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d295] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d297] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d298] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d299] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d300] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d301] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d303] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d304] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d306] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d307] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d309] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d30] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d310] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d311] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d312] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d313] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d315] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d316] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d318] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d319] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d31] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d321] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d322] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d323] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d324] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d325] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d327] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d328] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d330] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d331] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d333] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d334] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d335] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d336] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d33] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d34] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d35] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d36] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d37] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d385] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d387] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d388] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d390] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d391] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d393] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d394] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d395] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d396] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d397] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d399] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d39] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d3] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d400] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d402] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d403] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d405] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d406] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d407] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d408] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d409] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d40] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d411] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d412] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d414] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d415] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d417] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d418] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d419] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d420] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d421] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d423] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d424] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d42] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d43] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d45] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d46] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d47] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d48] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d4] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d6] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d7] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d97] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d99] -stTimeConsuming/test_sstore_combinations_initial00_paris.py::test_sstore_combinations_initial00_paris[fork_Amsterdam-d9] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d0] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d117] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d119] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d11] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d120] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d122] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d123] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d125] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d126] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d127] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d128] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d129] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d12] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d131] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d132] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d134] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d135] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d137] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d138] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d139] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d140] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d141] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d143] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d144] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d146] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d147] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d149] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d14] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d150] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d151] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d152] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d153] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d155] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d156] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d158] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d159] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d15] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d161] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d162] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d163] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d164] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d165] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d167] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d168] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d170] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d171] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d173] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d174] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d175] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d176] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d177] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d179] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d17] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d180] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d182] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d183] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d185] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d186] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d187] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d188] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d189] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d18] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d191] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d192] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d194] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d195] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d197] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d198] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d199] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d19] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d200] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d201] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d203] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d204] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d206] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d207] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d209] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d20] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d210] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d211] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d212] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d21] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d23] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d24] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d261] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d263] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d264] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d266] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d267] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d269] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d26] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d270] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d271] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d272] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d273] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d275] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d276] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d278] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d279] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d27] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d281] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d282] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d283] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d284] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d285] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d287] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d288] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d290] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d291] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d293] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d294] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d295] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d296] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d297] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d299] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d29] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d2] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d300] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d302] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d303] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d305] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d306] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d307] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d308] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d309] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d30] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d311] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d312] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d314] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d315] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d317] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d318] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d319] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d31] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d320] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d321] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d323] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d324] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d326] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d327] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d329] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d32] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d330] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d331] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d332] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d333] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d335] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d336] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d338] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d339] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d33] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d341] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d342] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d343] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d344] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d345] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d347] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d348] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d350] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d351] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d353] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d354] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d355] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d356] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d357] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d359] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d35] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d360] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d362] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d363] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d365] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d366] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d367] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d368] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d369] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d36] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d371] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d372] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d374] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d375] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d377] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d378] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d379] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d380] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d381] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d383] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d384] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d386] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d387] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d389] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d38] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d390] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d391] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d392] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d393] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d395] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d396] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d398] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d399] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d39] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d3] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d401] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d402] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d403] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d404] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d405] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d407] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d408] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d410] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d411] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d413] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d414] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d415] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d416] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d417] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d419] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d41] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d420] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d422] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d423] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d425] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d426] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d427] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d428] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d429] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d42] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d431] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d432] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d434] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d435] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d437] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d438] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d439] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d43] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d440] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d441] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d443] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d444] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d446] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d447] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d449] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d44] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d450] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d451] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d452] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d45] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d47] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d48] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d50] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d51] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d53] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d54] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d55] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d56] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d57] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d59] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d5] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d60] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d62] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d63] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d65] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d66] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d67] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d68] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d6] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d7] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d8] -stTimeConsuming/test_sstore_combinations_initial01_2_paris.py::test_sstore_combinations_initial01_2_paris[fork_Amsterdam-d9] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d0] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d111] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d113] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d114] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d116] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d117] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d119] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d11] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d120] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d121] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d122] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d123] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d125] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d126] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d128] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d129] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d12] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d131] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d132] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d133] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d134] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d135] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d137] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d138] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d13] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d140] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d141] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d143] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d144] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d145] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d146] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d147] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d149] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d14] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d150] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d152] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d153] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d155] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d156] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d157] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d158] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d159] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d15] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d161] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d162] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d164] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d165] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d167] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d168] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d169] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d170] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d171] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d173] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d174] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d176] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d177] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d179] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d17] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d180] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d181] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d182] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d183] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d185] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d186] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d188] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d189] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d18] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d191] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d192] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d193] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d194] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d195] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d197] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d198] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d1] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d200] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d201] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d203] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d204] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d205] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d206] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d207] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d209] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d20] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d210] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d212] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d213] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d215] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d216] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d217] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d218] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d219] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d21] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d221] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d222] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d224] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d225] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d227] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d228] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d229] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d230] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d231] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d233] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d234] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d236] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d237] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d239] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d23] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d240] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d241] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d242] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d243] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d245] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d246] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d248] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d249] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d24] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d251] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d252] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d253] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d254] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d255] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d257] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d258] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d25] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d260] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d261] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d263] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d264] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d265] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d266] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d267] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d269] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d26] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d270] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d272] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d273] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d275] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d276] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d277] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d278] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d279] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d27] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d281] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d282] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d284] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d285] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d287] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d288] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d289] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d290] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d291] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d293] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d294] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d296] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d297] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d299] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d29] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d2] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d300] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d301] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d302] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d303] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d305] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d306] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d308] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d309] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d30] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d311] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d312] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d313] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d314] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d315] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d317] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d318] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d320] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d321] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d323] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d324] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d325] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d326] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d327] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d329] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d32] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d330] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d332] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d333] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d335] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d336] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d337] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d338] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d339] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d33] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d341] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d342] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d344] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d345] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d347] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d348] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d349] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d350] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d35] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d36] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d37] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d38] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d399] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d39] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d3] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d401] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d402] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d404] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d405] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d407] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d408] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d409] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d410] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d411] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d413] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d414] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d416] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d417] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d419] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d41] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d420] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d421] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d422] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d423] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d425] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d42] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d44] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d45] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d47] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d48] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d49] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d50] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d51] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d53] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d54] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d56] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d57] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d59] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d5] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d60] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d61] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d62] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d6] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d8] -stTimeConsuming/test_sstore_combinations_initial01_paris.py::test_sstore_combinations_initial01_paris[fork_Amsterdam-d9] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d0] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d100] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d101] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d102] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d103] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d105] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d106] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d108] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d109] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d10] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d111] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d112] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d113] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d114] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d115] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d117] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d118] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d120] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d121] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d123] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d124] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d125] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d126] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d127] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d129] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d12] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d130] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d132] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d133] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d135] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d136] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d137] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d138] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d139] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d13] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d141] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d142] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d144] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d145] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d147] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d148] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d149] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d150] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d151] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d153] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d154] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d156] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d157] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d159] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d15] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d160] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d161] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d162] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d163] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d165] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d166] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d168] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d169] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d16] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d171] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d172] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d173] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d174] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d175] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d177] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d178] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d17] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d180] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d181] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d183] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d184] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d185] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d186] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d187] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d189] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d18] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d190] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d192] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d193] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d195] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d196] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d197] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d198] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d19] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d1] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d21] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d22] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d247] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d249] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d24] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d250] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d252] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d253] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d255] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d256] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d257] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d258] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d259] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d25] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d261] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d262] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d264] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d265] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d267] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d268] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d269] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d270] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d271] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d273] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d274] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d276] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d277] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d279] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d27] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d280] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d281] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d282] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d283] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d285] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d286] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d288] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d289] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d28] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d291] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d292] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d293] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d294] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d295] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d297] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d298] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d29] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d300] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d301] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d303] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d304] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d305] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d306] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d307] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d309] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d30] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d310] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d312] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d313] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d315] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d316] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d317] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d318] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d319] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d31] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d321] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d322] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d324] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d325] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d327] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d328] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d329] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d330] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d331] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d333] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d334] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d336] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d337] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d339] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d33] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d340] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d341] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d342] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d34] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d36] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d37] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d391] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d393] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d394] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d396] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d397] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d399] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d39] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d3] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d400] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d401] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d402] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d403] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d405] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d406] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d408] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d409] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d40] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d411] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d412] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d413] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d414] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d415] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d417] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d418] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d41] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d420] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d421] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d423] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d42] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d43] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d45] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d46] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d48] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d49] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d4] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d51] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d52] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d53] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d54] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d55] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d57] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d58] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d5] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d60] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d61] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d63] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d64] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d65] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d66] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d67] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d69] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d6] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d70] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d72] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d73] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d75] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d76] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d77] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d78] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d79] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d7] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d81] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d82] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d84] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d85] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d87] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d88] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d89] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d90] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d91] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d93] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d94] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d96] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d97] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d99] -stTimeConsuming/test_sstore_combinations_initial10_2_paris.py::test_sstore_combinations_initial10_2_paris[fork_Amsterdam-d9] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d0] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d100] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d102] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d103] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d105] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d106] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d107] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d108] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d109] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d10] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d111] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d112] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d114] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d115] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d117] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d118] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d119] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d11] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d120] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d121] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d123] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d124] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d126] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d127] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d129] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d12] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d130] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d131] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d132] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d133] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d135] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d136] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d138] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d139] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d13] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d141] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d142] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d143] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d144] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d145] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d147] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d148] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d150] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d151] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d153] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d154] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d155] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d156] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d157] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d159] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d15] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d160] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d162] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d163] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d165] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d166] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d167] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d168] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d169] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d16] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d171] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d172] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d174] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d175] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d177] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d178] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d179] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d180] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d181] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d183] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d184] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d186] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d187] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d189] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d18] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d190] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d191] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d192] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d19] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d1] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d21] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d22] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d23] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d241] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d243] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d244] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d246] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d247] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d249] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d24] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d250] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d251] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d252] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d253] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d255] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d256] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d258] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d259] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d25] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d261] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d262] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d263] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d264] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d265] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d267] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d268] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d270] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d271] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d273] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d274] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d275] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d276] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d277] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d279] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d27] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d280] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d282] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d283] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d285] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d286] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d287] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d288] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d289] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d28] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d291] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d292] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d294] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d295] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d297] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d298] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d299] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d300] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d301] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d303] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d304] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d306] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d307] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d309] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d30] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d310] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d311] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d312] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d313] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d315] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d316] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d318] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d319] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d31] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d321] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d322] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d323] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d324] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d325] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d327] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d328] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d330] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d331] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d333] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d334] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d335] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d336] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d33] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d34] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d35] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d36] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d37] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d385] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d387] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d388] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d390] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d391] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d393] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d394] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d395] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d396] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d397] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d399] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d39] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d3] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d400] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d402] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d403] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d405] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d406] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d407] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d408] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d409] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d40] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d411] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d412] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d414] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d415] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d417] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d418] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d419] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d420] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d421] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d423] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d424] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d42] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d43] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d45] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d46] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d47] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d48] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d4] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d6] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d7] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d97] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d99] -stTimeConsuming/test_sstore_combinations_initial10_paris.py::test_sstore_combinations_initial10_paris[fork_Amsterdam-d9] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d0] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d117] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d119] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d11] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d120] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d122] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d123] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d125] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d126] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d127] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d128] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d129] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d12] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d131] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d132] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d134] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d135] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d137] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d138] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d139] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d140] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d141] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d143] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d144] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d146] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d147] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d149] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d14] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d150] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d151] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d152] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d153] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d155] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d156] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d158] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d159] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d15] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d161] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d162] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d163] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d164] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d165] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d167] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d168] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d170] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d171] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d173] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d174] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d175] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d176] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d177] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d179] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d17] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d180] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d182] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d183] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d185] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d186] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d187] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d188] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d189] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d18] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d191] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d192] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d194] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d195] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d197] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d198] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d199] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d19] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d200] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d201] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d203] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d204] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d206] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d207] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d209] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d20] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d210] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d211] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d212] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d21] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d23] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d24] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d261] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d263] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d264] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d266] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d267] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d269] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d26] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d270] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d271] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d272] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d273] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d275] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d276] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d278] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d279] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d27] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d281] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d282] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d283] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d284] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d285] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d287] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d288] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d290] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d291] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d293] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d294] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d295] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d296] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d297] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d299] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d29] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d2] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d300] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d302] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d303] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d305] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d306] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d307] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d308] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d309] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d30] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d311] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d312] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d314] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d315] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d317] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d318] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d319] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d31] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d320] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d321] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d323] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d324] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d326] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d327] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d329] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d32] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d330] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d331] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d332] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d333] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d335] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d336] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d338] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d339] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d33] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d341] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d342] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d343] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d344] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d345] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d347] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d348] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d350] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d351] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d353] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d354] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d355] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d356] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d357] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d359] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d35] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d360] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d362] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d363] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d365] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d366] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d367] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d368] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d369] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d36] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d371] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d372] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d374] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d375] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d377] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d378] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d379] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d380] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d381] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d383] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d384] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d386] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d387] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d389] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d38] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d390] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d391] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d392] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d393] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d395] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d396] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d398] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d399] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d39] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d3] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d401] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d402] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d403] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d404] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d405] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d407] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d408] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d410] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d411] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d413] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d414] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d415] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d416] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d417] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d419] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d41] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d420] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d422] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d423] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d425] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d426] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d427] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d428] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d429] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d42] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d431] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d432] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d434] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d435] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d437] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d438] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d439] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d43] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d440] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d441] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d443] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d444] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d446] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d447] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d449] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d44] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d450] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d451] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d452] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d45] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d47] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d48] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d50] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d51] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d53] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d54] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d55] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d56] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d57] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d59] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d5] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d60] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d62] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d63] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d65] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d66] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d67] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d68] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d6] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d7] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d8] -stTimeConsuming/test_sstore_combinations_initial11_2_paris.py::test_sstore_combinations_initial11_2_paris[fork_Amsterdam-d9] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d0] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d111] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d113] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d114] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d116] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d117] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d119] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d11] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d120] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d121] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d122] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d123] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d125] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d126] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d128] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d129] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d12] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d131] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d132] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d133] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d134] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d135] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d137] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d138] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d13] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d140] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d141] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d143] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d144] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d145] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d146] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d147] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d149] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d14] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d150] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d152] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d153] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d155] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d156] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d157] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d158] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d159] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d15] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d161] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d162] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d164] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d165] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d167] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d168] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d169] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d170] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d171] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d173] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d174] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d176] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d177] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d179] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d17] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d180] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d181] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d182] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d183] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d185] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d186] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d188] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d189] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d18] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d191] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d192] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d193] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d194] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d195] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d197] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d198] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d1] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d200] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d201] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d203] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d204] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d205] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d206] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d207] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d209] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d20] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d210] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d212] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d213] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d215] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d216] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d217] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d218] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d219] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d21] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d221] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d222] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d224] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d225] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d227] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d228] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d229] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d230] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d231] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d233] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d234] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d236] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d237] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d239] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d23] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d240] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d241] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d242] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d243] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d245] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d246] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d248] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d249] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d24] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d251] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d252] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d253] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d254] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d255] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d257] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d258] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d25] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d260] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d261] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d263] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d264] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d265] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d266] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d267] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d269] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d26] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d270] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d272] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d273] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d275] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d276] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d277] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d278] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d279] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d27] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d281] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d282] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d284] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d285] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d287] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d288] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d289] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d290] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d291] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d293] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d294] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d296] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d297] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d299] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d29] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d2] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d300] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d301] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d302] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d303] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d305] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d306] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d308] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d309] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d30] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d311] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d312] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d313] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d314] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d315] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d317] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d318] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d320] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d321] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d323] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d324] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d325] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d326] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d327] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d329] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d32] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d330] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d332] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d333] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d335] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d336] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d337] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d338] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d339] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d33] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d341] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d342] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d344] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d345] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d347] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d348] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d349] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d350] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d35] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d36] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d37] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d38] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d399] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d39] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d3] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d401] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d402] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d404] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d405] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d407] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d408] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d409] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d410] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d411] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d413] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d414] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d416] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d417] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d419] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d41] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d420] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d421] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d422] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d423] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d425] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d42] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d44] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d45] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d47] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d48] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d49] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d50] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d51] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d53] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d54] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d56] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d57] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d59] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d5] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d60] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d61] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d62] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d6] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d8] -stTimeConsuming/test_sstore_combinations_initial11_paris.py::test_sstore_combinations_initial11_paris[fork_Amsterdam-d9] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d0] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d100] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d101] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d102] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d103] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d105] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d106] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d108] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d109] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d10] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d111] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d112] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d113] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d114] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d115] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d117] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d118] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d120] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d121] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d123] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d124] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d125] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d126] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d127] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d129] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d12] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d130] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d132] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d133] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d135] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d136] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d137] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d138] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d139] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d13] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d141] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d142] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d144] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d145] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d147] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d148] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d149] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d150] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d151] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d153] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d154] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d156] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d157] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d159] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d15] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d160] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d161] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d162] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d163] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d165] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d166] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d168] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d169] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d16] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d171] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d172] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d173] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d174] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d175] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d177] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d178] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d17] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d180] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d181] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d183] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d184] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d185] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d186] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d187] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d189] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d18] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d190] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d192] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d193] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d195] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d196] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d197] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d198] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d19] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d1] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d21] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d22] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d247] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d249] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d24] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d250] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d252] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d253] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d255] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d256] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d257] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d258] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d259] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d25] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d261] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d262] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d264] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d265] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d267] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d268] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d269] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d270] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d271] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d273] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d274] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d276] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d277] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d279] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d27] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d280] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d281] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d282] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d283] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d285] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d286] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d288] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d289] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d28] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d291] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d292] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d293] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d294] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d295] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d297] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d298] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d29] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d300] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d301] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d303] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d304] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d305] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d306] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d307] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d309] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d30] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d310] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d312] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d313] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d315] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d316] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d317] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d318] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d319] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d31] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d321] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d322] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d324] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d325] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d327] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d328] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d329] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d330] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d331] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d333] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d334] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d336] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d337] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d339] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d33] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d340] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d341] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d342] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d34] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d36] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d37] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d391] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d393] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d394] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d396] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d397] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d399] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d39] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d3] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d400] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d401] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d402] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d403] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d405] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d406] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d408] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d409] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d40] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d411] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d412] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d413] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d414] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d415] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d417] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d418] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d41] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d420] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d421] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d423] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d42] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d43] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d45] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d46] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d48] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d49] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d4] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d51] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d52] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d53] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d54] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d55] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d57] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d58] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d5] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d60] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d61] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d63] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d64] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d65] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d66] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d67] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d69] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d6] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d70] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d72] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d73] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d75] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d76] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d77] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d78] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d79] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d7] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d81] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d82] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d84] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d85] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d87] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d88] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d89] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d90] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d91] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d93] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d94] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d96] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d97] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d99] -stTimeConsuming/test_sstore_combinations_initial20_2_paris.py::test_sstore_combinations_initial20_2_paris[fork_Amsterdam-d9] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d0] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d100] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d102] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d103] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d105] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d106] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d107] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d108] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d109] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d10] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d111] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d112] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d114] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d115] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d117] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d118] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d119] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d11] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d120] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d121] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d123] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d124] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d126] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d127] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d129] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d12] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d130] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d131] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d132] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d133] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d135] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d136] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d138] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d139] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d13] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d141] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d142] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d143] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d144] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d145] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d147] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d148] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d150] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d151] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d153] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d154] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d155] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d156] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d157] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d159] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d15] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d160] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d162] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d163] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d165] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d166] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d167] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d168] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d169] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d16] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d171] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d172] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d174] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d175] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d177] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d178] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d179] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d180] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d181] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d183] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d184] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d186] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d187] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d189] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d18] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d190] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d191] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d192] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d19] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d1] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d21] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d22] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d23] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d241] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d243] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d244] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d246] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d247] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d249] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d24] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d250] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d251] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d252] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d253] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d255] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d256] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d258] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d259] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d25] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d261] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d262] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d263] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d264] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d265] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d267] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d268] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d270] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d271] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d273] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d274] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d275] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d276] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d277] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d279] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d27] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d280] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d282] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d283] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d285] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d286] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d287] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d288] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d289] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d28] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d291] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d292] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d294] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d295] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d297] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d298] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d299] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d300] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d301] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d303] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d304] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d306] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d307] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d309] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d30] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d310] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d311] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d312] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d313] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d315] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d316] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d318] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d319] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d31] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d321] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d322] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d323] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d324] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d325] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d327] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d328] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d330] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d331] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d333] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d334] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d335] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d336] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d33] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d34] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d35] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d36] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d37] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d385] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d387] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d388] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d390] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d391] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d393] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d394] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d395] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d396] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d397] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d399] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d39] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d3] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d400] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d402] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d403] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d405] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d406] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d407] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d408] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d409] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d40] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d411] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d412] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d414] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d415] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d417] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d418] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d419] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d420] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d421] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d423] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d424] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d42] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d43] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d45] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d46] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d47] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d48] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d4] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d6] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d7] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d97] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d99] -stTimeConsuming/test_sstore_combinations_initial20_paris.py::test_sstore_combinations_initial20_paris[fork_Amsterdam-d9] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d0] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d117] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d119] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d11] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d120] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d122] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d123] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d125] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d126] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d127] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d128] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d129] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d12] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d131] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d132] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d134] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d135] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d137] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d138] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d139] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d140] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d141] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d143] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d144] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d146] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d147] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d149] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d14] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d150] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d151] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d152] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d153] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d155] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d156] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d158] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d159] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d15] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d161] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d162] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d163] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d164] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d165] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d167] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d168] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d170] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d171] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d173] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d174] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d175] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d176] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d177] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d179] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d17] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d180] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d182] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d183] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d185] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d186] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d187] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d188] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d189] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d18] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d191] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d192] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d194] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d195] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d197] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d198] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d199] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d19] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d200] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d201] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d203] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d204] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d206] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d207] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d209] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d20] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d210] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d211] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d212] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d21] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d23] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d24] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d261] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d263] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d264] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d266] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d267] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d269] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d26] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d270] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d271] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d272] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d273] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d275] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d276] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d278] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d279] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d27] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d281] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d282] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d283] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d284] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d285] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d287] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d288] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d290] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d291] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d293] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d294] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d295] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d296] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d297] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d299] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d29] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d2] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d300] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d302] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d303] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d305] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d306] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d307] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d308] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d309] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d30] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d311] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d312] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d314] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d315] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d317] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d318] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d319] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d31] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d320] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d321] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d323] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d324] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d326] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d327] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d329] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d32] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d330] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d331] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d332] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d333] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d335] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d336] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d338] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d339] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d33] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d341] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d342] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d343] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d344] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d345] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d347] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d348] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d350] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d351] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d353] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d354] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d355] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d356] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d357] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d359] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d35] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d360] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d362] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d363] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d365] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d366] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d367] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d368] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d369] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d36] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d371] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d372] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d374] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d375] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d377] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d378] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d379] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d380] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d381] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d383] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d384] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d386] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d387] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d389] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d38] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d390] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d391] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d392] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d393] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d395] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d396] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d398] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d399] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d39] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d3] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d401] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d402] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d403] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d404] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d405] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d407] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d408] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d410] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d411] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d413] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d414] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d415] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d416] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d417] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d419] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d41] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d420] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d422] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d423] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d425] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d426] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d427] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d428] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d429] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d42] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d431] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d432] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d434] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d435] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d437] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d438] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d439] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d43] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d440] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d441] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d443] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d444] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d446] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d447] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d449] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d44] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d450] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d451] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d452] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d45] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d47] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d48] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d50] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d51] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d53] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d54] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d55] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d56] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d57] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d59] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d5] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d60] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d62] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d63] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d65] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d66] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d67] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d68] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d6] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d7] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d8] -stTimeConsuming/test_sstore_combinations_initial21_2_paris.py::test_sstore_combinations_initial21_2_paris[fork_Amsterdam-d9] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d0] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d111] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d113] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d114] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d116] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d117] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d119] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d11] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d120] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d121] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d122] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d123] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d125] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d126] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d128] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d129] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d12] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d131] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d132] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d133] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d134] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d135] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d137] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d138] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d13] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d140] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d141] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d143] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d144] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d145] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d146] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d147] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d149] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d14] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d150] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d152] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d153] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d155] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d156] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d157] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d158] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d159] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d15] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d161] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d162] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d164] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d165] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d167] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d168] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d169] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d170] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d171] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d173] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d174] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d176] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d177] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d179] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d17] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d180] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d181] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d182] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d183] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d185] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d186] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d188] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d189] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d18] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d191] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d192] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d193] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d194] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d195] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d197] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d198] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d1] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d200] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d201] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d203] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d204] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d205] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d206] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d207] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d209] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d20] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d210] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d212] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d213] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d215] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d216] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d217] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d218] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d219] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d21] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d221] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d222] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d224] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d225] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d227] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d228] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d229] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d230] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d231] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d233] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d234] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d236] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d237] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d239] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d23] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d240] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d241] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d242] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d243] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d245] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d246] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d248] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d249] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d24] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d251] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d252] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d253] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d254] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d255] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d257] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d258] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d25] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d260] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d261] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d263] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d264] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d265] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d266] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d267] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d269] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d26] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d270] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d272] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d273] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d275] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d276] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d277] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d278] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d279] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d27] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d281] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d282] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d284] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d285] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d287] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d288] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d289] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d290] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d291] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d293] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d294] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d296] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d297] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d299] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d29] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d2] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d300] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d301] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d302] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d303] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d305] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d306] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d308] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d309] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d30] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d311] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d312] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d313] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d314] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d315] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d317] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d318] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d320] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d321] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d323] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d324] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d325] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d326] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d327] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d329] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d32] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d330] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d332] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d333] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d335] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d336] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d337] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d338] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d339] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d33] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d341] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d342] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d344] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d345] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d347] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d348] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d349] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d350] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d35] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d36] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d37] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d38] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d399] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d39] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d3] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d401] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d402] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d404] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d405] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d407] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d408] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d409] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d410] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d411] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d413] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d414] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d416] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d417] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d419] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d41] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d420] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d421] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d422] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d423] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d425] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d42] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d44] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d45] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d47] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d48] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d49] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d50] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d51] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d53] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d54] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d56] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d57] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d59] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d5] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d60] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d61] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d62] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d6] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d8] -stTimeConsuming/test_sstore_combinations_initial21_paris.py::test_sstore_combinations_initial21_paris[fork_Amsterdam-d9] - # stTransactionTest (3) stTransactionTest/test_internal_call_hitting_gas_limit_success.py::test_internal_call_hitting_gas_limit_success[fork_Amsterdam] stTransactionTest/test_store_gas_on_create.py::test_store_gas_on_create[fork_Amsterdam] @@ -5529,7 +511,7 @@ stWalletTest/test_wallet_construction.py::test_wallet_construction[fork_Amsterda stWalletTest/test_wallet_construction_oog.py::test_wallet_construction_oog[fork_Amsterdam--g1] stWalletTest/test_wallet_construction_partial.py::test_wallet_construction_partial[fork_Amsterdam] -# stZeroKnowledge (19) +# stZeroKnowledge (20) stZeroKnowledge/test_point_mul_add.py::test_point_mul_add[fork_Amsterdam-d2-g3] stZeroKnowledge/test_point_mul_add.py::test_point_mul_add[fork_Amsterdam-d7-g3] stZeroKnowledge/test_point_mul_add.py::test_point_mul_add[fork_Amsterdam-d8-g3] From 9cc5760224d782f4a6419313ade2bce8d2dfeb4a Mon Sep 17 00:00:00 2001 From: danceratopz Date: Wed, 29 Apr 2026 01:13:34 +0200 Subject: [PATCH 3/5] fix(tests): correct stQuadraticComplexityTest post-state expectations MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Three of these tests embed the runtime caller address directly in their target contract's bytecode. The expected post hashed in a literal hex string of the bytecode that hardcoded the pre-dynamic EOA address (e.g. \`0xd9b97c712eb…\`), so once \`pre.fund_eoa()\` started picking addresses dynamically the deployed code no longer matched the expected hex. Hoist the bytecode into a \`target_code\` variable used both at deploy time and as the expected \`code\`, so the address baked in via \`Op.CALL(address=addr, …)\` is whatever \`addr\` resolves to at fill time: - \`test_call50000\` - \`test_callcode50000\` - \`test_call20_kbytes_contract50_2\` \`test_quadratic_complexity_solidity_call_data_copy\` had a different drift: its post asserted empty storage on \`contract_0\`, but the success path (\`g=1\`, 250M gas) commits \`SSTORE(0, 50000)\` before entering the loop. Make the expected storage \`g\`-conditional so \`g=0\` (OOG) keeps an empty \`storage\` and \`g=1\` records slot 0. --- .../test_call20_kbytes_contract50_2.py | 13 +++++++------ .../stQuadraticComplexityTest/test_call50000.py | 17 ++++++++--------- .../test_callcode50000.py | 17 ++++++++--------- ...dratic_complexity_solidity_call_data_copy.py | 7 ++++++- 4 files changed, 29 insertions(+), 25 deletions(-) diff --git a/tests/ported_static/stQuadraticComplexityTest/test_call20_kbytes_contract50_2.py b/tests/ported_static/stQuadraticComplexityTest/test_call20_kbytes_contract50_2.py index e064cb3e94e..b7c4f25ce79 100644 --- a/tests/ported_static/stQuadraticComplexityTest/test_call20_kbytes_contract50_2.py +++ b/tests/ported_static/stQuadraticComplexityTest/test_call20_kbytes_contract50_2.py @@ -84,8 +84,8 @@ def test_call20_kbytes_contract50_2( ) # Source: lll # { (def 'i 0x80) (for {} (< @i 50) [i](+ @i 1) [[ 0 ]] (CALL 88250000000 0 0 0 0 0) ) [[ 1 ]] @i } # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.JUMPDEST + target_code = ( + Op.JUMPDEST + Op.JUMPI( pc=0x40, condition=Op.ISZERO(Op.LT(Op.MLOAD(offset=0x80), 0x32)) ) @@ -105,7 +105,10 @@ def test_call20_kbytes_contract50_2( + Op.JUMP(pc=0x0) + Op.JUMPDEST + Op.SSTORE(key=0x1, value=Op.MLOAD(offset=0x80)) - + Op.STOP, + + Op.STOP + ) + target = pre.deploy_contract( # noqa: F841 + code=target_code, balance=0xFFFFFFFFFFFFF, nonce=0, ) @@ -128,9 +131,7 @@ def test_call20_kbytes_contract50_2( addr: Account(storage={}, nonce=0), target: Account( storage={}, - code=bytes.fromhex( - "5b603260805110156040576000600060006000600073e7ebafa0fea97a99a72b7f0996c07477e54df0c264148c1c2280f16000556001608051016080526000565b60805160015500" # noqa: E501 - ), + code=bytes(target_code), nonce=0, ), }, diff --git a/tests/ported_static/stQuadraticComplexityTest/test_call50000.py b/tests/ported_static/stQuadraticComplexityTest/test_call50000.py index 09054e27c25..34d5b1c2617 100644 --- a/tests/ported_static/stQuadraticComplexityTest/test_call50000.py +++ b/tests/ported_static/stQuadraticComplexityTest/test_call50000.py @@ -73,8 +73,8 @@ def test_call50000( addr = pre.fund_eoa(amount=7000) # noqa: F841 # Source: lll # { (def 'i 0x80) (for {} (< @i 50000) [i](+ @i 1) [[ 0 ]] (CALL 1600 1 0 50000 0 0) ) [[ 1 ]] @i} # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.JUMPDEST + target_code = ( + Op.JUMPDEST + Op.JUMPI( pc=0x3F, condition=Op.ISZERO(Op.LT(Op.MLOAD(offset=0x80), 0xC350)) ) @@ -94,7 +94,10 @@ def test_call50000( + Op.JUMP(pc=0x0) + Op.JUMPDEST + Op.SSTORE(key=0x1, value=Op.MLOAD(offset=0x80)) - + Op.STOP, + + Op.STOP + ) + target = pre.deploy_contract( # noqa: F841 + code=target_code, balance=0xFFFFFFFFFFFFF, nonce=0, ) @@ -108,9 +111,7 @@ def test_call50000( addr: Account(storage={}, code=b"", nonce=0), target: Account( storage={}, - code=bytes.fromhex( - "5b61c3506080511015603f576000600061c3506000600173d9b97c712ebce43f3c19179bbef44b550f9e8bc0610640f16000556001608051016080526000565b60805160015500" # noqa: E501 - ), + code=bytes(target_code), nonce=0, ), }, @@ -123,9 +124,7 @@ def test_call50000( addr: Account(storage={}, code=b"", nonce=0), target: Account( storage={}, - code=bytes.fromhex( - "5b61c3506080511015603f576000600061c3506000600173d9b97c712ebce43f3c19179bbef44b550f9e8bc0610640f16000556001608051016080526000565b60805160015500" # noqa: E501 - ), + code=bytes(target_code), nonce=0, ), }, diff --git a/tests/ported_static/stQuadraticComplexityTest/test_callcode50000.py b/tests/ported_static/stQuadraticComplexityTest/test_callcode50000.py index 6d2ec3e0d83..972d172e6e7 100644 --- a/tests/ported_static/stQuadraticComplexityTest/test_callcode50000.py +++ b/tests/ported_static/stQuadraticComplexityTest/test_callcode50000.py @@ -73,8 +73,8 @@ def test_callcode50000( addr = pre.fund_eoa(amount=7000) # noqa: F841 # Source: lll # { (def 'i 0x80) (for {} (< @i 50000) [i](+ @i 1) [[ 0 ]] (CALLCODE 1600 1 0 50000 0 0) ) [[ 1 ]] @i} # noqa: E501 - target = pre.deploy_contract( # noqa: F841 - code=Op.JUMPDEST + target_code = ( + Op.JUMPDEST + Op.JUMPI( pc=0x3F, condition=Op.ISZERO(Op.LT(Op.MLOAD(offset=0x80), 0xC350)) ) @@ -94,7 +94,10 @@ def test_callcode50000( + Op.JUMP(pc=0x0) + Op.JUMPDEST + Op.SSTORE(key=0x1, value=Op.MLOAD(offset=0x80)) - + Op.STOP, + + Op.STOP + ) + target = pre.deploy_contract( # noqa: F841 + code=target_code, balance=0xFFFFFFFFFFFFF, nonce=0, ) @@ -108,9 +111,7 @@ def test_callcode50000( addr: Account(storage={}, code=b"", nonce=0), target: Account( storage={}, - code=bytes.fromhex( - "5b61c3506080511015603f576000600061c3506000600173d9b97c712ebce43f3c19179bbef44b550f9e8bc0610640f26000556001608051016080526000565b60805160015500" # noqa: E501 - ), + code=bytes(target_code), nonce=0, ), }, @@ -123,9 +124,7 @@ def test_callcode50000( addr: Account(storage={}, code=b"", nonce=0), target: Account( storage={}, - code=bytes.fromhex( - "5b61c3506080511015603f576000600061c3506000600173d9b97c712ebce43f3c19179bbef44b550f9e8bc0610640f26000556001608051016080526000565b60805160015500" # noqa: E501 - ), + code=bytes(target_code), nonce=0, ), }, diff --git a/tests/ported_static/stQuadraticComplexityTest/test_quadratic_complexity_solidity_call_data_copy.py b/tests/ported_static/stQuadraticComplexityTest/test_quadratic_complexity_solidity_call_data_copy.py index c79f7f2d2cf..c9ffe096cbf 100644 --- a/tests/ported_static/stQuadraticComplexityTest/test_quadratic_complexity_solidity_call_data_copy.py +++ b/tests/ported_static/stQuadraticComplexityTest/test_quadratic_complexity_solidity_call_data_copy.py @@ -152,9 +152,14 @@ def test_quadratic_complexity_solidity_call_data_copy( value=tx_value[v], ) + # With `g=1` the tx completes the inner CALL loop and the + # leading `SSTORE(0, 50000)` (the loop-counter snapshot taken + # before entering the loop body) commits. With `g=0` the tx + # OOGs and rolls everything back, leaving storage empty. + contract_0_storage = {0: 0xC350} if g == 1 else {} post = { contract_0: Account( - storage={}, + storage=contract_0_storage, code=bytes.fromhex( "60003560e060020a9004806361a4770614601557005b601e6004356024565b60006000f35b60008160008190555073b94f5374fce5edbc8e2a8697c15331677e6ebf0b90505b600082131560bf5780600160a060020a03166000600060007f6a7573740000000000000000000000000000000000000000000000000000000081526004017f63616c6c000000000000000000000000000000000000000000000000000000008152602001600060008560155a03f150506001820391506045565b505056" # noqa: E501 ), From b496301741bdf172c73b8dfbe2dbc836009ee324 Mon Sep 17 00:00:00 2001 From: danceratopz Date: Thu, 30 Apr 2026 09:31:15 +0200 Subject: [PATCH 4/5] chore(tests): remove unrequired `# noqa: F841` --- .../test_call20_kbytes_contract50_2.py | 4 ++-- .../ported_static/stQuadraticComplexityTest/test_call50000.py | 4 ++-- .../stQuadraticComplexityTest/test_callcode50000.py | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/tests/ported_static/stQuadraticComplexityTest/test_call20_kbytes_contract50_2.py b/tests/ported_static/stQuadraticComplexityTest/test_call20_kbytes_contract50_2.py index b7c4f25ce79..5048ee4e33c 100644 --- a/tests/ported_static/stQuadraticComplexityTest/test_call20_kbytes_contract50_2.py +++ b/tests/ported_static/stQuadraticComplexityTest/test_call20_kbytes_contract50_2.py @@ -74,7 +74,7 @@ def test_call20_kbytes_contract50_2( # Source: raw # 0x60015b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b600101600055 # noqa: E501 - addr = pre.deploy_contract( # noqa: F841 + addr = pre.deploy_contract( code=Op.PUSH1[0x1] + Op.JUMPDEST * 22237 + Op.PUSH1[0x1] @@ -107,7 +107,7 @@ def test_call20_kbytes_contract50_2( + Op.SSTORE(key=0x1, value=Op.MLOAD(offset=0x80)) + Op.STOP ) - target = pre.deploy_contract( # noqa: F841 + target = pre.deploy_contract( code=target_code, balance=0xFFFFFFFFFFFFF, nonce=0, diff --git a/tests/ported_static/stQuadraticComplexityTest/test_call50000.py b/tests/ported_static/stQuadraticComplexityTest/test_call50000.py index 34d5b1c2617..a5531eb7c72 100644 --- a/tests/ported_static/stQuadraticComplexityTest/test_call50000.py +++ b/tests/ported_static/stQuadraticComplexityTest/test_call50000.py @@ -70,7 +70,7 @@ def test_call50000( gas_limit=860000000, ) - addr = pre.fund_eoa(amount=7000) # noqa: F841 + addr = pre.fund_eoa(amount=7000) # Source: lll # { (def 'i 0x80) (for {} (< @i 50000) [i](+ @i 1) [[ 0 ]] (CALL 1600 1 0 50000 0 0) ) [[ 1 ]] @i} # noqa: E501 target_code = ( @@ -96,7 +96,7 @@ def test_call50000( + Op.SSTORE(key=0x1, value=Op.MLOAD(offset=0x80)) + Op.STOP ) - target = pre.deploy_contract( # noqa: F841 + target = pre.deploy_contract( code=target_code, balance=0xFFFFFFFFFFFFF, nonce=0, diff --git a/tests/ported_static/stQuadraticComplexityTest/test_callcode50000.py b/tests/ported_static/stQuadraticComplexityTest/test_callcode50000.py index 972d172e6e7..b86872c110a 100644 --- a/tests/ported_static/stQuadraticComplexityTest/test_callcode50000.py +++ b/tests/ported_static/stQuadraticComplexityTest/test_callcode50000.py @@ -70,7 +70,7 @@ def test_callcode50000( gas_limit=8600000000, ) - addr = pre.fund_eoa(amount=7000) # noqa: F841 + addr = pre.fund_eoa(amount=7000) # Source: lll # { (def 'i 0x80) (for {} (< @i 50000) [i](+ @i 1) [[ 0 ]] (CALLCODE 1600 1 0 50000 0 0) ) [[ 1 ]] @i} # noqa: E501 target_code = ( @@ -96,7 +96,7 @@ def test_callcode50000( + Op.SSTORE(key=0x1, value=Op.MLOAD(offset=0x80)) + Op.STOP ) - target = pre.deploy_contract( # noqa: F841 + target = pre.deploy_contract( code=target_code, balance=0xFFFFFFFFFFFFF, nonce=0, From 1b581e8785b24b83ed542b67772a6e70ad564d83 Mon Sep 17 00:00:00 2001 From: Leo Lara Date: Thu, 30 Apr 2026 18:12:28 +0700 Subject: [PATCH 5/5] chore(ported_static): mark stQuadraticComplexityTest fixes as @manually-enhanced The four post-state corrections cherry-picked from PR #2784 should not be overwritten the next time `tests/ported_static/` is regenerated by `scripts/filler_to_python`. Add the `@manually-enhanced` marker to each docstring so the regenerator skips them. --- .../test_call20_kbytes_contract50_2.py | 3 +++ .../ported_static/stQuadraticComplexityTest/test_call50000.py | 3 +++ .../stQuadraticComplexityTest/test_callcode50000.py | 3 +++ .../test_quadratic_complexity_solidity_call_data_copy.py | 3 +++ 4 files changed, 12 insertions(+) diff --git a/tests/ported_static/stQuadraticComplexityTest/test_call20_kbytes_contract50_2.py b/tests/ported_static/stQuadraticComplexityTest/test_call20_kbytes_contract50_2.py index 5048ee4e33c..00f12488c0a 100644 --- a/tests/ported_static/stQuadraticComplexityTest/test_call20_kbytes_contract50_2.py +++ b/tests/ported_static/stQuadraticComplexityTest/test_call20_kbytes_contract50_2.py @@ -3,6 +3,9 @@ Ported from: state_tests/stQuadraticComplexityTest/Call20KbytesContract50_2Filler.json + +@manually-enhanced: Do not overwrite. Post-state expectations corrected +manually (see PR #2784). """ import pytest diff --git a/tests/ported_static/stQuadraticComplexityTest/test_call50000.py b/tests/ported_static/stQuadraticComplexityTest/test_call50000.py index a5531eb7c72..b250e191052 100644 --- a/tests/ported_static/stQuadraticComplexityTest/test_call50000.py +++ b/tests/ported_static/stQuadraticComplexityTest/test_call50000.py @@ -3,6 +3,9 @@ Ported from: state_tests/stQuadraticComplexityTest/Call50000Filler.json + +@manually-enhanced: Do not overwrite. Post-state expectations corrected +manually (see PR #2784). """ import pytest diff --git a/tests/ported_static/stQuadraticComplexityTest/test_callcode50000.py b/tests/ported_static/stQuadraticComplexityTest/test_callcode50000.py index b86872c110a..ad6b43a3b19 100644 --- a/tests/ported_static/stQuadraticComplexityTest/test_callcode50000.py +++ b/tests/ported_static/stQuadraticComplexityTest/test_callcode50000.py @@ -3,6 +3,9 @@ Ported from: state_tests/stQuadraticComplexityTest/Callcode50000Filler.json + +@manually-enhanced: Do not overwrite. Post-state expectations corrected +manually (see PR #2784). """ import pytest diff --git a/tests/ported_static/stQuadraticComplexityTest/test_quadratic_complexity_solidity_call_data_copy.py b/tests/ported_static/stQuadraticComplexityTest/test_quadratic_complexity_solidity_call_data_copy.py index c9ffe096cbf..d9145437597 100644 --- a/tests/ported_static/stQuadraticComplexityTest/test_quadratic_complexity_solidity_call_data_copy.py +++ b/tests/ported_static/stQuadraticComplexityTest/test_quadratic_complexity_solidity_call_data_copy.py @@ -3,6 +3,9 @@ Ported from: state_tests/stQuadraticComplexityTest/QuadraticComplexitySolidity_CallDataCopyFiller.json + +@manually-enhanced: Do not overwrite. Post-state expectations corrected +manually (see PR #2784). """ import pytest